Тестирование REST API, GraphQL и gRPC — это не просто «еще один веб-сайт». Это работа с структурированными данными, сложными токенами аутентификации и часто — с огромным объемом запросов. Стандартный Burp Suite, out-of-the-box, хорош, но он создан для широкого спектра задач. По моему опыту, 90% пентестеров используют его в режиме «включил и работаю», упуская тонны возможностей для поиска уязвимостей. Эта статья — не перевод документации. Это собрание практических конфигураций и приемов, которые я вывел за годы специализированного тестирования API. Мы превратим ваш Burp из молотка в скальпель.
Часть 1: Фундамент — Настройка Проекта и Прокси
Прежде чем бросаться устанавливать расширения, нужно правильно заложить основу.
1.1. Создание dedicated проекта для API
Не стоит мешать тестирование WEB-приложения и API в одном проекте. Создайте новый проект с говорящим названием (Project_API_ClientX). Это упростит дальнейший анализ.
1.2. Fine-Tuning прокси-настроек
Перейдите в Proxy -> Options.
- Binding: Убедитесь, что слушающий интерфейс — правильный (часто
127.0.0.1:8080). - Interception: Советую сразу отключить перехват (Intercept is off). Для теста API ручное просматривание каждого JSON-запроса — пустая трата времени. Мы будем работать с историей (Proxy History) и повтором запросов (Repeater).
- Response Modification: В
Response Modificationя часто включаю опцию «Unhide hidden form fields». Иногда это может пригодиться и в API, если вы имеете дело с формами на стороне клиента, которые взаимодействуют с API.
1.3. Критически важные настройки TLS
Без этого вы не перехватите трафик с большинства современных приложений и Android/iOS устройств.
- Перейдите в
Proxy->Options->SSL. - Поставьте галочку «Generate a CA-signed certificate per host». Это решает кучу проблем с ошибками сертификатов.
- Export the CA certificate: Экспортируйте сертификат Burp (в той же вкладке) и установите его в Trusted Root Store вашей ОС и на мобильное устройство/эмулятор, с которого будете работать.
Мое мнение: Многие недооценивают важность корректной настройки TLS. Ошибка «certificate pinning» или просто недоверенный сертификат — основная причина, по которой у новичков не выходит перехватить трафик. Потратьте 10 минут на эту настройку — сэкономите 2 часа на дебаггинг.
Часть 2: Must-Have Расширения (BApps) для API
Магазин расширений — вот где Burp раскрывает свой истинный потенциал. Установите через Extender -> BApp Store.
2.1. JSON Beautifier
Базовое, но жизненно необходимое. Превращает нечитаемый JSON {"data":{"user":{"name":"John"}}} в красивое отформатированное дерево. Обязательно к установке.
2.2. Turbo Intruder
Прямой наследник знаменитого Burp Intruder, но написанный на Python и designed для скорости. Его главная сила — память и многопоточность.
- Для чего: Брутфорс логинов/токенов, подбор параметров IDOR, поиск путей в эндпоинтах (
/api/v1/user/[id]), fuzzing. - Почему он, а не стандартный Intruder? Когда вам нужно отправить 100 000 запросов за минуту, стандартный Intruder просто «умрет». Turbo Intruder справится. Мой совет: используйте стандартный Intruder для простых задач (до 1000 запросов), а Turbo — для всего, что требует скорости и мощности.
Пример кода для Turbo Intruder (базовый):
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=5,
requestsPerConnection=100,
pipeline=False
)
for word in open('/path/to/wordlist.txt'):
engine.queue(target.req, word.rstrip())
def handleResponse(req, interesting):
if interesting:
table.add(req)
Этот скрипт берет запрос, подставляет слова из файла в заданное место и быстро отправляет.
2.3. AuthMatrix
Визуальный инструмент для тестирования прав доступа.
- Для чего: Вы создаете пользователей (User, Admin, SuperAdmin), назначаете им сессии (cookies/tokens) и затем проверяете, может ли User получить доступ к эндпоинту Admin. Наглядно и быстро.
2.4. Additional Scanner Checks
Набор дополнительных проверок для сканера. Позволяет находить более специфичные уязвимости, которые стандартный сканер может пропустить.
2.5. (Опционально) Flow
Расширение, которое пытается отобразить в виде графа взаимодействия между запросами. Может быть полезно для понимания сложных workflow в API.
Часть 3: Настройка Целей (Target) и Области (Scope)
Чтобы не утонуть в тысячах запросов к CDN, скриптам и сторонним сервисам.
3.1. Определение Scope
Перейдите в Target -> Scope.
- Добавьте базовый URL вашего целевого API (напр.,
https://api.target.com/v1/*). - Включите опцию «Include in scope». Это заставит Burp фокусироваться только на том, что важно.
3.2. Выключение пассивного сканирования вне Scope
В Dashboard -> Live passive scanning -> Configure выберите опцию «Use custom scope» и укажите «Scan only in-scope items». Это разгрузит процессор и избавит лог от мусора.
Мое мнение: Игнорирование настройки Scope — самая частая организационная ошибка. Вы потратите 80% времени на анализ бесполезного трафика. Дисциплинируйте себя: сначала определи цель, потом бей.
Часть 4: Глубокая работа с инструментами
4.1. Repeater — ваш лучший друг
Repeater — это лаборатория для исследования каждого эндпоинта.
- Отправка и модификация: Поиграйтесь с заголовками. Самые важные для API:
Content-Type: application/json,Authorization: Bearer <token>,X-API-Key,User-Agent. - Пример теста на IDOR: Вы получили свой user_id:
{"id": 100}. Нашли эндпоинтGET /api/v1/users/100. Отправьте его в Repeater и измените на101. Посмотрите на ответ. - Работа с JSON: Меняйте значения параметров, добавляйте новые, пробуйте менять типы данных (строку на число,
trueнаfalse).
4.2. Scanner для API
Запустите активное сканирование на важные эндпоинты (желательно в копии проекта или на тестовом стенде!).
- На что обратить внимание: Сканер Burp отлично ищет SQLi, XSS, но может пропустить логические уязвимости (IDOR, Broken Object Level Authorization). Не полагайтесь на него на 100%. Его задача — найти низко висящие плоды, ваша задача — найти сложные логические цепочки.
4.3. Intruder для брутфорса и фаззинга
- Sniper attack: Идеален для подбора одного параметра (например,
?user_id=§100§). - Pitchfork attack: Нужен когда у вас два и более списка значений, которые должны подставляться параллельно (логин и пароль,
idиapi_key). - Cluster bomb: Для полного перебора нескольких значений.
Часть 5: Мое экспертное мнение: Типичные ошибки и советы
- Ошибка №1: Игнорирование документации. Всегда ищите
/swagger.json,/openapi.json,/api-docs. Часто вся структура API лежит открыто. Используйте инструменты вродеOpenAPI-to-Postmanдля импорта в Burp. - Ошибка №2: Фокус только на JSON. API могут использовать XML (
Content-Type: application/xml), что открывает дорогу для XXE-атак. Всегда меняйте Content-Type и пробуйте разные форматы данных. - Ошибка №3: Слепая вера в сканер. Самые сочные уязвимости (логические) сканер не найдет. Ваш главный инструмент — это мозг, Repeater и Intruder.
- Совет: Создайте свой собственный чек-лист для теста API, основанный на OWASP API Security Top 10. Идите по пунктам: Broken Object Level Authorization, Excessive Data Exposure, Lack of Resources & Rate Limiting и т.д.
- Совет: Для работы с GraphQL установите специальное расширение (напр., InQL Scanner) или просто работайте через Repeater, отправляя POST-запросы с телами
{"query": "{__schema { queryType { name } } }"}.
Заключение:
Глубокая настройка Burp Suite — это не разовая акция, а процесс. Начните с базовых шагов, описанных выше, установите ключевые расширения и настройте Scope. Затем, по мере роста вашего опыта, вы будете кастомизировать Burp под свои нужды. Помните: цель — не просто настроить инструмент, а создать эффективный рабочий процесс для нахождения уязвимостей, которые пропустят другие.
