Во время одного из наших недавних заданий по тестированию на проникновение веб-приложений
Расширение Burp для тестирования приложения, добавляющее проверку целостности через пользовательский заголовок HTTP с HMAC запроса.
Постановка задачи
Чтобы протестировать такое приложение или изменить его содержимое запроса в Proxy, Repeater, Intruder или Scanner Burp, требуется пересчитать HMAC содержимого запроса. Также требуется, чтобы HMAC в настраиваемом заголовке захваченного HTTP-запроса был изменен, а затем этот запрос был отправлен на сервер.
Анализ проблем
Прежде чем идти дальше, давайте разберемся с деталями проверки целостности HTTP-запроса приложения:
Решение
Тестирование приложения с проверкой целостности затруднено, поскольку каждый автоматизированный инструмент, включая Burp Suite, не сможет обеспечить плодотворные результаты, полученные в противном случае. Чтобы справиться с этой ситуацией, мы попытались создать решение с использованием расширения Burp.
Существует несколько языков программирования, которые поддерживают создание расширений Burp:
Для целей этого блога мы использовали язык программирования Java для создания расширения Burp для вышеупомянутой проблемы.
Шаги для создания расширения Burp упомянуты ниже:
Шаг 1. Чтобы создать расширение Burp с использованием Java, необходимо, чтобы файлы интерфейса API расширения Burp были сохранены в каталоге (в нашем случае это CustomExtension), как показано на рисунке:
Шаг 2: Чтобы создать расширение Burp, создайте файл «BurpExtender.java» в каталоге «burp» (он находится внутри каталога, созданного на предыдущем шаге). Чтобы создать расширение Burp, которое работает для Proxy, Repeater, Scanner, Intruder и т. Д., Требуется, чтобы интерфейс «ISessionHandlingAction», а также два его метода «getActionName» и «executeAction» были переопределены, как показано на рисунке:
Шаг 3: Чтобы пересчитать HMAC (X-V3-HMAC), мы захватили токен CSRF, данные HMAC и POST из HTTP-запроса. Это было достигнуто с помощью кода, как показано ниже:
Шаг 4. После сбора данных из HTTP-запроса, который используется для генерации HMAC (X-V3-HMAC), мы пересчитали HMAC, используя следующий код.
Шаг 5: Замените вновь сгенерированное значение HMAC старым значением HMAC HTTP-запроса, как показано на рисунке:
Шаг 6: Для развертывания расширения нам нужен один файл JAR. Чтобы скомпилировать расширение Burp и создать из него файл jar, используйте следующую команду:
Шаг 7: Чтобы запустить это расширение, добавьте вновь созданный файл jar (hmac.jar) в список расширений, как показано на рисунке :
Шаг 8: Чтобы использовать это расширение для Burp Repeater, Scanner и Intruder, нам нужно добавить «Правила обработки сеансов», как показано на рисунке:
Примечание. Чтобы получить собственное имя расширения в раскрывающемся списке «Обработчик действия расширения» в качестве опции, расширение Burp должно реализовать метод «ISessionHandlingAction», как показано в шаге 2 .
Шаг 9: После сохранения нового расширения правила, как показано на предыдущем шаге , мы можем выбрать необходимую информацию на вкладке Область действия, как показано в пункте 2 на рисунке ниже, новое правило обработки сеанса создано, как показано в пункте 5 на рисунке ниже, и запустите наше расширение Burp для «Target, Scanner, Repeater, Intruder, Sequencer» для URL в Scope.
Примечание: вы можете изменить область согласно требованию.
Вывод:
В результате развернутого расширения в дальнейшем при любом изменении HTTP-запроса в Target, Intruder, Repeater, Sequencer или Scanner расширение будет повторно вычислять HMAC (X-V3-MAC) на основе измененного значения, а затем пересылать запрос к серверу приложений. Сервер приложений примет запрос и ответит «200 OK», как показано на рисунке:
Источник:
Ссылка скрыта от гостей
столкнулся со сценарием, в котором приложение использовало проверку целостности содержимого 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», как показано на рисунке:
Решение
Тестирование приложения с проверкой целостности затруднено, поскольку каждый автоматизированный инструмент, включая Burp Suite, не сможет обеспечить плодотворные результаты, полученные в противном случае. Чтобы справиться с этой ситуацией, мы попытались создать решение с использованием расширения Burp.
Существует несколько языков программирования, которые поддерживают создание расширений Burp:
- Ява
- питон
- Рубин
Ссылка скрыта от гостей
», чтобы понять основы процесса расширения Burp Suite.Для целей этого блога мы использовали язык программирования Java для создания расширения Burp для вышеупомянутой проблемы.
Шаги для создания расширения Burp упомянуты ниже:
Шаг 1. Чтобы создать расширение Burp с использованием Java, необходимо, чтобы файлы интерфейса API расширения Burp были сохранены в каталоге (в нашем случае это CustomExtension), как показано на рисунке:
Шаг 2: Чтобы создать расширение Burp, создайте файл «BurpExtender.java» в каталоге «burp» (он находится внутри каталога, созданного на предыдущем шаге). Чтобы создать расширение Burp, которое работает для Proxy, Repeater, Scanner, Intruder и т. Д., Требуется, чтобы интерфейс «ISessionHandlingAction», а также два его метода «getActionName» и «executeAction» были переопределены, как показано на рисунке:
Шаг 3: Чтобы пересчитать HMAC (X-V3-HMAC), мы захватили токен CSRF, данные HMAC и POST из HTTP-запроса. Это было достигнуто с помощью кода, как показано ниже:
Шаг 4. После сбора данных из HTTP-запроса, который используется для генерации HMAC (X-V3-HMAC), мы пересчитали HMAC, используя следующий код.
Шаг 5: Замените вновь сгенерированное значение HMAC старым значением HMAC HTTP-запроса, как показано на рисунке:
Шаг 6: Для развертывания расширения нам нужен один файл JAR. Чтобы скомпилировать расширение Burp и создать из него файл jar, используйте следующую команду:
Код:
mkdir build
javac -d build burp/*.java
jar cf hmac.jar -C build burp
Шаг 7: Чтобы запустить это расширение, добавьте вновь созданный файл jar (hmac.jar) в список расширений, как показано на рисунке :
Шаг 8: Чтобы использовать это расширение для Burp Repeater, Scanner и Intruder, нам нужно добавить «Правила обработки сеансов», как показано на рисунке:
Примечание. Чтобы получить собственное имя расширения в раскрывающемся списке «Обработчик действия расширения» в качестве опции, расширение Burp должно реализовать метод «ISessionHandlingAction», как показано в шаге 2 .
Шаг 9: После сохранения нового расширения правила, как показано на предыдущем шаге , мы можем выбрать необходимую информацию на вкладке Область действия, как показано в пункте 2 на рисунке ниже, новое правило обработки сеанса создано, как показано в пункте 5 на рисунке ниже, и запустите наше расширение Burp для «Target, Scanner, Repeater, Intruder, Sequencer» для URL в Scope.
Примечание: вы можете изменить область согласно требованию.
Вывод:
В результате развернутого расширения в дальнейшем при любом изменении HTTP-запроса в Target, Intruder, Repeater, Sequencer или Scanner расширение будет повторно вычислять HMAC (X-V3-MAC) на основе измененного значения, а затем пересылать запрос к серверу приложений. Сервер приложений примет запрос и ответит «200 OK», как показано на рисунке:
Источник:
Ссылка скрыта от гостей
Последнее редактирование: