...

вторник, 8 августа 2017 г.

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

image


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


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


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

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


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


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


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


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


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


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


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


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


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


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


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


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


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

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


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


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


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


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


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


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

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


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

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


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



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



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


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


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


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


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

image


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



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


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



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


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


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



Требования:


  • 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 ...]]

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


Заключение


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


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

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий