Поиск веб-уязвимостей и Burp Suite — это практически синонимы. Однако мощь вашего Burp напрямую зависит от выбора плагинов к нему. В данной статье я собрал подборку лучших расширений Burp Suite, которые лично использую в моей работе, и расскажу о том, какой вклад каждый из них вносит в облегчение и ускорение пентестерской деятельности.
Burp Vulners Scanner
Данный плагин показывает публичные уязвимости для приложений, обнаруженные в трафике, который проксирует Burp. Расширение было написано Иваном Ёлкиным, одним из сооснователей сервиса vulners.com. Представляет собой, по сути, прослойку между Burp и API этого отличного агрегатора уязвимостей.
Работает все предельно просто. Настраиваем прокси-сервер, а затем ходим по сайту или тыкаем в веб-приложение. В это время плагин анализирует трафик, находит в нем маркеры установленного на удаленной машине софта и детектирует версии. Сюда входят веб-серверы (nginx, Apache, Tomcat и так далее), всевозможные CMS (WordPress, Drupal, Joomla и другие) и прочее. Затем обнаруженная информация отправляется в виде запросов к API vulners.com, а нам в красивом окошке выводится список доступных уязвимостей.
В настройках можно изменять существующие или добавлять новые правила для определения и поиска уязвимых приложений.
В целом Vulners Scanner — очень удобная штука. Пока я вручную изучаю цель, сканер на автомате ищет потенциальные уязвимости.
SQLiPy
SQLiPy помогает с автоматизацией SQL-инъекций. Данный плагин также работает с API — тем, что предоставляет популярная утилита SQLMap. Думаю, что каждый, кто когда-либо возился с SQLi, слышал про эту тулзу. Однако не все знают, что она может работать в режиме REST API. Для этого ее нужно запустить таким образом:
python sqlmapapi.py -s -H <ip-адрес> -p <порт>
Хочу обратить ваше внимание, что существует возможность запуска API прямо из интерфейса расширения. Но даже сами разработчики рекомендуют запускать его из командной строки.
Затем во вкладке SQLMap Scanner в настройках плагина нужно указать адрес нашего API. Теперь все, что от вас требуется, — это выбрать подопытный запрос, кликнуть правой кнопкой мыши внутри его тела и выбрать пункт SQLiPy Scan.
Снова откроется вкладка SQLMap Scanner, но уже с заполненными данными по запросу. Тут вы можете указать целую вязанку параметров, которые доступны в утилите SQLMap. После настройки нажимаем Start Scan. Если атака успешна, то ее детали будут видны в панели Issues.
Если же вас интересует более подробная информация о процессе сканирования, то ее можно отыскать на закладке SQLMap Logs. Выбирайте необходимый процесс и жмите кнопку Get.
Как вы уже наверное поняли, плагин поддерживает несколько процессов сканирования. Лично у меня на выделенном сервере тусуется такой вот API, и, не отрываясь от исследования приложения, я периодически отправляю на него подозрительные запросы через SQLiPy.
ActiveScan++
Об этом расширении, я думаю, слышал каждый пользователь Burp Suite. Он написан одним из штатных разработчиков PortSwigger Джеймсом Кеттле (James Kettle), а первый коммит датирован 23 июня 2014 года. Но обновляется плагин и по сей день, что встречается нечасто.
ActiveScan++ расширяет стандартный перечень проверок, которые выполняются при работе активного и пассивного сканера. Он умеет находить такие уязвимости, как cache poisoning, DNS rebinding, различные инъекции в темплейты и экспрешены, а также делает дополнительные проверки для обнаружения XXE-инъекций и выявляет популярные баги типа shellshock, выполнение произвольного кода в Struts2 (CVE-2017-5638) и тому подобные.
Никаких настроек расширение не имеет, оно просто тихонько работает и отправляет сообщения о найденных проблемах в панель Issues.
Кстати, на всякий случай расскажу, что если вам нужно натравить активный сканер только на определенные места в запросе, то запрос нужно добавить в Intruder, расставить § в нужных позициях, и после чего нажать правой кнопкой мыши и выбрать Actively scan defined insertion points.
Backslash Powered Scanner
Еще один тихий плагин, созданный Джеймсом Кеттле. Нужен он, чтобы обнаруживать как известные, так и неизвестные типы уязвимостей. Манипулируя всевозможными параметрами из запроса, расширение пытается выявить нестандартное поведение сервера. Такие аномалии могут помочь при обнаружении как простых уязвимостей типа error-based SQL-инъекций, так и сложных XSS-инъекций с обходом встроенного WAF. Конечно же, расширение не дает полностью готовые решения, но может натолкнуть вас на правильный путь.
В отличие от плагина ActiveScan++ здесь есть некоторое количество настроек. Они расположены в пункте главного меню под названием Backslash, что нехарактерно.
Сканирование также идет в автоматическом режиме при работе активного сканера самого Burp. Если в процессе сканирования что-нибудь будет обнаружено, то результаты добавятся в панель Issues.
За дополнительной информацией о методике тестирования можно обратиться к посту в блоге PortSwigger.
SHELLING
Расширение SHELLING — это отличный инструмент для обнаружения уязвимостей типа RCE. Может использоваться как в автоматическом, так и в ручном режиме. Помимо простых тестов, пытается выполнить обход всевозможных фильтров пользовательских данных.
На момент написания статьи в магазине расширений Burp Suite была старая версия этого плагина. Поэтому скачивайте из репозитория актуальную и устанавливай ручками.
После успешной инсталляции появится новая вкладка под названием SHELLING. Она, в свою очередь, содержит еще пачку табов, в которых расположены многочисленные настройки расширения.
Здесь можно выбрать и тип атакуемой ОС, и пейлоад, который будет использоваться для получения отстука об успешно выполненной команде, переключение режима сканирования и многое-многое другое.
Также возможно выгрузить пейлоады в виде текстового файла и использовать их в Intruder или в любой другой утилите.
Описать все настройки в одной статье — дело проблематичное. Поэтому оставляю вам это на домашнее изучение, благо в официальном репозитории имеется исчерпывающий мануал по всем доступным функциям расширения.
AuthMatrix и Autorize
Два плагина, которые, по сути, делают одно и то же и различаются только возможностями детальной настройки и интерфейсом. Нужны они для того, чтобы проверять корректность логики распределения прав доступа в приложении. На сегодняшний день редко можно встретить какой-нибудь сервис, в котором не используется система различных ролей пользователей. Так вот, частенько бывает, что администраторские разделы доступны и обычным пользователям. Чтобы автоматизировать такие проверки, я использую эти два плагина.
AuthMatrix можно назвать старшим братом Autorize: у него чуть больше опций и немного более гибкая настройка тестирования. Обычно мне хватает AuthMatrix.
Логика работы следующая. Логинимся в систему, например от администратора. Снифаем трафик по ходу того, как бегаем по разным разделам, доступным выбранному юзеру. Потом на вкладке Target или Proxy выбираем необходимые запросы и отправляем их в плагин через соответствующий пункт в контекстном меню.
После этого переходим на вкладку с плагином, где видим наши запросы.
Теперь нужно добавить пользователей. Это можно сделать, если нажать на кнопку New User и ввести имя пользователя. Теперь в таблице Cookies нужно заполнить соответствующие данные для каждого из созданных пользователей. Куки, которые вы здесь укажете, будут добавлены к тем, что находятся в запросе.
В примере я планирую проверить доступность страниц установки и настройки безопасности от админа (пользователь root) и анонима (пользователь guest). Поэтому куки для Guest пусты.
После этого я создал название ролей и поставил галочки для соответствующих пользователей. Почему существует возможность добавлять и роли, и пользователей? Это нужно, чтобы проверять те ситуации, когда определенные функции доступны только конкретному пользователю. Например, два разных юзера в системе должны видеть только свои приватные сообщения.
Теперь надо отметить чекбоксы соответствия: какие пользователи или роли какие запросы могут выполнять. В моем случае оба запроса могут выполнять только админы, что я и указал. После этой настройки остается только нажать на кнопку Run и чуток подождать.
Результаты тестирования отображаются в таблице в виде цветовых индикаторов. Зеленый цвет означает, что поведение нормальное, ответ от сервера был проверен с помощью регулярного выражения, указанного в Response Regex, и он соответствует ожиданию. То есть в ответе для пользователя Root (роль админа) он попадает в regex, а в ответе для пользователя Guest (роль анонима) — нет.
Красный цвет сигнализирует о том, что в этом месте, возможно, существует уязвимость (то есть ответ в обоих случаях соответствует регулярному выражению).
Существует еще и синий цвет, его вы увидите в том случае, когда расширение предполагает, что результат может быть ложноположительным.
Помимо куки, плагин поддерживает кастомные заголовки. Это позволяет покрыть случаи, когда авторизация выполняется при помощи различных токенов, например Bearer. Данный столбец можно добавить при помощи кнопки New Header.
Кроме этого есть возможность задать сложные цепочки действий. Например, если необходимо получать для каждого запроса валидный токен CSRF. Для добавления звена такой цепочки есть кнопка New Chain. Подробнее об этом можно прочитать в официальном репозитории плагина.
Autorize добавляет ко всему этому еще несколько интересных опций. Например, в нем можно автоматически проверять все проходящие через прокси запросы.
Оба расширения могут сохранять текущее состояние и настройки в отдельный файл, а Autorize умеет генерировать отчеты с результатами тестирования.
Страница расширения AuthMatrix на GitHub
Страница расширения Autorize на GitHub
Burp HTTP Mock
HTTPMock может эмулировать произвольные ответы от сервера. Это полезно для тестирования ошибок на стороне фронтенда. С повсеместным засильем SPA, REST API и мобильных приложений это просто штука мастхев.
Чтобы воспользоваться возможностями Mock, надо добавить в него ответ от сервера для эмуляции. Проделать можно это вручную или выбрать существующий ответ из отснифанного трафика (это делается из контекстного меню).
Теперь во вкладке HTTPMock в разделе Mock rules появится ваш ответ. Столбцы Host, Port и File отвечают за адрес, к которому будет эмулироваться ответ из Response editor. Здесь можно писать регулярные выражения, что добавляет гибкости.
Я взял попавшееся под руку приложение для заказа пиццы и перехватил пакет с запросом информации о текущем пользователе. Добавил ответ на него в HTTPMock и изменил параметр count_points, который отвечает за количество бонусных баллов.
Теперь запрос от приложения для получения инфы о юзере будет перехватываться расширением, а измененный ответ предоставлен приложению как легитимный. Результат такой манипуляции можно видеть на скрине ниже.
Разумеется, это лишь один сценарий использования. Таким же образом можно вводить в заблуждение любые клиенты и искать несостыковки в их логике работы.
BypassWAF
Расширение с громким названием BypassWAF, написанное Джошем Берри (Josh Berry), позволяет пользоваться рядом трюков, которые помогут в нелегкой борьбе с навязчивым файрволом. Если этот зверь не дает вам спокойно раскручивать очередную SQL-инъекцию или вовсе режет ваши безобидные запросы, то BypassWAF — ваш выбор.
Среди трюков имеются такие штуки, как подмена популярных заголовков X-Originating-IP, X-Forwarded-For, X-Remote-IP, X-Remote-Addr (бывает, что запросы с локальной машины проходят мимо пристального взора WAF), различные манипуляции с Content-Type (случается, что под фильтрацию не попадают какие-то MIME-типы), разнообразная обфускация отправляемых параметров и все в таком духе. Настройка всего этого безобразия производится в отдельном табе Bypass WAF.
После внесения изменений нужно нажать на кнопку Set Configuration.
Чтобы расширение начало обрабатывать запросы, вам нужно перенаправить исходящий трафик в него. Для этого на вкладке Sessions в настройках проекта добавьте новое правило для обработки трафика.
На закладке Scope можете указать, трафик каких утилит должен проходить через BypassWAF, и дополнительно настроить фильтрацию определенных URL.
Например, я указал, чтобы весь трафик из Repeater уходил сначала в BypassWAF, а затем на сервер.
Burp SSL Scanner
Этот плагин проверит на прочность защищенное соединение с сервером. Здесь довольно внушительный список проверок, которые позволяют определить типичные слабые места в протоколах SSL и TLS. Тут вам и POODLE, и устаревшие версии SSL, и BREACH, и старинный Heartbleed (да, он еще встречается). Полный список вы можете найти на страничке репозитория на GitHub. Почти все проверки были портированы с небезызвестного скрипта testssl.sh. Теперь не нужно отрываться от Burp, чтобы выполнить эти тесты. Надо отметить, что расширение не поддерживает протокол TLS версии 1.3.
У плагина есть свой мини-интерфейс на отдельной вкладке SSL Scanner. Использовать его довольно легко. Вбиваем требуемый хост в поле Target и жмем кнопку Start Scanning.
По дефолту проверяется 443-й порт, но ничто не мешает указать кастомный порт через двоеточие.
Вы также можете отправлять в плагин любой URL, если из контекстного меняю выберете пункт Send URL to SSL Scanner.
Из минусов — не хватает кнопки «Остановить сканирование», так как оно имеет тенденцию затягиваться, особенно когда сервер очень хорошо отвечает на запросы.
J2EEScan
Напоследок парочка расширений для любимой Java. Первый — это очередной плагин-старичок авторства Энрико Миланезе (Enrico Milanese). Обнаруживает и тестирует различные J2EE (Java 2 Enterprise Edition) приложения на наличие известных уязвимостей. В арсенале расширения имеются такие старые добрые дыры, как JBoss SEAM Remote Command Execution (CVE-2010-1871), Expression Language Injection (CVE-2011-2730) и относительно новые вроде Apache Struts: S2-032 (CVE-2016-3081). Учитывая то, насколько сильно сопротивляются обновлениям энтерпрайз-решения, плагин бывает довольно полезен и периодически выручает интересными находками.
Плагин не требует никаких настроек, дополнительной возни не просит. Устанавливаем его, и он тихонько отрабатывает во время активного сканирования.
Freddy the Serial(isation) Killer
И последний плагин, о котором я хотел рассказать, — Freddy the Serial(isation) Killer.
В последнее время стали очень популярны всевозможные атаки на десереализацию и шаблонизаторы. Особенно отличились на этом поприще некоторые Java-проекты типа Spring, WebLogic, Apache Commons. Это расширение как раз и помогает обнаружить проблемы десериализации и демаршалинга в разных библиотеках и API.
Здесь реализована поддержка разных форматов пейлоада, в том числе YAML и AMF. За основу была взята утилита marshalsec. Полный список поддерживаемых целей вы можете посмотреть на странице репозитория. Хочу также отметить, что, помимо Java, плагин умеет атаковать десериализаторы .NET, такие как FastJson, JavascriptSerializer, XmlSerializer.
Работает «Фредди» во время автоматического сканирования. Никак дополнительно настраивать его не надо, а все найденные уязвимости можно посмотреть в панели Issues.
Итог
Разумеется, это лишь часть полезных расширений для Burp Suite, которые я использую в повседневной работе. Я не упоминал тут о небольших плагинах-хелперах типа JSONBeautifier и Swagger Parser, плагине Burp WP, который использует базу данных WPScan для определения уязвимых тем и плагинов в WordPress, и семействе плагинов Copy As, которые позволяют копировать запрос в виде кода на выбранном языке.
Я постарался рассказать о наиболее удачных, по моему мнению, плагинах для Burp Suite. Думаю, у каждого собрался такой вот списочек. Поэтому, если вам есть что добавить, пишите в комментариях.