Всем привет,
как правило, у любого проекта сначала появляется код, потом функциональные тесты, и только потом (возможно) проводится тестирование безопасности.
В этой статье я расскажу как вы можете быстро подготовить и провести сессию тестирования безопасности (пока только проверка на SQL инъекции) вашего продукта, используя уже готовый набор ваших функциональных тестов.
В чем преимущества:
- Для такой сессии тестирования вам потребуется только настроить тестовое окружение и запустить все функциональные тесты, после чего можно приступать к сканированию на SQL-инъекции. Это не потребует особой квалификации и больше чем несколько часов для подготовки. Вы можете сделать это прямо сегодня!
- Используем только бесплатные компоненты с открытым исходным кодом.
И так, начнем.
- Скачиваем и распаковываем SQLmap:
- Скачиваем и устанавливаем Burb Proxy:
- Запускаем Burb Suite, он запустит прокси на порту 8080 (по умолчанию, в UI это можно изменить).
В Burb proxy на вкладке Intercept не забываем выключить Intercept, чтобы он не захватывал запросы, а просто логировал их.
- Настраиваем прокси на Linux хосте, откуда будем запускать тесты, для этого вбиваем в bash консоль такие команды:
export HTTP_PROXY=127.0.0.1:8080
export HTTPS_PROXY=127.0.0.1:8080
здесь 127.0.0.1 - адрес Burb Proxy, 8080 - порт, который слушает прокси. Если вы запускаете прокси на одной машинке, а тесты запускате с другой машинки, тогда вам надо изменить эти параметры. В моем примере все компоненты работают на одной и той же машинке.
- Запускаем наши автоматические тесты (у меня тесты написаны на PyTest, но это могут быть так же любые другие тесты, главное - убедитесь, что ваши тесты отправляют запросы через прокси - в Burb UI на вкладке Proxy > HTTP History должны появиться новые записи):
pytest -n 30 tests/lbs
- Переключаемся обратно на Burb UI, переходим на вкладку Target > Site Map, щелкаем правой кнопкой мыши на адрес, куда обращались наши автоматизированные тесты (для каждого тестируемого сервиса здесь будет отдельная строка). В выпадающем меню выбираем пункт 'Save Selected Items' и сохраняем все это в файл test001.txt.
- Переходим в дирректорию с sqlmap и запускаем сканирование:
./sqlmap.py --batch -l test001.txt
Опция --batch заставляем sqlmap сканировать все, что дали, не спрашивая на каждом шаге подтверждение от пользователя, опция -l указывает SQLmap, что надо брать список "целей" из файла с логами от прокси сервера.
Если вы тестируете не production окружение, то лучше запустить так (это увеличит список проверок, которые сделает SQLmap):
./sqlmap.py --batch --level 5 --risk 3 -l test001.txt
- Анализируем всё, что выдаст нам SQLmap, открываем баг трекер и записываем результаты эксперимента ;)
Небольшой совет №1:
Создайте различные сущности в своем сервисе и сделайте тесты, которые будут их читать / изменять, чтобы в список запросов попали запросы работы с существующими в системе ресурсами. Если ваши тесты полностью очищают после себя все ресурсы SQLmap будет сложно найти уязвимости, ведь на многие запросы он получит 400/404 ошибки, просто потому что этих ресурсов и ссылок уже не существует.
Создайте различные сущности в своем сервисе и сделайте тесты, которые будут их читать / изменять, чтобы в список запросов попали запросы работы с существующими в системе ресурсами. Если ваши тесты полностью очищают после себя все ресурсы SQLmap будет сложно найти уязвимости, ведь на многие запросы он получит 400/404 ошибки, просто потому что этих ресурсов и ссылок уже не существует.
Небольшой совет №2:
Почитайте вывод команды
Почитайте вывод команды
./sqlmap.py --hh
Для тех, кто предпочитает делать все через UI - есть возможность установить sqlmap плагин прямо в Burb Proxy (хотя для этого потребуется поставить всякие зависимости, за то красиво):
Комментариев нет:
Отправить комментарий
Я признателен Вам за то, что делитесь своим мнением