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

    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 — как наиболее популярного и эффективного инструмента.


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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 2

      +2
      Время публикации специально подбиралось?)
        +1
        Все запланированные записи в нашем блоге в это время публикуются — дань хакерским традициям)

      Only users with full accounts can post comments. Log in, please.