
На первом CTF я два часа ковырял web-задачу через «Просмотр кода страницы», пытаясь найти скрытое поле формы. Решение уместилось в одно действие: перехватить POST-запрос в Burp Suite, найти параметр price=133700 в теле запроса и поменять на price=1. Тридцать секунд вместо двух часов. Разница была не в знании уязвимости — а в инструменте, который показал параметр, невидимый в HTML.
Burp Suite — перехватывающий прокси, который встаёт между браузером и целевым веб-приложением. Каждый HTTP/HTTPS-запрос проходит через него: можно остановить запрос, прочитать содержимое, поменять любой параметр — и только потом отправить на сервер. В терминологии MITRE ATT&CK схема работает по принципу Adversary-in-the-Middle (T1557, тактики credential-access и collection), только применяется легально — для тестирования безопасности веб-приложений на уязвимости. Подробнее — в нашем обзоре пентест веб-приложений.
Для CTF-игрока это означает конкретные вещи:
curl или PostmanBurp Suite Community Edition бесплатен и покрывает подавляющее большинство задач на CTF. Professional добавляет автоматический сканер и ускоренный Intruder, но для обучения и решения тасков Community хватает за глаза.
| Функция | Community | Professional |
|---|---|---|
| Proxy и Intercept | Да | Да |
| Repeater | Да | Да |
| Intruder | Ограничен (throttling) | Полная скорость |
| Scanner | Нет | Да |
| BApp Store расширения | Частично | Полный доступ |
| Стоимость | Бесплатно | ~$449/год |
Ограничение Intruder в Community — единственный ощутимый минус для CTF. Перебор идёт медленнее из-за искусственной задержки между запросами, но на большинстве задач хватает 50–200 запросов, и это терпимо.
Инсталлятор скачивается с официального сайта PortSwigger — portswigger.net/burp/communitydownload. Начиная с версии 2026.4 PortSwigger выпускает единый установщик для Community и Professional — при запуске выбираете редакцию. Java Runtime встроена, отдельно ставить не нужно.
Минимальные системные требования: 4 ГБ RAM (рекомендуется 8 ГБ), любая современная ОС — Windows 10+, macOS 10.14+, Linux. На машинах с 4 ГБ Burp ощутимо тормозит при большом объёме трафика, особенно если открыто много вкладок в браузере. Если есть возможность — ставьте 8 ГБ и не мучайтесь.
При первом запуске выбирайте Temporary project и Use Burp defaults — для CTF этого хватает. Если работаете над длительным аудитом, создайте New project on disk: история запросов сохранится между сессиями, что удобно при анализе сложного приложения.
Burp Suite по умолчанию слушает на 127.0.0.1:8080. Задача — направить туда трафик браузера. Два подхода, и начинающим стоит попробовать оба.
Встроенный браузер Burp (самый быстрый старт)
Откройте Proxy → Intercept и нажмите Open Browser. Запустится предварительно настроенный Chromium: прокси уже направлен на Burp, CA-сертификат установлен. Никакой ручной конфигурации — открыли и работаете.
Минус: встроенный браузер не хранит ваши закладки, расширения и сохранённые пароли. Для серьёзной работы удобнее настроить отдельный профиль Firefox.
Firefox + FoxyProxy (для постоянной работы)
Firefox удобен тем, что использует собственные сетевые настройки, независимые от системного прокси. Настройка Burp Suite в Firefox не влияет на остальные приложения — и это ключевое преимущество.
Установите расширение FoxyProxy Standard из магазина дополнений Firefox. Настройка:
127.0.0.1, Port: 8080Переключение между «обычным интернетом» и «трафик через Burp» — один клик по иконке FoxyProxy. Это критически важно: если забыть выключить прокси после работы, браузер перестанет загружать страницы, потому что будет слать запросы в неработающий Burp. Классическая ошибка новичков номер один — я сам на неё натыкался раз пять, прежде чем довёл до автоматизма.
Без FoxyProxy настройка делается вручную: Firefox → Настройки → Основные → Параметры сети → Настроить → Ручная настройка прокси. HTTP-прокси: 127.0.0.1, порт: 8080. Галочку «Использовать этот прокси для всех протоколов» — поставить. Но каждый раз менять это руками утомительно, так что FoxyProxy экономит нервы.
Без установленного CA-сертификата Burp не сможет расшифровать HTTPS-трафик. Браузер покажет ошибку безопасности на каждом сайте — и это правильное поведение: Burp фактически выполняет MitM-перехват, создаёт собственный TLS-сертификат для каждого домена и подписывает его своим CA. Браузер должен доверять этому CA, чтобы не блокировать соединение.
Если используете встроенный браузер Burp — сертификат уже установлен, этот шаг пропускайте.
Для Firefox (ручная установка):
127.0.0.1:8080 с галочкой Running)http://burp (именно HTTP, не HTTPS)cacert.dercacert.derПроверка: зайдите на https://google.com через прокси. Страница загрузилась без предупреждений — сертификат установлен корректно. В Burp во вкладке Proxy → HTTP History должны появиться расшифрованные HTTPS-запросы с полным содержимым.
Для Chrome и Edge сертификат устанавливается через системное хранилище ОС (Windows: «Управление сертификатами компьютера» → «Доверенные корневые центры сертификации»). Именно поэтому для тестирования веб-приложений на уязвимости удобнее Firefox — отдельное хранилище сертификатов, не затрагивающее остальную систему.
Откройте Proxy → Intercept. Кнопка Intercept is on / Intercept is off управляет режимом перехвата. Когда перехват включён, каждый HTTP-запрос из браузера «зависает» в Burp и ждёт вашего действия — Forward, Drop или модификации.
Перейдите в браузере на любой сайт. Запрос появится во вкладке Intercept. Типичный GET-запрос:
GET /login HTTP/2
Host: vulnerable-app.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Cookie: session=abc123def456
Первая строка — метод и путь. Далее заголовки (Host, User-Agent, Cookie). Если это POST-запрос, ниже заголовков через пустую строку идёт тело с параметрами — именно там на CTF прячется самое интересное.
Элементы управления перехваченным запросом:
Горячая клавиша: Ctrl+F — Forward. Привыкайте к ней с первого дня, экономит десятки кликов за сессию.
Держать Intercept включённым постоянно — боль. Каждый запрос требует ручного Forward, включая загрузку картинок, шрифтов и скриптов аналитики. Для CTF эффективнее другая стратегия.
Выключите Intercept. Пользуйтесь приложением как обычно — заполняйте формы, логиньтесь, переходите по страницам. Весь трафик автоматически проходит через Burp и записывается в Proxy → HTTP History.
HTTP History — полный лог трафика. Кликните на любую строку — внизу появятся сырой запрос (слева) и ответ сервера (справа). Можно фильтровать по домену, методу, статус-коду и искать по содержимому. Правая кнопка на запросе → Send to Repeater — и вы готовы к целенаправленному анализу.
Проблема: в HTTP History попадает абсолютно всё — запросы к CDN, google-analytics, рекламным трекерам. На CTF это шум. Решение — Target Scope.
Откройте Target → Site map. Найдите домен целевого приложения в дереве слева. Правая кнопка → Add to scope. Burp спросит, фильтровать ли out-of-scope трафик — подтвердите. Теперь в HTTP History нажмите на строку фильтра и отметьте «Show only in-scope items». Лог мгновенно очистится от мусора. Я ни в одном RU-гайде по Burp Suite не видел акцента на этом шаге — а на CTF с десятком открытых вкладок это разница между хаосом и контролем.
Чек-лист проблем, на которые натыкается практически каждый, кто начинает работать с Burp Suite:
«Страницы не грузятся, браузер показывает ошибку подключения». В 90% случаев: Burp закрыт или не запущен, а прокси в браузере всё ещё включён. FoxyProxy шлёт трафик на 127.0.0.1:8080, но там никто не слушает. Решение: запустите Burp или переключите FoxyProxy в режим Direct.
«Включил Intercept, но ничего не появляется». Проверьте три вещи: (1) FoxyProxy указывает на 127.0.0.1:8080 и активен; (2) в Burp → Proxy → Settings → Proxy Listeners запись 127.0.0.1:8080 отмечена как Running; (3) вы реально совершаете действие в браузере (переход, клик), а не просто ждёте.
«HTTPS-сайты показывают ошибку сертификата». CA-сертификат Burp не установлен в браузер. Вернитесь к разделу про установку сертификата.
«В History сотни запросов к google-analytics, cdn.jsdelivr.net, трекерам». Настройте Target Scope (описано выше). Дополнительно: Proxy → Settings → Intercept Client Requests → правило, исключающее расширения файлов (js, css, png, jpg, gif, woff2). Из History это не уберёт, но предотвратит их перехват в Intercept.
«Intercept ловит каждую картинку и CSS-файл». Правая кнопка на перехваченном запросе → Don't intercept requests → To this host (или With this file extension). Burp запомнит правило.
Repeater — второй инструмент по важности после Proxy. Берёте любой перехваченный запрос, меняете параметры, отправляете повторно — столько раз, сколько нужно. Без перезагрузки страницы, без повторного заполнения формы, без щёлканья мышкой по интерфейсу.
Как пользоваться:
Ctrl+R)Слева — запрос, который можно редактировать как текст. Справа — ответ сервера. Нажали Send — запрос ушёл, ответ появился. Поменяли параметр — Send снова. Каждая итерация записывается в историю вкладки, можно переключаться между попытками и сравнивать ответы.
На CTF web-задачах Repeater незаменим для:
' OR 1=1-- в параметр и смотрите, изменился ли ответ. Вместо «Login failed» пришёл JSON с данными пользователя — SQL-инъекция (A03:2021 Injection по OWASP Top 10)user_id=1 на user_id=2 в запросе к API и сравниваете ответы. Получили чужие данные — Broken Access Control (A01:2021)Intruder берёт на себя рутину: вместо ручной отправки 200 запросов через Repeater он делает это автоматически, подставляя значения из списка.
Workflow для типичной CTF-задачи на перебор:
Ctrl+I)§. Нажмите Clear §, затем выделите только нужный параметр и нажмите Add §В таблице результатов смотрите на столбцы Status и Length. Если 99 ответов имеют длину 4500 байт и статус 403, а один — 4800 байт и статус 200, этот «выброс» и есть правильный ответ. На CTF именно так находятся валидные credentials, правильные токены и скрытые пути.
Разберём классическую задачу, которая встречается на CTF в разных вариациях. За основу — лабораторная работа из PortSwigger Web Security Academy (бесплатная платформа с уязвимыми веб-приложениями). Сценарий напрямую применим к web-таскам на соревнованиях.
Сценарий: интернет-магазин позволяет добавлять товары в корзину. Кожаная куртка стоит $1337.00. У аккаунта на балансе $100. Задача — купить куртку.
Шаг 1. Откройте лабораторию в браузере через Burp (встроенный или с настроенным FoxyProxy). Убедитесь, что Intercept выключен. Залогиньтесь с тестовыми credentials (wiener:peter). На балансе $100 — куртка «честным» путём не по карману.
Шаг 2. Пройдитесь по приложению с выключенным Intercept: откройте страницу куртки, изучите интерфейс. Загляните в HTTP History — посмотрите, какие запросы генерирует приложение при навигации. Это разведка, и она важнее, чем кажется.
Шаг 3. Включите Intercept is on. В браузере нажмите «Add to cart». Запрос повиснет в Burp:
POST /cart HTTP/2
Host: target-shop.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
productId=2&redir=PRODUCT&quantity=1&price=133700
Шаг 4. Параметр price=133700 — цена в центах, переданная клиентом. Сервер доверяет этому значению и не проверяет его на бэкенде. Классическая ошибка из OWASP Top 10 A01:2021 (Broken Access Control) — клиент контролирует параметр, который должен определяться серверной логикой.
Меняем price=133700 на price=1.
Шаг 5. Forward (или Forward all, чтобы пропустить фоновые запросы). Выключите Intercept.
Шаг 6. В браузере откройте корзину. Куртка добавлена за $0.01. Place order — задача решена, баланса хватает.
Весь процесс — меньше минуты, если знаешь, куда смотреть. На реальных CTF параметр может называться иначе: role=user (меняем на role=admin), discount=0 (меняем на discount=99), is_premium=false (меняем на is_premium=true), access_level=1 (меняем на access_level=3). Принцип один: находим параметр, который контролирует бизнес-логику, и подставляем нужное значение. Обнаружить такой параметр через «Просмотр кода страницы» невозможно — он существует только в HTTP-запросе, а Burp Suite Proxy делает его видимым.
После Proxy, Repeater и Intruder — три направления для прокачки.
PortSwigger Web Security Academy. Более 200 бесплатных лабораторных работ по всем категориям веб-уязвимостей: SQL Injection, XSS, SSRF, authentication bypass, business logic flaws. Каждая лаба решается через Burp Suite с объяснением вектора атаки. Для начала хватит за глаза.
Расширения из BApp Store. Прямо из Burp (Extender → BApp Store) ставятся: Logger++ для расширенного логирования с фильтрацией, Autorize для автоматического тестирования авторизации (шлёт каждый запрос с пониженными правами — и сразу видно, где IDOR), JSON Beautifier для читаемого отображения JSON-ответов. В Community Edition доступны не все расширения, но основные работают.
Горячие клавиши. На CTF время ограничено, и скорость работы с инструментом решает. Минимальный набор: Ctrl+R — Send to Repeater, Ctrl+I — Send to Intruder, Ctrl+Shift+R — повторить запрос, Ctrl+F — Forward перехваченного. Разница между решением задачи за 30 секунд и за 5 минут — часто именно в знании клавиш.
Отдельно стоит упомянуть DOM Invader — встроенный в Burp инструмент для поиска DOM-based XSS прямо в браузере. Он доступен в настройках встроенного браузера Burp и помогает находить уязвимости, которые не видны через анализ HTTP-трафика, потому что вся логика крутится на стороне клиента в JavaScript.
Мой подход к новой CTF-задаче всегда одинаков: сначала прощёлкать приложение с выключенным Intercept, изучить HTTP History, настроить Target Scope. Потом найти «точку интереса» — запрос с параметрами, которые влияют на поведение приложения. Отправить в Repeater, поэкспериментировать вручную. Нужен перебор — Intruder. Эта последовательность работает на 80% web-задач любого уровня сложности.
Три года назад я мог решить в среднем одну web-задачу за CTF. Сейчас — пять-шесть, и дело не в том, что уязвимости стали проще. Дело в навыке чтения HTTP-запроса. Burp Suite — увеличительное стекло: показывает каждый байт, который ходит между браузером и сервером. Но если не понимать, что искать, инструмент бесполезен. Я встречал людей, которые знали каждую кнопку в Burp, но не могли определить IDOR в сыром запросе — привыкли полагаться на автоматический сканер. Сканер (которого в Community вообще нет) хорош для рутинной проверки, но на CTF побеждает тот, кто читает HTTP как текст и видит аномалию — параметр price, который отправляет клиент; role, который не должен быть в cookie; redirect_url, который принимает произвольный домен. Именно понимание протокола — не инструмента — отличает человека, решающего задачи, от человека, нажимающего кнопки. Начинайте с Proxy и HTTP History, привыкайте читать каждый заголовок и каждый параметр. Repeater и Intruder подключатся естественно, когда появится привычка замечать подозрительное. Если хочешь не просто разовые writeup-ы читать, а пройти всю цепочку от перехвата до эксплуатации самостоятельно — на WAPT эту прогрессию проходят в лабах с ментором, который подскажет, если застрял.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «web».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...