Гостевая статья Автоматизация пентестов для приложений с проверками целостности с использованием пользовательского расширения Burp Suite

  • Автор темы Автор темы Zer0must2b
  • Дата начала Дата начала

Zer0must2b

Green Team
23.06.2019
306
141
Во время одного из наших недавних заданий по тестированию на проникновение веб-приложений @realsanjay столкнулся со сценарием, в котором приложение использовало проверку целостности содержимого HTTP-запроса. Проверка целостности поддерживалась с использованием настраиваемого заголовка HTTP, в котором хранится HMAC содержимого HTTP-запроса на основе специфичных для сеанса токенов CSRF. Любое изменение в HTTP-запросе приведет к ответу об ошибке HTTP «499 Unknown».

Расширение Burp для тестирования приложения, добавляющее проверку целостности через пользовательский заголовок HTTP с HMAC запроса.

Постановка задачи
Чтобы протестировать такое приложение или изменить его содержимое запроса в Proxy, Repeater, Intruder или Scanner Burp, требуется пересчитать HMAC содержимого запроса. Также требуется, чтобы HMAC в настраиваемом заголовке захваченного HTTP-запроса был изменен, а затем этот запрос был отправлен на сервер.

Анализ проблем
Прежде чем идти дальше, давайте разберемся с деталями проверки целостности HTTP-запроса приложения:

  • Приложение получает специфичные для сеанса токены CSRF как часть успешного входа в систему.
  • Для каждого запроса после аутентификации вы будете наблюдать, что HMAC рассчитывается. Куда,
    • Данные = Запросить URL + Данные POST
    • Ключ = CSRF токен
    • HMAC = (Данные, Ключ)
  • HMAC передается как пользовательский HTTP-заголовок «X-V3-HMAC» в HTTP-запросах.
  • Сервер проверяет HMAC по содержимому, переданному в HTTP-запросе, на основе токена CSRF для конкретного сеанса, сгенерированного во время успешного входа в приложение.
  • Любое изменение, выполненное в запросе в Burp Suite, приводит к ответу «499 Unknown», как показано на рисунке:

1.Basic_Request.png


Решение
Тестирование приложения с проверкой целостности затруднено, поскольку каждый автоматизированный инструмент, включая Burp Suite, не сможет обеспечить плодотворные результаты, полученные в противном случае. Чтобы справиться с этой ситуацией, мы попытались создать решение с использованием расширения Burp.

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

  • Ява
  • питон
  • Рубин
Оставайтесь на линии! Прежде чем идти дальше, ознакомьтесь с « Writing your first Burp Suite extension », чтобы понять основы процесса расширения Burp Suite.

Для целей этого блога мы использовали язык программирования Java для создания расширения Burp для вышеупомянутой проблемы.

Шаги для создания расширения Burp упомянуты ниже:

Шаг 1. Чтобы создать расширение Burp с использованием Java, необходимо, чтобы файлы интерфейса API расширения Burp были сохранены в каталоге (в нашем случае это CustomExtension), как показано на рисунке:

2Overriding_iHandling.png


Шаг 2: Чтобы создать расширение Burp, создайте файл «BurpExtender.java» в каталоге «burp» (он находится внутри каталога, созданного на предыдущем шаге). Чтобы создать расширение Burp, которое работает для Proxy, Repeater, Scanner, Intruder и т. Д., Требуется, чтобы интерфейс «ISessionHandlingAction», а также два его метода «getActionName» и «executeAction» были переопределены, как показано на рисунке:

3Ihandler.png


Шаг 3: Чтобы пересчитать HMAC (X-V3-HMAC), мы захватили токен CSRF, данные HMAC и POST из HTTP-запроса. Это было достигнуто с помощью кода, как показано ниже:


4capturinghmacpostandcsrf.png



Шаг 4. После сбора данных из HTTP-запроса, который используется для генерации HMAC (X-V3-HMAC), мы пересчитали HMAC, используя следующий код.


5Recalculate-HMAC.png


Шаг 5: Замените вновь сгенерированное значение HMAC старым значением HMAC HTTP-запроса, как показано на рисунке:

6ReplaceNewWithold-1.png


Шаг 6: Для развертывания расширения нам нужен один файл JAR. Чтобы скомпилировать расширение Burp и создать из него файл jar, используйте следующую команду:

Код:
mkdir build
javac -d build burp/*.java
jar cf hmac.jar -C build burp

7Complieapplication.png


Шаг 7: Чтобы запустить это расширение, добавьте вновь созданный файл jar (hmac.jar) в список расширений, как показано на рисунке :

8AccessHMACjar.png



Шаг 8: Чтобы использовать это расширение для Burp Repeater, Scanner и Intruder, нам нужно добавить «Правила обработки сеансов», как показано на рисунке:

Примечание. Чтобы получить собственное имя расширения в раскрывающемся списке «Обработчик действия расширения» в качестве опции, расширение Burp должно реализовать метод «ISessionHandlingAction», как показано в шаге 2 .

9Loadinextension.png



Шаг 9: После сохранения нового расширения правила, как показано на предыдущем шаге , мы можем выбрать необходимую информацию на вкладке Область действия, как показано в пункте 2 на рисунке ниже, новое правило обработки сеанса создано, как показано в пункте 5 на рисунке ниже, и запустите наше расширение Burp для «Target, Scanner, Repeater, Intruder, Sequencer» для URL в Scope.

Примечание: вы можете изменить область согласно требованию.

10SettingYourScope.png


Вывод:
В результате развернутого расширения в дальнейшем при любом изменении HTTP-запроса в Target, Intruder, Repeater, Sequencer или Scanner расширение будет повторно вычислять HMAC (X-V3-MAC) на основе измененного значения, а затем пересылать запрос к серверу приложений. Сервер приложений примет запрос и ответит «200 OK», как показано на рисунке:

11Conclusionmessagesent.png


Источник:https://www.notsosecure.com/automat...ations-with-integrity-checks-using-burpsuite/
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab