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-запроса приложения:
Решение
Тестирование приложения с проверкой целостности затруднено, поскольку каждый автоматизированный инструмент, включая 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», как показано на рисунке:
Источник:https://www.notsosecure.com/automat...ations-with-integrity-checks-using-burpsuite/
Расширение 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:
- Ява
- питон
- Рубин
Для целей этого блога мы использовали язык программирования 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», как показано на рисунке:
Источник:https://www.notsosecure.com/automat...ations-with-integrity-checks-using-burpsuite/
Последнее редактирование: