Раскрываем секретные функции: магия макросов в Burp Suite
Привет! Если ты думаешь, что знаешь всё о Burp Suite, я тебя удивлю! Этот мощный инструмент для тестирования веб-приложений скрывает в себе ещё больше возможностей, способных значительно упростить и ускорить работу. Сегодня мы изучим функционал макросов на практике и увидим, как они могут стать надежным помощником в процессе тестирования и анализа веб-приложений.
Немножко вводной информации
Совсем недавно я решал лабораторную работу "Обход 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 так умеет, очень удивился и решил поделиться с народом. Может, кто-то тоже не знал :)