# Burp

Открытые курсы по [Burp](https://portswigger.net/web-security/dashboard) от разработчиков.

**Структура сканера**

Процесс прохождения пакета и точки настройки

<div drawio-diagram="182"><img src="http://bobrobotirk.ru/uploads/images/drawio/2025-09/drawing-1-1758737210.png" alt=""/></div>

1. Входящий пакет попадает на proxy.
2. Происходит проверка совпадения со Scopes.
3. В случае совпадения отправляется в инструменты. Иначе отправляется обратно в Proxy.
4. Производится обработка, модификация пакета, далее отправляется обратно в Proxy
5. Пакет отправляется на выход в соответствии с правилами

**Настройки**

**Проект** Настройки бывают пользователя и проекта. Проект = данные + настройки. В Community Edition можно сохранить только настройки, данные придется получать каждый раз. Для каждого блока можно сохранить / загрузить настройки отдельно.

**Scopes**

**Site map.** Агрегация данных о структуре сайта. Раздел Display - расширенные инструменты фильтрации отображения, есть регулярки. Можно подсветить нужные запросы (ПКМ - highlight) и/или добавить комментарии, затем по ним отфильтровать. После применения Scopes, исключенные пакеты отображаются в сером цвете.

В Pro версии можно найти отличия между двумя Site Map.

**Scope.** Ограничение области действия (домен, папка, файлы). Файл в терминах Burp - например для запроса [http://one.ru/two/index.php](http://one.ru/two/index.php) будет index.php. Вариант настройки - запустить браузер и перейти в нем на нужный сайт. Все посещенные сайты в пределах текущей сессии отображаются в разделе Target-Site map

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/Io1image.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/Io1image.png)

ПКМ-Add to scope По умолчанию для нового проекта все посещенные страницы попадают в историю и другие инструменты. После добавления в scope будет задан вопрос - сохранять ли запросы вне scope. Можно включить обратно.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/Ls9image.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/Ls9image.png)

Есть обычный и расширенный режимы настройки scope. В обычном настраивается только префикс, в расширенном можно ограничить протокол и использовать регулярные выражения для определения сайта, порта, файла.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/TLKimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/TLKimage.png)

Страница попадает/исключается при полном совпадении условий.

Можем загрузить список из текстового файла без указания протокола, например в виде

```
web.cyber-ed.ru
wiki.cyber-ed.ru
www.cyber-ed.ru
```

В других разделах настраиваются более точные параметры для фильтрации. В разделе Project - Scope есть настройка Drop all out-of-scope requests. Если предыдущие настройки определяли правила попадания страниц в историю, то это блокирует запросы вне scope.

**Proxy**

В этом разделе есть 3 блока настроек: входящие параметры, перехват трафика и исходящие параметры.

Отправка трафика на другой прокси настраивается в разделе Network-Connections Поддерживаются http и socks. Пример настройки socks для TOR сети.

По умолчанию принимает локальные входящие соединения на 8080 порту http. Можно настроить в режиме прокси для внешних соединений. В Settings - Tools - Proxy нужно добавить Proxy Listeners. Это можно использовать для проксирования внешнего трафика.

**Обработка https запросов.** Нужно чтобы burp распаковывал трафик, предоставлял возможности модификации и обратно запаковывал трафик.

- Перейти в браузере по адресу [http://burp](http://burp) и скачать CA Certificate.
- Преобразовать сертификат ```
    openssl x509 -inform DER -in cacert.der -out cacert.pem
    ```
- Установить приложение и сертификат ```
    sudo apt install libnss3-tools
    certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "Burp Suite" -i cacert.pem
    ```
- Перезапустить браузер

Еще дополнительно можно настроить SSL pass-through в случае ошибки SSL

**"Незаметный proxy"** В случае отсутствия у клиента возможности работать через proxy. На клиенте в host файле меняем ссылку на нужный ресурс.

**Поиск и замена данных**

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/hvgimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/hvgimage.png)

Позволяет модифицировать запрос / ответ перед отправкой / возвратом.

**Перехват трафика**

Перейти во вкладку Proxy-&gt;Intercept

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/LQWimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/LQWimage.png)

Proxy используется в режимах выключенного и включенного перехвата. При включенном перехвате пакеты перед отправкой останавливаются и ожидают, в какой инструмент будут направлены. В разделе Raw можно редактировать данные.

[![изображение.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/izobrazenie.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/izobrazenie.png)

Включить Intercept и открыть браузер

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/Svuimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/Svuimage.png)

При включенном Intercept, при обращении к странице выводится запрос, и вариант - пропустить или блокировать. Доступна вкладка http history, где можно увидеть историю запросов и просмотреть запрос и ответ.

По умолчанию перехватываются запросы. Можно перехватывать ответы.

**Инструменты.**

Передача в инструмент копирует данные для анализа. Не отправляет данные дальше.

Repeater - ручной просмотр данных с возможностью редактирования

Intruder - для автоматизированной атаки. Работает по принципу подстановки элементов из словарей

Macros - можно выполнить предварительные действия

Decoder - модуль для кодирования JS скриптов для XSS атак. В связи с близостью XML и html разметки, это необходимо.

**Repeater**

Модификация http запросов

Перед отправкой, запрос можно модифицировать. Во вкладке http history будут запросы. правая кнопка - отправить в repeater позволяет скопировать запрос, модифицировать и отправить его.

**Intruder**

Пример подбора пароля. Общая идея:

<div drawio-diagram="189"><img src="http://bobrobotirk.ru/uploads/images/drawio/2025-09/drawing-1-1758903332.png" alt=""/></div>

<span style="text-decoration: underline;">Поиск нужного пакета</span>

Добавили в Scope адрес сайта, запустили Interception, перешли на страницу авторизации, отправили тестовые данные. В истории находим пакет, который отправлял запрос с логином и паролем:

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/a6simage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/a6simage.png)

Отправляем данный пакет в Intruder

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/K2Mimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/K2Mimage.png)

<span style="text-decoration: underline;">Указание типа атаки</span>

От типа атаки зависит дальнейшая настройка. Возможные атаки:

<table border="1" id="bkmrk-sniper-%D0%9E%D0%B4%D0%B8%D0%BD-%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C." style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 17.6584%;"></col><col style="width: 82.3416%;"></col></colgroup><tbody><tr><td>Sniper</td><td>Один словарь. Обычно используется с одной позицией. Когда позиций несколько - перебор такой:

П.1-Эл.1 П.2-значение по умолчанию ... До конца списка. Затем П.1-значение по умолчанию П.2- Эл.1 ... до конца списка. Т е количество запросов будет Длина списка Х Кол-во позиций. Значение по умолчанию - значение, прописанное между $ перед стартом атаки.

</td></tr><tr><td>Battering Ram</td><td>Один словарь. Каждый элемент размещается на всех позициях. Кол-во запросов = Длина списка.</td></tr><tr><td>Pitchfork</td><td>Для каждой позиции свой словарь. Элементы подставляются по очереди из каждого словаря последовательно. Т е Позиция 1: Словарь 1 элемент 1 Позиция 2: Словарь 2 элемент 1. Позиция 1: Словарь 1 элемент 2 Позиция 2: Словарь 2 элемент 2</td></tr><tr><td>Cluster Bomb</td><td>Для каждой позиции свой словарь. Перебираются все комбинации элементов для каждого словаря.</td></tr></tbody></table>

<span style="text-decoration: underline;">Настройка точек фаззинга</span>

Для настройки выделяем элемент и нажимаем Add. Вокруг появляется символ $.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/mCLimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/mCLimage.png)

<span style="text-decoration: underline;">Определение словаря подстановки</span>

Дальше интереснее. Можно использовать возможности Burp. Тогда настройка делается через интерфейс. Словарь определяется в разделе Payload. Есть ряд типов словарей, Simple - это простой список. Можно проводить дополнительную модификацию элементов словаря.

<span style="color: rgb(224, 62, 45);">Все методы в community версии медленно работают. Можно использовать [fuff clusterbomb](http://bobrobotirk.ru/books/informacionnaia-bezopasnost/page/fazzing "Фаззинг") для ускорения отправки запросов.</span>

**Sequencer**

Проверка степени случайности данных. Можно ли по некоторому количеству псевдослучайных данных сказать, насколько они случайны, или есть какая-то вычисляемая закономерность?

**Decoder**

Этот инструмент позволяет преобразовывать текст скрипта в закодированный текст, воспринимаемый системой как валидный текст для сохранения, но хранящий внутри исполняемый код. Например для преобразования строки

```
"><img src=x onerror=alert(1) />
```

нужно зайти в Decoder и нажать кнопку Encode as -&gt; HTML

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-09/scaled-1680-/hYXimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-09/hYXimage.png)

В результате появится второе поле ввода, в котором будет результат.

Обратное преобразование - используя Decode as.

**Comparer**

Сравнение запросов или ответов.

**Расширения**

Есть магазин расширений и API для создания собственных (Java, Python, Ruby). Для Python и Ruby требуется настройка окружения Java-...