
На первом CTF я убил два часа, копируя cookie из DevTools браузера и вставляя их обратно в адресную строку. Задачу с IDOR на 100 очков так и не решил — не хватало способа быстро менять параметры запроса и видеть, что сервер отвечает. Через неделю на тренировке коллега открыл Burp Suite: перехватил запрос, поменял user_id в Repeater, нажал Send — флаг лежал в теле ответа. Три клика вместо двух часов мучений. Эта статья — тот разбор, который я хотел бы прочитать перед своим первым CTF: от установки Burp Suite для начинающих до реального флага, без воды.
Burp Suite — HTTP-интерсептор: программа, которая встаёт между браузером и веб-сервером, позволяя видеть, останавливать и менять каждый запрос и ответ. Man-in-the-middle proxy для ваших собственных соединений. Разрабатывает его компания PortSwigger — коммерческий проект с регулярными обновлениями (релизы выходят каждые 2-4 недели, последний — в 2025 году).
В терминах MITRE ATT&CK Burp Suite закрывает начальный этап цепочки — Exploit Public-Facing Application (T1190, Initial Access). Вы находите уязвимость в веб-приложении, манипулируете запросами и получаете доступ к данным или функциям, недоступным обычному пользователю. На CTF это конкретный результат — строка flag{...} в ответе сервера.
Место Burp Suite в полной цепочке атаки:
Контекст применимости: Burp Suite — инструмент для веб-категории CTF и внешнего пентеста веб-периметра. Для внутреннего пентеста корпоративной сети (Active Directory, сетевые протоколы) нужны другие инструменты — Responder, BloodHound, Impacket. Для бинарной эксплуатации (pwn) — GDB и pwntools. Burp не универсален, но в своей нише — незаменим.
На CTF-соревнованиях категория Web — одна из самых популярных. Типичные задачи, где без Burp Suite перехвата запросов не обойтись:
Если работаете на Kali Linux — Burp Suite Community уже предустановлен. На остальных ОС качайте инсталлятор с portswigger.net/burp/communitydownload. Права администратора не нужны.
Burp Suite выпускается в трёх редакциях. Для CTF и обучения Community Edition хватает за глаза — Proxy, Repeater и Decoder работают без ограничений.
| Возможность | Community (бесплатно) | Professional (~$449/год) |
|---|---|---|
| Proxy + Intercept | Да | Да |
| Repeater | Да | Да |
| Decoder | Да | Да |
| Intruder | Замедлен (~1 req/s) | Полная скорость |
| Scanner | Нет | Да |
| Встроенный браузер | Да | Да |
Первый запуск: откройте Burp Suite → выберите Temporary project (для CTF сохранять проект на диск необязательно) → Use Burp defaults → Start Burp. Сразу переключите тему на тёмную: Settings → Display → Theme → Dark. Глаза скажут спасибо после нескольких часов соревнования.
Настройка прокси — главный камень преткновения для новичков. Все русскоязычные руководства описывают ручную настройку Firefox и установку сертификатов. Но есть способ проще.
В Burp Suite есть встроенный Chromium-браузер, уже настроенный на работу через прокси. Никаких сертификатов, плагинов и ручных конфигов:
Этот способ рекомендован в официальной документации PortSwigger. Для первого CTF — идеальный вариант: ноль настройки, HTTPS работает из коробки. По данным Bugcrowd, для новичков этот метод позволяет полностью пропустить шаги с FoxyProxy и CA-сертификатом.
Если нужен привычный Firefox с закладками и расширениями:
127.0.0.1, порт 8080По умолчанию Burp Suite слушает на 127.0.0.1:8080 — проверяется во вкладке Proxy → Proxy settings.
При ручной настройке Firefox HTTPS-сайты покажут ошибку — браузер не доверяет сертификату Burp. Как описано в документации PortSwigger, исправляется за минуту:
http://burp (или http://burpsuite)cacert.derПосле этого расшифрованный HTTPS-трафик будет виден в Burp. Встроенный браузер всего этого не требует — он для того и сделан.
Прокси настроен — дальше два режима работы, которые покрывают 100% потребностей на CTF.
Вкладка Proxy → Intercept. Если кнопка показывает Intercept is on, каждый запрос из браузера будет остановлен. Вы увидите его содержимое: метод (GET/POST), URL, заголовки, cookie, тело запроса.
Кнопки управления:
В режиме Intercept is on страницы в браузере «зависают» — каждый запрос ждёт вашего решения. Полезно, когда нужно изменить конкретный запрос «на лету», но для обычного просмотра сайта — мучение. Как пишет PortSwigger в своём туториале: «Из-за количества запросов, которые обычно отправляет браузер, вам часто не захочется перехватывать каждый из них». Справедливо — браузер шлёт десятки запросов на каждую страницу (стили, скрипты, картинки), и жать Forward на каждый быстро надоедает.
Переключите Intercept в положение off и перейдите во вкладку Proxy → HTTP history. Браузер работает нормально, но каждый запрос и ответ записывается в таблицу. Кликните на любую строку — увидите полное содержимое пары запрос/ответ.
Для веб-задач CTF типичный workflow:
id=1, role=user, token=...)Этот подход рекомендован в документации PortSwigger как основной: исследуете приложение как обычный пользователь, потом разбираете накопленный трафик. На CTF это экономит массу времени — не нужно жать Forward на каждый скрипт, стиль и картинку.
Repeater — тут вы проведёте 80% времени на любом CTF. Он позволяет отправлять HTTP-запросы вручную, менять что угодно и мгновенно видеть ответ сервера. По сути, ваш рабочий верстак.
Как попасть в Repeater: найдите нужный запрос в HTTP History → правый клик → Send to Repeater (горячая клавиша Ctrl+R).
Что можно менять:
id=1 → id=2, page=home → page=admin)GET → POST → PUT → DELETE)Cookie, Authorization, User-Agent, X-Forwarded-For)На что смотреть в ответе:
Set-Cookie, Location — подсказки для следующего шагаКаждый раз при нажатии Send запрос отправляется заново. Меняйте значения и шлите десятки раз подряд — это штатный режим работы, не атака.
Разберём типичную CTF-задачу категории Web на 100-200 очков. Сценарий: веб-приложение с авторизацией, после логина отображается профиль пользователя. Задача — добраться до данных администратора.
Такие задачи строятся на IDOR — приложение идентифицирует объекты по предсказуемому числовому ID и не проверяет, имеет ли текущий пользователь право доступа. По OWASP это A01:2021 Broken Access Control.
Шаг 1: разведка. Откройте встроенный браузер Burp (Proxy → Open browser). Перейдите на сайт задачи. Зарегистрируйтесь тестовым аккаунтом и залогиньтесь. Intercept выключен — просто бродите по приложению и кликайте по всем доступным ссылкам.
Шаг 2: изучаем HTTP History. Перейдите в Proxy → HTTP history. Найдите запрос, который загружает страницу профиля. Он может выглядеть так:
GET /api/user/profile?id=7 HTTP/1.1
Host: ctf-challenge.example.com
Cookie: session=abc123def456
Ключевое наблюдение: параметр id=7 — ваш идентификатор. Что если подставить id=1?
Шаг 3: отправляем в Repeater. Правый клик на запрос → Send to Repeater (Ctrl+R). Перейдите во вкладку Repeater.
Шаг 4: меняем идентификатор. Измените id=7 на id=1 прямо в тексте запроса и нажмите Send. Смотрите на ответ справа:
HTTP/1.1 200 OK
Content-Type: application/json
{"username":"admin","email":"admin@ctf.local",
"flag":"flag{1d0r_f1rst_bl00d}"}
Флаг найден. Сервер вернул данные администратора, потому что не проверил, принадлежит ли id=1 текущей сессии. Классика.
Шаг 5: перебираем другие ID. В реальных CTF флаг может быть не у первого пользователя. Попробуйте id=0, id=1, id=2, id=3 — пока не найдёте ответ с флагом. Для 10-20 значений это быстрее делать вручную в Repeater, чем возиться с Intruder.
Весь процесс от открытия Burp до флага занимает 5-10 минут. Основное время уходит на изучение HTTP History и поиск запроса с управляемым параметром.
IDOR — не единственный сценарий. Вот паттерны, которые регулярно встречаются в web-задачах CTF и где перехват HTTP запросов через Burp Suite необходим.
Манипуляция cookie. Приложение хранит роль пользователя в cookie: role=user. Перехватите запрос, поменяйте на role=admin. Если сервер не проверяет подпись cookie — получите администраторскую панель. Часто значение закодировано в Base64: используйте вкладку Decoder для декодирования. Пример: cookie dXNlcj1ndWVzdA== декодируется как user=guest. Меняете на user=admin, кодируете обратно, подставляете в запрос через Repeater. Три минуты работы.
Смена HTTP-метода. Запрос GET /admin возвращает 403 Forbidden. В Repeater поменяйте метод на POST, PUT или OPTIONS. Некоторые серверы по-разному обрабатывают методы, и защита может стоять только на GET. На реальных приложениях такая валидация обычно корректна (смена метода с GET на POST при добавлении is_admin=true вернёт 200 OK, но поведение не изменится). На CTF такая валидация намеренно отсутствует — в этом и суть задачи.
Скрытые параметры. В HTML-коде страницы — скрытое поле: <input type="hidden" name="debug" value="0">. Браузер отправляет его как есть, но через Burp вы меняете 0 на 1 — и получаете отладочный вывод с флагом. Искать скрытые поля удобно прямо в ответе сервера во вкладке HTTP History.
SQL Injection. Параметр id=1 вставляется в SQL-запрос без фильтрации. В Repeater попробуйте id=1' OR '1'='1 — если в ответе появилась SQL-ошибка или изменилось содержимое, уязвимость подтверждена. По OWASP A03:2021 Injection это третий по распространённости класс веб-уязвимостей. На CTF — частый вектор: меняете параметр → смотрите ответ → подбираете payload.
Подмена заголовков. Некоторые задачи проверяют заголовок X-Forwarded-For или Referer. Доступ к странице разрешён только с определённого IP или реферера. В Repeater добавьте строку X-Forwarded-For: 127.0.0.1 в заголовки запроса и отправьте. Если приложение доверяет этому заголовку без проверки — доступ открыт.
Для CTF Community Edition хватает в подавляющем большинстве случаев, но границы стоит знать до начала соревнования, а не когда таймер тикает.
Intruder замедлен. Бесплатная версия ограничивает скорость Intruder до примерно 1 запроса в секунду. Для перебора 10 значений — терпимо, для словаря из 10 000 паролей — не вариант. Обходные пути: расширение Turbo Intruder (бесплатное, ставится через Extender → BApp Store) или скрипт на Python с библиотекой requests. Я обычно выбираю второй вариант — больше контроля.
Scanner отсутствует. Автоматический поиск уязвимостей — только в Pro. На CTF это не критично: задачи решаемы вручную, автоматический сканер часто бесполезен для нестандартных кейсов.
Не для всех категорий CTF. Burp Suite — веб-инструмент. Для Crypto, Pwn, Reverse Engineering, Forensics нужны другие средства. Burp не заменяет GDB, Ghidra, Wireshark или CyberChef.
Не заменяет понимание HTTP. Если вы не различаете GET и POST, не понимаете, что такое cookie и как работают заголовки — Burp Suite будет выглядеть как поток непонятного текста. Час на изучение структуры HTTP-запроса и ответа перед первым CTF — обязательная инвестиция. Без этого никакой инструмент не поможет.
Temporary project не сохраняется. Закроете Burp с Temporary project — вся HTTP History пропадёт. Для важных соревнований выбирайте New project on disk при запуске.
| Преимущества | Ограничения |
|---|---|
| Бесплатная версия покрывает Proxy, Repeater, Decoder | Intruder замедлен до ~1 req/s |
| Встроенный браузер — нулевая настройка | Нет автоматического сканера |
| Визуальный интерфейс, не командная строка | Не подходит для бинарных CTF-задач |
| HTTP History сохраняет весь трафик сессии | Требует базового понимания HTTP |
| Расширения через BApp Store | Temporary project пропадает при закрытии |
Три направления для тренировки Burp Suite обучения на практике:
PortSwigger Web Security Academy (portswigger.net/web-security) — бесплатные лабораторные по всем категориям OWASP. Каждая лаба — отдельная уязвимость с подсказками и пошаговым решением. Создатели Burp Suite сами пишут эти задачи — качество соответствующее.
CTF-платформы. PicoCTF — для абсолютных новичков с пояснениями к каждой задаче. HackTheBox — для уровня повыше, задачи ближе к реальным сценариям. Категория Web на обеих площадках — десятки задач с нарастающей сложностью.
Локальные уязвимые приложения. DVWA и WebGoat разворачиваются на вашей машине. Безопасная среда для экспериментов: можно вводить любые payload без страха что-то сломать или нарушить правила платформы.
Три горячие клавиши, которые экономят время на соревновании: Ctrl+R — отправить запрос в Repeater, Ctrl+I — отправить в Intruder, Ctrl+Shift+R — повторить отправку. Основной workflow укладывается в формулу: нашли запрос в History → Ctrl+R → изменили параметр → Send → анализ ответа.
Навык перехвата и модификации HTTP запросов, который вы освоили в этой статье, работает в каждой веб-задаче: меняется конкретная уязвимость, а workflow остаётся тем же — Proxy → History → Repeater → флаг.
Главная ошибка новичков — попытка освоить весь Burp Suite целиком, прежде чем решить первую задачу. Изучают Scanner, недоступный в бесплатной версии. Настраивают десяток расширений, ненужных для базовых кейсов. Читают документацию по каждому режиму Intruder, когда хватило бы трёх нажатий в Repeater. Не надо так.
Реальный набор для первых 20-30 веб-задач — ровно три вкладки: Proxy с HTTP History, Repeater и Decoder. Intruder понадобится, когда придёт задача с перебором на тысячу значений. Scanner — когда купите Pro и пойдёте в bug bounty. Но к тому моменту вы уже будете интуитивно чувствовать, какой параметр менять и чего ждать в ответе.
И вот что редко проговаривают: Burp Suite формирует мышление, а не просто навык работы с конкретной программой. Привычка видеть каждый HTTP-запрос — какие параметры передаются, какие cookie летят, что сервер возвращает на нестандартный ввод — меняет способ восприятия любого веб-приложения. Вы перестаёте быть пользователем и начинаете видеть поверхность атаки. Этот навык масштабируется на любой инструмент, любую платформу. Если хочется пройти путь от «что такое HTTP» до первых рабочих задач в ИБ системно — на IB Basics берут с любого старта и показывают, что делать в первые месяцы, без требований «вы должны знать Linux на уровне X».
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «web».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...