Использование расширений 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 со следующими параметрами:
- Имя контейнера:
fast-node
- Файл с переменными среды окружения:
/home/user/fast.cfg
- Директория с расширениями FAST:
/home/user/extensions
- Порт, на который публикуется порт
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-ноды значение переменной среды окружения, указывающее на необходимый репозиторий:
Для этого выполните следующие действия:
Добавьте переменную
GIT_EXTENSIONS
в файл, содержащий переменные среды окружения.Пример:
Если ваши расширения находятся в Git-репозитории
https://github.com/wallarm/fast-detects
, задайте следующую переменную среды окружения:GIT_EXTENSIONS=https://github.com/wallarm/fast-detects
Запустите Docker-контейнер с FAST-нодой с использованием этого файла с переменными среды окружения:
$ sudo docker run --name <container name> --env-file=<file with environment variables> -p <target port>:8080 wallarm/fast
Пример:
Выполните приведенную ниже команду, чтобы запустить FAST-ноду в контейнере Docker со следующими параметрами:
- Имя контейнера:
fast-node
- Файл с переменными среды окружения:
/home/user/fast.cfg
- Порт, на который публикуется порт
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
, выполните следующие действия:
Подключите расширения к FAST-ноде, выполнив приведенные выше инструкции.
Создайте требуемую политику тестирования. Политика тестирования используется всеми расширениями FAST, которые подключены к FAST-ноде. Подробная информация о действии политики тестирования находится здесь.
Напомним, что подключенное модифицирующее расширение изменяет point
POST_JSON_DOC_HASH_email_value
в базовом запросе, а для работы немодифицирующего расширения должна быть разрешена обработка point'аURI
в базовом запросе.Таким образом, чтобы в рамках одного test run'а выполнились оба расширения, политика должна разрешать:
- обработку POST-параметров;
- обработку URI.
Также, так как расширения проверяют целевое приложение на наличие SQLi-уязвимости, можно проверять средствами Валарм другой тип уязвимости, например, RCE. Это позволит четко увидеть, что SQLi-уязвимость обнаруживается именно созданными расширениями, а не встроенными детектами FAST.
Итоговая политика будет выглядеть следующим образом:
X-Wallarm-Test-Policy: type=rce; insertion=include:'POST_.*','URI';
Создайте test run на основе созданной политики для вашей FAST-ноды:
Дождитесь информационного сообщения в консоли 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'
Создайте и отправьте через 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
или другие инструменты.Остановка записи базовых запросов
После отправки запроса рекомендуется остановить процесс записи. Процедура остановки описана здесь.
В консоли FAST-ноды вы сможете наблюдать, как:
- проводятся тесты на уязвимости средствами Валарм;
- модифицирующее расширение FAST выполняется для POST-параметров;
- немодифицирующее расширение FAST выполняется для параметра URI.
Полный лог работы с запросом вы можете получить, развернув в веб-интерфейсе Валарм test run, кликнув на запрос и перейдя по ссылке «Details»:[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
Также вы можете получить сведения об обнаруженных уязвимостях, кликнув по ссылке с количеством обнаруженных проблем «2 issues». Откроется страница «Vulnerabilities»:
Обратите внимание, что для уязвимостей, обнаруженных с помощью расширений FAST, значения столбцов «Risk», «Type» и «Title» будут соответствовать тем значением, которые были заданы в секции
meta-info
файлов расширений.Вы можете кликнуть на уязвимость, чтобы получить подробную информацию о ней, включая ее описание (из секции
meta-info
файла расширения) и пример запроса, эксплуатирующего уязвимость.Пример информации об уязвимости, обнаруженной модифицирующим расширением:
results matching ""
No results matching ""
results matching ""
No results matching ""