Фаза Send

Область действия фазы

Фаза является обязательной для работы немодифицирующего расширения (соответствующая секция send должна присутствовать в YAML-файле расширения).

В модифицирующем расширении фаза отсутствует, так как использование фазы Send исключает возможность использования других фаз (за исключением фазы Detect и фазы Collect, которая задается неявно).

Подробную информацию о типах расширений FAST вы можете получить здесь.

Эта фаза позволяет отправить заранее заданный запрос для тестирования целевого приложения на уязвимости. Хост целевого приложения определяется по заголовку Host поступивших базовых запросов.

Секция send имеет следующую структуру:

send:
  - method: <HTTP method>
    url: <URI>
    headers:
    - header 1: value
    ...
    - header N: value
    body: <the request body>
  ...
  - method: <HTTP method>
    ...

Секция включает в себя один или несколько наборов параметров, заданных в виде пар «ключ, значение». Каждый такой набор параметров описывает один HTTP-запрос, который будет отправлен в качестве тестового запроса, и включает в себя следующие элементы:

  • method: HTTP-метод, который будет использоваться в запросе.

    Параметр является обязательным и должен всегда присутствовать в наборе параметров, описывающих запрос.

    Список допустимых значений параметра.
    • GET,
    • POST,
    • PUT,
    • HEAD,
    • OPTIONS,
    • PATCH,
    • COPY,
    • DELETE,
    • LOCK,
    • UNLOCK,
    • MOVE,
    • TRACE.

    Пример.

    method: 'POST'

  • url: строка, содержащая универсальный идентификатор ресурса (URI), к которому будет выполнен запрос.

    Параметр является обязательным и должен всегда присутствовать в наборе параметров, описывающих запрос.

    Пример.

    url: '/en/login.php'

  • headers: массив, содержащий в себе один или более HTTP-заголовков в формате имя заголовка: значение заголовка.

    Если в конструируемом HTTP-запросе не используются заголовки, то этот параметр можно опустить: он не является обязательным.

    Все заголовки, которые отсутствуют в этом массиве и необходимы для корректного формирования запроса (например, Host, Content-Length), FAST добавит в итоговый тестовый запрос самостоятельно.

    Пример.
    headers:
    - 'Accept-Language': 'en-US,en;q=0.9'
    - 'Content-Type': 'application/xml'
    

    Работа с заголовком Host

    Вы можете добавить в запрос необходимый вам заголовок Host, значение которого будет отличаться от значения заголовка Host, который будет извлечен из базового запроса.

    Например, вы можете добавить заголовок Host: demo.com к запросу в секции Send. Если в такую секцию Send поступит базовый запрос с заголовком Host: example.com, то к хосту example.com будет отправлен запрос c заголовком Host: demo.com, например, так:

      curl -k -g -X POST -L -H "Host: demo.com" -H "Content-Type: application/json" "http://example.com/app" --data "{"field":"value"}"
    
  • body: строка, содержащая в себе тело запроса. Вы можете использовать любое тело запроса, которое требуется для ваших задач, при условии, что выполнено корректное экранирование специальных символов, если они встречаются в теле запроса.

    Параметр является обязательным и должен всегда присутствовать в наборе параметров, описывающих запрос.

    Пример.

    body: 'field1=value1&field2=value2

Если в секцию send будет добавлено несколько наборов параметров, описывающих HTTP-запросы (например, N штук), то один поступивший базовый запрос приведет к отсылке N тестовых запросов к целевому приложению, расположенному на хосте, который был указан в базовом запросе.

results matching ""

    No results matching ""