Раскрываем секретные функции: магия макросов в 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 так умеет, очень удивился и решил поделиться с народом. Может, кто-то тоже не знал :)