Оптимизация и автоматизация тестирования веб-приложений

в 10:37, , рубрики: web penetration testing, Блог компании PentestIT, информационная безопасность, метки:

image

В этой статье я расскажу о том, как оптимизировать и автоматизировать процессы тестирования на проникновение с помощью специализированных утилит и их расширений.

Тестирование на проникновение условно можно разделить на два этапа:

  • автоматизированное тестирование;
  • ручное тестирование.

Плюсы и минусы автоматизированного тестирования

Плюсы:
При автоматизированном тестировании, как правило, значительно экономится время тестирования, можно покрыть большую площадь веб-приложения за меньшее время.

Большое количество проверок. Автоматизированные системы содержат огромное количество паттернов атак, признаков уязвимостей, и, как правило, расширяемы.

Перебор файлов и папок, подбор паролей — тут, я думаю все понятно и так.

Регламентное сканирование и процедуры инвентаризации — для этих целей автоматизированные системы подходят лучше всего.

Минусы:
False positive срабатывания. Очень часто сканеры руководствуясь формальными признаками выявляют уязвимости, которых нет. Классика жанра — при сканировании Single Page Application сканер получает код ответа 200 на все свои запросы и выводит длинный список уязвимостей, которых на самом деле нет.

Они "очень шумные". При сканировании сайта создается очень много событий в журналах веб-сервера, по которым легко определить атаку.

Нагрузка на веб-сервер. Иногда автоматизированное сканирование может дать ощутимую нагрузку на веб-сервер, что может привести к нестабильной работе веб приложения (хотя этот минус относится к конфигурированию веб-сервера).

Блокирование средствами защиты. Как правило, признаки автоматизированных систем хорошо знакомы разработчикам и они учитывают их при проектировании. Как итог — происходит блокировка (по User Agent, маркерам сканера или частоте запросов).

Не учитывают ошибки логики.

Требуют ручной валидации уязвимостей.

Построение эффективных автоматизированных систем, оптимизированных под веб-приложение

Для того, чтобы автоматизированная система была максимально эффективна, она должна обладать следующими возможностями:

  • расширение функционала, в том числе с помощью сторонних модулей;
  • мультиформатность результатов тестирования;
  • импорт/экспорт результатов тестирования;
  • стандартизированные результаты тестирования;
  • возможность сравнения результатов;
  • возможность интеграции системы в более сложную.

Эти факторы позволят построить систему, отвечающую вашим требованиям и целям.

В качестве примера "готовой системы" могу привести описанную мной ранее Sparta. Для того, чтобы тестирование было максимально эффективным, контролируемым, а также для комфортной валидации уязвимостей необходимо учитывать все компоненты системы, архитектуру тестируемого приложения и связность решений.

Прокачиваем утилиты

В качестве оптимальной основы предлагаю остановится на двух кроссплатформенных системах для тестирования веб-приложений (как в ручном, так и в автоматизированном режиме): OWASP ZAP (free версия) и BurpSuite (free + платная версии).

Самое важное отличие этих систем от классических сканнеров — это принцип работы: сканнер "долбит по сайту" напрямую, выявляя те или иные признаки уязвимостей, зачастую пропуская огромные участки веб-приложения. А Zap и Burp работают в качестве проксирующего механизма, позволяющего добавить все области сайта (как встроенным "пауками", так и при ручном серфинге приложения). Также, важной особенностью является возможность "на лету" разбирать каждый запрос.

Огромным плюсом этих приложений является возможность расширения с помощью плагинов/компонентов:

  • магазин приложений (готовые решения);
  • интеграция сторонних модулей (вне магазина приложений);
  • написание собственных (кастомизированных под конкретный проект).

В качестве примера приложения предлагаю рассмотреть уязвимое веб-приложение со следующими характеристиками:

  • известная CMS;
  • поддержка плагинов/компонентов;
  • содержит уязвимости (в том числе OWASP A1 — sql injection);
  • содержит средства защиты.

Исходя из этих данных нам необходимо выбрать и использовать следующие компоненты (минимальный набор).

Owasp ZAP:
Установленные:

Оптимизация и автоматизация тестирования веб-приложений - 2

Необходимо установить:

Оптимизация и автоматизация тестирования веб-приложений - 3

Здесь необходимо выбрать те инструменты, которые помогут выявлять и эксплуатировать уязвимости, обозначенные в списке выше.

Burp Suite:
Честно признаюсь, Burp мне нравится больше чем Owasp Zap, поэтому остановлюсь на нем подробнее.

Нам необходимо выполнить задачу по идентификации CMS и установленных компонентов, выявить устаревшие версии, попытаться обойти WAF и проэксплуатировать SQL-инъекцию.

В первую очередь необходимо придерживаться методологии тестирования веб-приложения. В этом нам поможет представленный на последнем Def Con HUNT Burp Suite Extension:

  • Определяем общие параметры для определенных классов уязвимостей.
  • Организовываем методологию тестирования внутри Burp Suite.

image

Далее нам пригодится плагин (уже добавленный в BApp store плагин от Vulners.com (@isox, avleonov — спасибо за замечательный инструмент).

Оптимизация и автоматизация тестирования веб-приложений - 5

Также, может быть полезен расширенный набор фаззинга для sql-инъекций (которого нет в бесплатной версии — sql и не только.

Далее, ускорить "раскручивание" инъекции нам поможет sql map — для его интеграции необходимо воспользоваться плагином SQLiPy:

Оптимизация и автоматизация тестирования веб-приложений - 6

Нам известно, что веб-приложение защищено WAF — могут пригодится расширения What the WAF и Waf bypass.

Также рекомендую плагин от Владимира Иванова: burp-xss-sql-plugin.

В качестве средства автоматизации можно использовать встроенный сканнер, либо воспользоваться инструментом Burp Automator:

Оптимизация и автоматизация тестирования веб-приложений - 7

Требования:

  • burp-rest-api
  • Burp Suite Professional
  • slackclient

Этот инструмент позволит автоматизировать проверки, использую в качестве основы Burp Suite:

$ python burpa.py -h

###################################################
            __                          
           / /_  __  ___________  ____ _
          / __ / / / / ___/ __ / __ `/
         / /_/ / /_/ / /  / /_/ / /_/ / 
        /_.___/__,_/_/  / .___/__,_/  
                        /_/             
         burpa version 0.1 / by 0x4D31  

###################################################
usage: burpa.py [-h] [-a {scan,proxy-config}] [-pP PROXY_PORT] [-aP API_PORT]
                [-rT {HTML,XML}] [-r {in-scope,all}]
                [--include-scope [INCLUDE_SCOPE [INCLUDE_SCOPE ...]]]
                [--exclude-scope [EXCLUDE_SCOPE [EXCLUDE_SCOPE ...]]]
                proxy_url

positional arguments:
  proxy_url             Burp Proxy URL

optional arguments:
  -h, --help            show this help message and exit
  -a {scan,proxy-config}, --action {scan,proxy-config}
  -pP PROXY_PORT, --proxy-port PROXY_PORT
  -aP API_PORT, --api-port API_PORT
  -rT {HTML,XML}, --report-type {HTML,XML}
  -r {in-scope,all}, --report {in-scope,all}
  --include-scope [INCLUDE_SCOPE [INCLUDE_SCOPE ...]]
  --exclude-scope [EXCLUDE_SCOPE [EXCLUDE_SCOPE ...]]

Как результат вы получите отчет о проведенном сканировании:

Оптимизация и автоматизация тестирования веб-приложений - 8

Заключение

Я намеренно не рассматривал готовые сканеры типа w3af (или платные аналоги), позволяющие проводить такие работы, где использование сводится к существующему функционалу (и установки чекбоксов у опций), а постарался раскрыть интересные плагины и доработки для проксирующей утилиты Burp Suite — как наиболее популярного и эффективного инструмента.

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

Автор: LukaSafonov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js