• Аудит Информационной Безопасности от Кодебай Пентест

    Кодебай Пентест — одна из сильнейших Red Team в RU сегменте. Команда профессионалов, специализирующаяся на аудите информационных систем и тестировании на проникновение.

    Мы предлагаем: Аудит безопасности веб-сайта компании, Аудит безопасности внешнего периметра, Аудит безопасности веб-приложения, Аудит безопасности внутренней корпоративной сети, Проверка ИБ-грамотности сотрудников, Анализ кода ПО, Аудит Wi-Fi и СКУД, Выявление уязвимостей ПО серверов и рабочих станций, Пентест инфраструктуры методом черного ящика. Узнать подробнее ...

    *Только для юрлиц

  • Приглашаем на KubanCTF

    Старт соревнований 14 сентября в 10:00 по москве

    Ссылка на регистрацию в соревнованиях Kuban CTF: kubanctf.ru

    Кодебай является технологическим партнером мероприятия

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

Во время одного из наших недавних заданий по тестированию на проникновение веб-приложений столкнулся со сценарием, в котором приложение использовало проверку целостности содержимого 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:

  • Ява
  • питон
  • Рубин
Оставайтесь на линии! Прежде чем идти дальше, ознакомьтесь с « », чтобы понять основы процесса расширения 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


Источник:
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!