Использование расширений FAST

Подключение расширений

Для использования созданных расширений их необходимо подключить к FAST-ноде.

Это можно сделать одним из двух способов:

  • Поместить расширения в директорию и примонтировать директорию в Docker-контейнер FAST-ноды с помощью опции -v команды docker run:

    $ sudo docker run --name <container name> --env-file=<file with environment variables> -v <directory with extensions>:/opt/custom_extensions -p <target port>:8080 wallarm/fast
    

    Пример:

    Выполните приведенную ниже команду, чтобы запустить FAST-ноду в контейнере Docker со следующими параметрами:

    1. Имя контейнера: fast-node
    2. Файл с переменными среды окружения: /home/user/fast.cfg
    3. Директория с расширениями FAST: /home/user/extensions
    4. Порт, на который публикуется порт 8080 контейнера: 9090.
    $ sudo docker run --name fast-node --env-file=/home/user/fast.cfg -v /home/user/extensions:/opt/custom_extensions -p 9090:8080 wallarm/fast
    
  • Поместить расширения в публичный репозиторий Git и задать в Docker-контейнере FAST-ноды значение переменной среды окружения, указывающее на необходимый репозиторий:

    Для этого выполните следующие действия:

    1. Добавьте переменную GIT_EXTENSIONS в файл, содержащий переменные среды окружения.

      Пример:

      Если ваши расширения находятся в Git-репозитории https://github.com/wallarm/fast-detects, задайте следующую переменную среды окружения:

      GIT_EXTENSIONS=https://github.com/wallarm/fast-detects
      
    2. Запустите Docker-контейнер с FAST-нодой с использованием этого файла с переменными среды окружения:

      $ sudo docker run --name <container name> --env-file=<file with environment variables> -p <target port>:8080 wallarm/fast
      

      Пример:

      Выполните приведенную ниже команду, чтобы запустить FAST-ноду в контейнере Docker со следующими параметрами:

      1. Имя контейнера: fast-node
      2. Файл с переменными среды окружения: /home/user/fast.cfg
      3. Порт, на который публикуется порт 8080 контейнера: 9090.
      $ sudo docker run --name fast-node --env-file=/home/user/fast.cfg -p 9090:8080 wallarm/fast
      

При успешном запуске FAST-нода выведет в консоли сообщение об успешном подключении к облаку Валарм и количестве загруженных расширений:

[info] Node connected to Wallarm Cloud
[info] Loaded 1 custom extensions for fast scanner
[info] Loaded 30 default extensions for fast scanner
[info] Waiting for TestRun to check...

Если в момент загрузки расширения произойдет ошибка, то будет выведена информация о ней. Например, при наличии ошибок в синтаксисе расширения будет выведено подобное сообщение:

[info] Node connected to Wallarm Cloud
[error] Invalid custom extension 'my-extension.yaml': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 3
[info] Loaded 0 custom extensions for fast scanner

Требования к размещению расширений

Расширения во вложенных директориях не будут подключены (например, если расширение помещено в директорию extensions/level-2/). В зависимости от выбранного способа подключения, расширения должны быть размещены либо в корне директории, которая монтируется в Docker-контейнер FAST-ноды, либо в корне Git-репозитория.

Проверка работы расширений

Чтобы проверить работоспособность созданных ранее расширений mod-extension.yaml и non-mod-extension.yaml, выполните следующие действия:

  1. Подключите расширения к FAST-ноде, выполнив приведенные выше инструкции.

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

    Напомним, что подключенное модифицирующее расширение изменяет point POST_JSON_DOC_HASH_email_value в базовом запросе, а для работы немодифицирующего расширения должна быть разрешена обработка point'а URI в базовом запросе.

    Таким образом, чтобы в рамках одного test run'а выполнились оба расширения, политика должна разрешать:

    • обработку POST-параметров;
    • обработку URI.

    Политика тестирования, вкладка «Insertion points»

    Также, так как расширения проверяют целевое приложение на наличие SQLi-уязвимости, можно проверять средствами Валарм другой тип уязвимости, например, RCE. Это позволит четко увидеть, что SQLi-уязвимость обнаруживается именно созданными расширениями, а не встроенными детектами FAST.

    Политика тестирования, вкладка «Attacks to test»

    Итоговая политика будет выглядеть следующим образом:

    X-Wallarm-Test-Policy: type=rce; insertion=include:'POST_.*','URI';
    
  3. Создайте test run на основе созданной политики для вашей FAST-ноды:

    Test run

  4. Дождитесь информационного сообщения в консоли FAST-ноды вида Recording baselines for TestRun#. Это будет означать, что FAST-нода готова к записи базовых запросов:

    [info] Node connected to Wallarm Cloud
    [info] Loaded 2 custom extensions for fast scanner
    [info] Loaded 30 default extensions for fast scanner
    [info] Waiting for TestRun to check...
    [info] Recording baselines for TestRun#N 'DEMO TEST RUN'
    
  5. Создайте и отправьте через FAST-ноду POST-запрос к странице логина OWASP Bricks со случайными параметрами. Пример такого запроса:

    curl --proxy http://<FAST node IP address> \
        --request POST \
        --url http://ojs.example.local/rest/user/login \
        --header 'accept-language: en-US,en;q=0.9' \
        --header 'content-type: application/json' \
        --header 'host: ojs.example.local' \
        --data '{"email":"test@example.com", "password":"12345"}'
    

    Для отправки запроса вы можете использовать curl или другие инструменты.

    Остановка записи базовых запросов

    После отправки запроса рекомендуется остановить процесс записи. Процедура остановки описана здесь.

  6. В консоли FAST-ноды вы сможете наблюдать, как:

    • проводятся тесты на уязвимости средствами Валарм;
    • модифицирующее расширение FAST выполняется для POST-параметров;
    • немодифицирующее расширение FAST выполняется для параметра URI.

      [info] Waiting for TestRun to check...
      [info] Recording baselines for TestRun#N 'DEMO TEST RUN'
      [info] Started new TestRun#N 'DEMO TEST RUN'
      [info] Proxy request POST http://ojs.example.local/rest/user/login
      [info] Running a test set for the baseline #X
      ...
      [info] Running default extension 'rce-dotnet-jackson' tests for the parameter 'POST_value'
      ...
      [info] Running default extension 'spel-oob' tests for the parameter 'POST_JSON_DOC_HASH_email_value'
      [info] Running custom extension 'mod-extension' tests for the parameter 'POST_JSON_DOC_HASH_email_value'
      [info] SQLI vulnerability found at host ojs.example.local ...
      ...
      [info] Running default extension 'spel-oob' tests for the parameter 'URI_value'
      Running custom extension 'non-mod-extension' tests for the parameter 'URI_value'
      [info] SQLI vulnerability found at host ojs.example.local ...
      ...
      [info] Found 2 vulnerabilities, marking the test set for baseline #X as failed
      
      Полный лог работы с запросом вы можете получить, развернув в веб-интерфейсе Валарм test run, кликнув на запрос и перейдя по ссылке «Details»:

    Подробная информация о test run'е

    Полный лог работы с запросом

  7. Также вы можете получить сведения об обнаруженных уязвимостях, кликнув по ссылке с количеством обнаруженных проблем «2 issues». Откроется страница «Vulnerabilities»:

    Уязвимости в веб-интерфейсе Валарм

    Обратите внимание, что для уязвимостей, обнаруженных с помощью расширений FAST, значения столбцов «Risk», «Type» и «Title» будут соответствовать тем значением, которые были заданы в секции meta-info файлов расширений.

  8. Вы можете кликнуть на уязвимость, чтобы получить подробную информацию о ней, включая ее описание (из секции meta-info файла расширения) и пример запроса, эксплуатирующего уязвимость.

    Пример информации об уязвимости, обнаруженной модифицирующим расширением:

    Подробная информация об уязвимости

results matching ""

    No results matching ""

    results matching ""

      No results matching ""