Описание параметров фазы Detect
Обнаружение уязвимости фазой Detect
Чтобы фаза Detect обнаружила в ответе сервера факт наличия уязвимости, необходимо, чтобы в ответе был найден один из описанных в параметре response
элементов ответа, либо было обнаружено срабатывание одного из описанных в параметре oob
Out-of-Band DNS-маркера (подробнее об out-of-band маркерах см. ниже). Иначе будет считаться, что уязвимости не найдено.
Принцип действия маркеров
Если в фазе Detect в ответе сервера будет обнаружен маркер из какой-либо полезной нагрузки, значит, атака удалась и уязвимость эксплуатируется успешно. Подробная информация о том, как фаза Detect работает с маркерами, находится здесь.
OOB
Параметр oob
проверяет срабатывания Out-Of-Band-маркеров на тестовый запрос.
Обнаружение OOB-маркера в ответе сервера
Если в ответе сервера на запрос будет найден OOB-маркер, то будет считаться, что обнаружена уязвимость в целевом приложении.
Если указать только
oob
, то ожидается срабатывание хотя бы одного Out-of-Band-маркера:- oob
Также можно задать конкретный тип Out-of-Band-маркера, срабатывание которого необходимо проверять.
Должен сработать хотя бы один
DNS_MARKER
:- oob: - dns
Механизм действия атаки Out-of-Band
Механизм действия атаки Out-of-Band (resource load) полностью соответствует её названию: при проведении атаки злоумышленник вынуждает сервер загрузить вредоносный контент из внешнего источника.
Например, при выполнении атаки OOB DNS злоумышленник может встроить доменное имя в тег <img>
следующим образом: <img src=http://vulnerable.example.com>
.
При получении вредоносного запроса сервер разрешит данное имя домена с помощью DNS и обратится к ресурсу, который контролирует злоумышленник.
Response
Этот параметр проверяет наличие необходимых элементов в ответе сервера на тестовый запрос. Если хотя бы один такой элемент найден, то считается, что найдена уязвимость.
В ответе должен содержаться любой маркер:
- response
Проверка HTTP-статусов
В ответе должен содержаться конкретный HTTP-статус:
- response: - status: value
Пример.
- status: 500
— статус должен иметь значение500
;- status: '5\d\d'
— под это регулярное выражение попадают все5хх
статусы.В ответе должен содержаться любой из перечисленных в списке HTTP-статусов:
- response: - status: - value 1 - … - value S
Пример.
HTTP-статус должен иметь одно из следующих значений:
500
,404
, любой из статусов2хх
.- response: - status: - '500' - '404' - '2\d\d'
Проверка HTTP-заголовков
В заголовках ответа должен содержаться любой маркер:
- response: - headers
В заголовках ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - headers: value
Пример.
- Хотя бы один HTTP-заголовок должен содержать строку
qwerty
:
- response: - headers: "qwerty"
- Под это регулярное выражение попадает любой HTTP-заголовок, который имеет число в качестве данных:
- response: - headers: '\d+'
- Хотя бы один HTTP-заголовок должен содержать строку
В конкретных заголовках ответа должны содержаться конкретные данные (
header_#
иheader_#_value
могут быть регулярными выражениями):- response: - headers: - header_1: header_1_value - … - header_N: header_N_value
Пример.
Cookie-заголовок должен содержать данные
uid=123
. Все заголовки, начинающиеся сX-
, не должны содержать данных.- response: - headers: - "Cookie": "uid=123" - 'X-': ""
В конкретных заголовках ответа должны содержаться данные из заданного списка (
header_#
иheader_#_value_#
могут быть регулярными выражениями):- response: - headers: - header_1: - header_1_value_1 - … - header_1_value_K - … - header_N: - header_N_value_1 - … - header_N_value_K
Пример.
Cookie-заголовок должен содержать один из следующих вариантов данных:
test=qwerty
,uid=123
. Все заголовки, начинающиеся сX-
, не должны содержать данных.- response: - headers: - "Cookie": - "uid=123" - "test=qwerty" - 'X-': ""
Также фаза Detect может проверять ответ сервера на предмет отсутствия определенного заголовка. Для этого укажите в качестве значения конкретного заголовка
null
:- response: - headers: - header_X: null
Проверка тела HTTP-ответа
В теле ответа должен содержаться любой маркер:
- response: - body
В теле ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - body: value
Пример.
В теле ответа должен содержаться STR-маркер или строка
demo_string
- response: - body: 'STR_MARKER' - body: 'demo_string'
Проверка HTML-разметки
В HTML-разметке ответа должен содержаться STR-маркер:
- response: - body: - html
В HTML-теге ответа должен содержаться STR-маркер:
- response: - body: - html: - tag
В HTML-теге ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - body: - html: - tag: value
Пример.
В HTML-разметке ответа должен содержаться тег
а
:- response: - body: - html: - tag: 'a'
В HTML-теге ответа должны содержаться какие-либо данные из заданного списка (
value_#
может быть регулярным выражением):- response: - body: - html: - tag: - value_1 - … - value_R
Пример.
В HTML-разметке ответа должен содержаться один из следующих тегов:
а
,img
илиtr
:- response: - body: - html: - tag: - 'a' - 'img' - 'tr'
В HTML-атрибуте ответа должен содержаться STR-маркер:
- response: - body: - html: - attribute
В HTML-атрибуте ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - body: - html: - attribute: value
Пример.
В HTML-атрибуте ответа должна содержаться либо строка
abc
, либо числовой маркер:- response: - body: - html: - attribute: '(abc|CALC_MARKER)'
В HTML-атрибуте ответа должны содержаться какие-либо данные из заданного списка (
value_#
может быть регулярным выражением):- response: - body: - html: - attribute: - value_1 - … - value_F
Пример.
В HTML-разметке ответа должен содержаться один из следующих атрибутов:
src
,id
илиstyle
:- response: - body: - html: - attribute: - 'src' - 'id' - 'style'
В ссылке HREF ответа должен содержаться STR-маркер:
- response: - body: - html: - href
В ссылке HREF ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - body: - html: - href: value
Пример.
Ссылка HREF должна содержать DNS-маркер:
- response: - body: - html: - href: 'DNS_MARKER'
В ссылке HREF ответа должны содержаться какие-либо данные из заданного списка (
value_#
может быть регулярным выражением):- response: - body: - html: - href: - value_1 - … - value_J
Пример.
В ссылке HREF ответа должны содержаться строка
google
либо строкаcloudflare
:- response: - body: - html: - href: - 'google' - 'cloudflare'
В токенах JavaScript из ответа должен содержаться STR-маркер:
- response: - body: - html: - js
В токенах JavaScript из ответа должны содержаться конкретные данные (
value
может быть регулярным выражением):- response: - body: - html: - js: value
Пример.
Токен JavaScript должен содержать значение
wlrm
:- response: - body: - html: - js: 'wlrm'
В токенах JavaScript из ответа должны содержаться какие-либо данные из заданного списка (
value_#
может быть регулярным выражением):- response: - body: - html: - js: - value_1 - … - value_H
Пример.
Токен JavaScript должен содержать значение
wlrm
или значениеtest
:- response: - body: - html: - js: - 'wlrm' - 'test'
results matching ""
No results matching ""
results matching ""
No results matching ""