Типичные уязвимости web приложений
IDOR
Insecure Direct Object Reference - уязвимость относящаяся к типу Broken access control уязвимостей.
Заключается в том, что web сервер или web приложение не проверяют пользовательский ввод на корректность и допустимость введенной информации.
Например просто изменив user_id возможно будет получить доступ к профилю другого пользователя:
К сведению
Следует помнить, что, как правило, сведения передаваемые в запросах не отправляются в открытом виде, а кодируются в base64.
File incusion
Заключается в том, что web сервер или web приложение не проверяют пользовательский ввод на предмет наличия в нём конструкций, позвляющих перемещатся по файловой системе.
В контексте данного типа уязвимостей различают:
- Local File Inclusion (LFI)
- Remote File Inclusion (RFI)
- Directory traversal
LFI
Атаки типа LFI, как и многие другие атаки на web приложения, возникают из-за неверно или недостаточно безопасно сконфигурированными функциями web приложения которые отвечают за чтение данных из файлов.
Примерами таких функций в PHP являются:
include()
, require()
, include_once()
, require_once()
В качестве примера:
Имеется мультиязычное web приложение.
Переключение языков реализовано функцией include()
:
lang
который указывает на php файл с нужным языком:
Если функция include будет вслепую, без проверки выполнять всё, что ей передается, то получить неавторизованный доступ не составит труда:
RFI
Тот же LFI, но с возможностью передачи файла расположенного на удалённом сервере:
Directory traversal
Также известная как Path traversal, представляет из себя LFI в которой передается путь к целевому файлу используя перемещение по Unix FHS:
SSRF
Server-Side Request Forgery - уязвимость позволяющая атакующему заставить web сервер делать запросы к тем ресурсам которые определит атакующий.
Подробно о SSRF уже написано в разделе OWASP/SSRF
XSS
Cross site scripting - уязвимость которая позволяет выполнять произвольный JS код на уязвимых страницах web приложения.
Подробно о XSS уже написано в разделе OWASP/SSRF
Command Injection
Command Injection - уязвимость которая позволяет выполнить произвольный код на web сервере от имени той учётной записи под которой запущен web сервер. Подробно о Command Injection уже написано в разделе OWASP/Injection
SQL Injection
SQL Injection - уязвимость заключающаяся в передаче злонамеренного SQL запроса в БД.
Подробно о SQL Injection уже написано в разделе OWASP/SQLi