Главная / Блог / Burp Suite для начинающих: прокси, Repeater, первый баг

14 мин.00

Burp Suite для начинающих: прокси, Repeater, первый баг

Burp Suite для начинающих: прокси, Repeater, первый баг

На последнем университетском CTF наша команда потеряла 40 минут на web-таске уровня Easy. Флаг лежал в ответе сервера на GET-запрос с параметром user_id=1 — достаточно было заменить значение на 0 и отправить повторно. Три человека ковыряли HTML в DevTools, четвёртый догадался открыть Burp Suite — один запрос в Repeater, и флаг на экране. Вот она, разница между «вижу страницу в браузере» и «вижу каждый байт между браузером и сервером». Первое — тыканье наугад, второе — системный подход к поиску уязвимостей. Эта статья — тот самый воркшоп, который я провожу перед каждым CTF для новичков: от настройки прокси Burp Suite и установки сертификата до перехвата первого запроса и нахождения реальной уязвимости в web-таске.

Что нужно знать о Burp Suite перед первым web CTF

Burp Suite — перехватывающий прокси и набор инструментов для анализа веб-трафика, заточенный под поиск уязвимостей веб-приложений. Для CTF-игрока на web-категории это главный рабочий инструмент. Без него половина тасков просто нерешаема из браузера. Подробнее — в нашем обзоре пентест веб-приложений.

Из всего арсенала новичку на CTF нужны четыре модуля. Остальные подождут.

Proxy — HTTP прокси-сервер, который встаёт между браузером и целевым сервером. Перехватывает каждый запрос и ответ, позволяет их читать, менять на лету и пересылать дальше. Именно тут видно то, что браузер прячет: скрытые параметры форм, cookie с закодированными данными, заголовки авторизации, нестандартные HTTP-методы.

Repeater — ручная отправка модифицированных запросов. Перехватил запрос в Proxy, кинул в Repeater, поменял параметр, нажал Send, сравнил ответ. Это основной цикл при решении web-тасков. Можно открыть несколько вкладок и сравнивать реакцию сервера на разные модификации — удобно.

Intruder — автоматизация перебора. Нужно проверить 100 значений параметра (ID пользователей, PIN-коды, словарь паролей) — Intruder делает это за секунды. В Community-версии скорость режется троттлингом, но для CTF-задач обычно хватает.

Decoder — кодирование и декодирование данных. Base64, URL-encoding, hex — то, что постоянно встречается в CTF. Скопировал подозрительную cookie, вставил в Decoder, декодировал из Base64 — увидел JSON с {"role":"user"}. Поменял на admin, закодировал обратно, вставил в запрос. Половина Easy-тасков решается именно так.

Scanner доступен только в платной Professional-версии (актуальную цену см. на portswigger.net/burp/pro), но для CTF ручной анализ через Repeater эффективнее автоматического сканирования — задачи специально построены так, чтобы сканеры не справлялись. Community-версию качайте с официального сайта — она бесплатна, и все четыре модуля выше работают (Intruder — с троттлингом).

Настройка прокси Burp Suite и подготовка браузера

Перед перехватом первого запроса нужно настроить связку из двух компонентов: Burp как HTTP прокси-сервер и браузер, который будет ходить через него. Типичная ошибка новичков — настроить одно и удивляться, что ничего не работает.

Качайте Burp Suite Community с portswigger.net/burp/communitydownload. Установщик включает Java, отдельно ставить не нужно. Минимум: 4 ГБ RAM (лучше 8), Windows 10+ / macOS 10.14+ / Linux. При первом запуске выбирайте Temporary project и Use Burp defaults — для CTF этого за глаза. Persistent-проект нужен при многодневном пентесте, не на соревнованиях.

После запуска Burp автоматически поднимает прокси на 127.0.0.1:8080. Проверьте во вкладке Proxy → Proxy settings: в списке Proxy Listeners должна быть запись 127.0.0.1:8080 с галочкой Running. Если порт 8080 занят — меняйте на 8081 или любой свободный.

Теперь нужно направить браузер через этот прокси. Рекомендую Firefox — у него собственное хранилище сертификатов, независимое от системного, что упрощает жизнь.

FoxyProxy Burp Suite — настройка переключения в один клик

Можно вручную менять прокси-настройки в Firefox каждый раз, но на CTF время — это флаги. FoxyProxy позволяет переключаться между прямым подключением и Burp одним кликом.

Пошаговая настройка FoxyProxy для Burp Suite:

  1. Откройте Firefox, перейдите в Add-ons (about:addons), найдите FoxyProxy Standard и установите
  2. Кликните на иконку FoxyProxy в панели инструментов → Options
  3. Нажмите Add для создания нового профиля прокси
  4. Заполните поля: Title — Burp, Proxy Type — HTTP, Proxy IP — 127.0.0.1, Port — 8080
  5. Сохраните профиль
  6. Для активации: кликните на иконку FoxyProxy → выберите профиль Burp
  7. Для отключения: выберите Turn Off (прямое подключение)

Критический момент: если FoxyProxy активен, а Burp Suite не запущен — браузер не загрузит ни одну страницу. Это первый вопрос, с которым приходят новички: «У меня интернет сломался». Не сломался — Burp не запущен. Порядок всегда такой: сначала запустили Burp → потом включили FoxyProxy → только тогда идёте на таск.

Как настроить браузер для Burp Suite без расширений: в Firefox — Settings → General → Network Settings → Manual proxy configuration → HTTP Proxy: 127.0.0.1, Port: 8080, отметить «Also use this proxy for HTTPS». В исключения добавить localhost, 127.0.0.1. Работает, но переключать вручную каждый раз — потеря двух минут, которых на CTF может не хватить.

SSL сертификат Burp — без него HTTPS не работает

Без установки CA-сертификата Burp браузер покажет ошибку безопасности на каждом HTTPS-сайте. Burp генерирует собственный сертификат для расшифровки HTTPS-трафика — по сути легитимный man-in-the-middle, применённый к собственному трафику. Технически это похоже на Adversary-in-the-Middle (T1557 по MITRE ATT&CK, тактики credential-access/collection), но T1557 описывает перехват трафика третьих лиц злоумышленником. Мы же расшифровываем собственный TLS-трафик через доверенный CA — это диагностика, а не атака.

Установка SSL сертификата Burp в Firefox:

  1. Убедитесь, что Burp запущен и FoxyProxy направлен на Burp
  2. В адресной строке перейдите на http://burp (именно HTTP, не HTTPS)
  3. Нажмите CA Certificate — скачается файл cacert.der
  4. В Firefox: Settings → Privacy & Security → Certificates → View Certificates
  5. Вкладка AuthoritiesImport → выберите скачанный файл
  6. Отметьте Trust this CA to identify websites → OK
  7. Проверка: откройте любой HTTPS-сайт — страница должна загрузиться без предупреждений, а в Burp во вкладке Proxy → HTTP history появится расшифрованный трафик

Если после установки сертификата браузер всё равно ругается — перезапустите Firefox полностью. Не помогло — удалите старый сертификат PortSwigger из хранилища (вкладка Authorities, найдите PortSwigger) и импортируйте заново. На это уходит 30 секунд, но без рабочего сертификата перехват HTTPS-трафика невозможен.

Перехват HTTP запросов Burp Suite — первые действия

Настройка прокси завершена. Переходим к перехвату. Откройте вкладку Proxy → Intercept и убедитесь, что кнопка показывает Intercept is on.

Теперь каждый запрос из браузера останавливается в Burp. В окне Intercept виден сырой HTTP-запрос: метод (GET/POST), URL, заголовки (Host, User-Agent, Cookie) и тело. То же самое, что DevTools показывают в «красивом» виде, но тут — без фильтров и с возможностью редактирования прямо перед отправкой.

Три кнопки управления перехватом: - Forward — отправить запрос дальше на сервер, получить ответ в браузер - Drop — удалить запрос: он не дойдёт до сервера, действие отменено - Intercept is on/off — глобальный переключатель перехвата

Типичный рабочий цикл анализа веб-трафика на CTF: включили Intercept → выполнили действие в браузере (нажали кнопку, отправили форму) → увидели запрос в Burp → изучили параметры → отправили Forward или перекинули в Repeater через Ctrl+R.

Теперь нюанс, на котором спотыкаются все: не держите Intercept включённым постоянно. Когда он активен, каждый запрос — CSS, JS, картинки, favicon, аналитика — останавливается в Burp. Вместо анализа интересного POST-запроса вы будете бесконечно нажимать Forward на мусорные GET к CDN. Включайте Intercept только перед конкретным действием, которое хотите перехватить. Нажали кнопку — перехватили — выключили.

Вся история запросов сохраняется во вкладке Proxy → HTTP history, даже когда Intercept выключен. Burp пишет трафик в фоне. Можно спокойно просматривать таск с выключенным Intercept, а потом найти нужный запрос в истории и отправить его в Repeater. Поиск по истории — Ctrl+F в нижней панели или фильтр по URL в строке Filter.

Scope — фильтруем шум и фокусируемся на цели

На CTF у вас одна цель — адрес таска, например http://challenge.ctf.local:5000. Всё остальное — шум. Target Scope ограничивает перехват и запись только целевым доменом.

Настройка Scope для web CTF:

  1. Перейдите в Target → Scope settings
  2. Нажмите Add и введите URL таска: http://challenge.ctf.local:5000
  3. Вернитесь в Proxy → Proxy settings, в секции Request interception rules включите правило URL Is in target scope
  4. В HTTP history нажмите Filter и отметьте Show only in-scope items

Без настройки Scope за полчаса CTF в HTTP history накапливаются сотни запросов к Google Fonts, CDN jQuery и рекламным трекерам. Нужный POST к /api/login теряется на пятой странице. Scope — это экономия десятков минут за соревнование. Настраивайте первым делом.

Burp Repeater: как использовать для ручного тестирования

Repeater — основной инструмент при решении web-тасков. Логика простая: взять запрос, поменять параметр, отправить, посмотреть ответ. Без автоматизации, без сканирования — чистая ручная работа, которая на CTF решает большинство задач.

Отправка запроса в Repeater: найдите его в HTTP history или перехватите через Intercept, кликните правой кнопкой → Send to Repeater (горячая клавиша Ctrl+R). Во вкладке Repeater слева — редактируемый запрос, справа — ответ сервера. Меняете что нужно, нажимаете Send, смотрите Response. Можно открыть несколько вкладок и сравнивать ответы на разные модификации одного запроса — это удобнее, чем кажется.

Типичный пример — проверка на IDOR (Insecure Direct Object Reference). По OWASP Top 10 это категория A01:2021 Broken Access Control — самая распространённая уязвимость: 94% протестированных приложений содержат какую-либо форму нарушения контроля доступа. На CTF задача может выглядеть так: страница профиля загружает данные через GET /api/profile?id=42. Меняем id=1 — сервер возвращает данные другого пользователя без проверки прав. Классический IDOR.

GET /api/profile?id=42 HTTP/1.1
Host: challenge.ctf.local:5000
Cookie: session=eyJhbGciOiJIUzI1NiJ9...

-- Меняем id=42 на id=1, нажимаем Send --
-- Ответ: {"username":"admin","flag":"CTF{broken_access}"}

Флаг получен одним изменённым параметром. В реальном пентесте такая уязвимость позволяет злоумышленнику стянуть данные любого пользователя системы. В MITRE ATT&CK эксплуатация публичных веб-приложений описывается как Exploit Public-Facing Application (T1190, тактика Initial Access), хотя T1190 подразумевает получение первоначального доступа в инфраструктуру. IDOR внутри уже аутентифицированной сессии — это скорее нарушение контроля доступа (OWASP A01), а не initial access в терминах ATT&CK.

Ещё один частый сценарий CTF — SQL-инъекция (A03:2021 Injection по OWASP). Если параметр попадает в SQL-запрос без фильтрации, через Repeater можно отправить классический тест:

GET /search?q=test' OR '1'='1 HTTP/1.1
Host: challenge.ctf.local:5000

Если ответ изменился — вернулись все записи вместо одной — инъекция подтверждена. Дальше: UNION SELECT для определения числа колонок, извлечение названий таблиц, получение флага. Весь цикл — в Repeater, запрос за запросом.

Burp Intruder — туториал по автоматизации перебора

Когда одного запроса мало, подключается Intruder. На CTF это перебор ID пользователей (массовый IDOR), брутфорс PIN-кодов, фаззинг скрытых эндпоинтов.

Отправка запроса: правый клик → Send to Intruder (или Ctrl+I).

Во вкладке Intruder → Positions выделите параметр для перебора. Burp оборачивает его маркерами §. Нажмите Clear § (убрать все автоматические маркеры), затем выделите только нужное значение и нажмите Add §. В GET /api/profile?id=§42§ маркеры стоят вокруг значения 42 — именно оно будет перебираться.

Настройка перебора ID от 0 до 100:

  1. В Positions оставьте маркеры только вокруг значения параметра id
  2. Во вкладке Payloads выберите тип Numbers: Range от 0 до 100, Step 1
  3. Attack type: Sniper (один параметр — один пейлоад-лист)
  4. Нажмите Start attack

В таблице результатов смотрите на колонки Status (код HTTP-ответа) и Length (размер ответа в байтах). Если 98 запросов вернули Status 403 и Length 240, а два запроса — Status 200 и Length 580 — вот они, интересные ID. Кликните на запрос с нестандартным ответом, посмотрите Response — с высокой вероятностью там флаг или данные для следующего шага.

В Community-версии Intruder работает с троттлингом — задержка между запросами замедляет перебор. Для CTF это редко критично: 100–200 значений прогоняются за пару минут. Для больших словарей (rockyou.txt на 14 миллионов записей) Community-версия уже неудобна, но такие задачи на CTF встречаются нечасто.

Четыре режима атаки в Burp Intruder:

Тип атаки Когда использовать Пример на CTF
Sniper Один параметр, один список Перебор id от 0 до 100
Battering Ram Один список во все позиции Одно значение подставляется и в логин, и в пароль
Pitchfork Параллельные списки (1-й + 1-й, 2-й + 2-й) Логин-пароль из одного файла попарно
Cluster Bomb Все комбинации всех списков Полный брутфорс логин + пароль

Для 90% CTF-тасков хватает Sniper. Cluster Bomb нужен для брутфорса форм логина, когда есть список логинов и список паролей — Intruder переберёт все комбинации.

Поиск уязвимостей веб-приложений: пошаговый разбор web-таска

Соберём весь арсенал в один алгоритм. Допустим, на CTF дали URL: http://challenge.local:8080 — приложение с формой логина и дашбордом.

Шаг 1: разведка через Proxy. Включите FoxyProxy на профиль Burp. Intercept выключен. Пройдитесь по всем страницам приложения, заполните формы тестовыми данными, нажмите все кнопки. В HTTP history накопится набор запросов — это карта эндпоинтов: /login, /dashboard, /api/user, /static/app.js. Уже тут ищите подозрительные параметры и необычные заголовки.

Шаг 2: анализ запросов и cookie. В HTTP history найдите POST на /login. Посмотрите тело: username=guest&password=guest. Теперь ответ — заголовок Set-Cookie. Часто значение cookie — base64-строка. Скопируйте её, откройте Decoder, вставьте, выберите Decode as Base64. Увидели {"user":"guest","role":"user"}? Вот и потенциальная дыра: если сервер доверяет данным из cookie без серверной валидации — роль можно подменить.

Шаг 3: модификация через Repeater. Отправьте запрос к /dashboard (тот, что в HTTP history, с cookie) в Repeater через Ctrl+R. Возьмите JSON {"user":"admin","role":"admin"}, закодируйте в Base64 через Decoder. Вставьте результат в заголовок Cookie вместо оригинального значения. Send. Если сервер вернул страницу админа с флагом — задача решена. Типичная уязвимость: доверие клиентским данным без проверки на сервере, категория A01 по OWASP.

Шаг 4: если cookie-манипуляция не сработала — копаем глубже. Попробуйте SQL-инъекцию в поле логина: отправьте admin' -- в параметре username через Repeater. Проверьте HTML-ответ на hidden-поля — <input type="hidden" name="isAdmin" value="false">. Перехватите POST через Intercept, измените isAdmin=true, нажмите Forward. Ищите комментарии разработчиков в Response: <!-- TODO: remove debug endpoint /api/debug --> — такое встречается чаще, чем кажется.

Шаг 5: массовый перебор через Intruder. Если на дашборде есть эндпоинт /api/user?id=YOUR_ID — отправьте запрос в Intruder, переберите ID от 0 до 50 в режиме Sniper. Ищите ответ с нестандартным Length или Status-кодом — там будут данные привилегированного пользователя или сам флаг.

Алгоритм Proxy → анализ → Repeater → Intruder покрывает подавляющее большинство web-тасков уровня Easy и Medium на CTF. Сам инструмент несложный — ценность в системном подходе и внимательности к деталям запросов.

Чеклист новичка: ошибки, которые стоят флагов

За два года подготовки университетской CTF-команды я собрал список ошибок, которые совершают все новички. Каждая — потерянные минуты или целые таски.

Забыли включить Intercept перед действием. Нажали Submit на странице, ничего в Burp не появилось. Проверили — Intercept is off. Запрос ушёл, действие выполнено, перехватывать нечего. Перед каждым критическим действием визуально проверяйте надпись на кнопке Intercept.

Не настроили Scope. HTTP history забита запросами к fonts.googleapis.com, cdn.jsdelivr.net и google-analytics. Нужный POST к /api/flag потерялся на пятой странице. Первое действие после открытия таска — добавить его URL в Target Scope и включить фильтр в HTTP history.

Не установили SSL-сертификат Burp. HTTPS-таск показывает ошибку SSL в браузере. Студент отключает Burp и пытается решить задачу без перехвата — вручную, через DevTools. Итог: 20 минут на задаче, которая решается за три. Установка сертификата — часть подготовки к CTF, а не «разберусь потом».

Игнорируют cookie и заголовки. Смотрят только на параметры в URL и теле POST. А флаг зашит в base64-cookie, которую нужно декодировать через Decoder. Или сервер проверяет заголовок X-Forwarded-For и отдаёт админку только для 127.0.0.1. На каждом таске проверяйте Set-Cookie в ответах и все нестандартные заголовки.

Не используют Repeater. Меняют параметры прямо в Intercept и нажимают Forward — если не сработало, нужно заново выполнять действие в браузере. В Repeater можно отправлять один и тот же запрос с десятками модификаций подряд. Ctrl+R должен стать рефлексом.

Не читают Response целиком. Смотрят только рендер страницы в браузере. А в сыром Response — закомментированный HTML с подсказкой, скрытый JSON-эндпоинт или debug-информация с путями к файлам на сервере. В Repeater или HTTP history всегда проверяйте вкладку Response → Raw через Ctrl+F.

Мини-чеклист перед CTF (у нас висит на стене):

  1. Burp Suite запущен, Proxy Listener активен на 127.0.0.1:8080
  2. FoxyProxy настроен и профиль Burp включён
  3. SSL-сертификат Burp установлен в Firefox
  4. URL каждого таска добавлен в Target Scope
  5. Intercept по умолчанию выключен (включать только перед целевым действием)
  6. Decoder открыт на отдельной вкладке для быстрого base64/URL-декодирования

Горячие клавиши, которые стоит запомнить: Ctrl+R — отправить в Repeater, Ctrl+I — отправить в Intruder, Ctrl+F — поиск в запросе или ответе.

Большинство руководств по Burp Suite для начинающих фокусируются на перечислении модулей — Proxy делает одно, Intruder другое, Scanner третье. Получается справочник по интерфейсу, а не навык. Я вижу это регулярно: человек прочитал документацию, знает расположение каждой кнопки — и зависает на первом web-таске, потому что не понимает, что именно искать в перехваченном запросе.

Навык пентестера — не знание интерфейса. Это привычка на каждый запрос смотреть глазами атакующего: какой параметр контролирует пользователь? Что произойдёт, если подставить чужой ID? Что спрятано внутри base64-cookie? Куда уходит значение из hidden-поля? Burp Suite для пентеста — усилитель внимательности, не замена мышления.

Через полгода регулярных CTF перестаёшь думать «где тут кнопка Intruder» и начинаешь думать «этот параметр не валидируется на стороне сервера, тут A01 Broken Access Control, нужно проверить смежные эндпоинты». Вот тогда Burp становится продолжением рук. Если хочешь не просто writeup, а пройти всю атаку самому — на WAPT есть лаба на каждый такой кейс.

🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «web».

Поделиться

0 комментариев

Пожалуйста, войдите, чтобы оставить комментарий.

Загрузка комментариев...

Читайте также

Форматы CTF соревнований: jeopardy vs AD

14 мин.

6

Форматы CTF соревнований: jeopardy vs AD

Как устроены jeopardy и attack-defense CTF: категории задач, скоринг, gamebox, чекеры. Чек-лист инструментов и площадок для первого турнира.

1 СЕНТЯБРЬ, 2026

Разбор pwn-таска buffer overflow с нуля

10 мин.

2

Разбор pwn-таска buffer overflow с нуля

Пошаговый разбор buffer overflow: от checksec до shell. Offset через cyclic, эксплойт на pwntools, ошибки новичков и защиты D3FEND.

31 АВГУСТ, 2026

Взлом хешей John the Ripper: полное руководство

11 мин.

2

Взлом хешей John the Ripper: полное руководство

164 млн хешей LinkedIn ломали через JtR. Пошаговый разбор: hashid, wordlist-атака, кастомные rules, утилиты *2john и CTF-лайфхаки с командами.

31 АВГУСТ, 2026