Раскрываем секретные функции: магия макросов в Burp Suite
Привет! Если ты думаешь, что знаешь всё о Burp Suite, я тебя удивлю! Этот мощный инструмент для тестирования веб-приложений скрывает в себе ещё больше возможностей, способных значительно упростить и ускорить работу. Сегодня мы изучим функционал макросов на практике и увидим, как они могут стать надежным помощником в процессе тестирования и анализа веб-приложений.
Немножко вводной информации
P.S. Доступно в Pro версии*
Совсем недавно я решал лабораторную работу «Обход 2FA с помощью грубой силы» на PortSwigger’e, где было необходимо перед каждым запросом обновлять CSRF-Token. Безусловно, можно реализовать скрипт, который перед каждой итерацией будет делать GET запрос к нужной странице и парсить токен, например:
def get_csrf_token(text):
soup = BeautifulSoup(text, 'html.parser')
return soup.find('input', attrs={'name': 'csrf'})['value']
Но другим более элегантным вариантом является использование макросов.
Разбираем на практике
Итак, давайте посмотрим на описание задания:

Тут понятно. Рассмотрим логику работы авторизации.

GET /login → POST /login → GET /login2 → POST /login2
Стоить отметить, что при двух неудачных попытках ввода проверочного кода, нас редиректит на /login. Также важно учесть, что мы используем «одноразовый» CSRF токен перед каждым POST запросом, который получаем в ответе от сервера на GET /login и GET /login2:

Теперь мы знаем, что необходимо регулярно обновлять токен. С этой задачей нам помогут макросы.
Для этого перейдем в Project options → Sessions → Session Handling Rules → Add

Сразу выберем скоуп:

Теперь создадим новое правило «Run a macro»

Создадим макро, нажав на «Add»

В данном окне выбираем необходимую последовательность запросов. В нашем случае,- это GET /login POST /login GET /login2

На всякий случай, лучше убедиться, что всё работает, нажав на кнопку «Test macro»

Как видим, макрос успешно создан:

Теперь перейдем в Intruder и настроим его нужным образом



И запустим:

Бинго! Мы смогли автоматизировать достаточно нудный процесс. Стоит учитывать, что в данном примере, данный способ требует »4 запроса на 1 запрос», что значительно тормозит скорость выполнения задачи. В любом случае, данный функционал является очень удобным и полезным для автоматизации некоторых процессов. Удачи!
P.S. Когда узнал, что Burp так умеет, очень удивился и решил поделиться с народом. Может, кто-то тоже не знал :)
