Расширение для получения и замены токенов аутентификации
Введение
В мире тестирования безопасности веб-приложений автоматизация является ключевым фактором, и Burp Suite — выбор номер один. Однако, чтобы по-настоящему использовать возможности Burp для автоматического сканирования, нужны правильные плагины. Здесь на помощь приходит ATOR. Этот плагин с открытым исходным кодом для Burp предназначен для революционного улучшения возможностей сканирования путем упрощения управления токенами и их замены в различных сценариях, включая:
- Управление токенами доступа и обновления
- Замена токенов в телах запросов XML и JSON
- Замена токенов в URL и cookie
Традиционно для выполнения этих задач требовались сложные макросы, правила сессий или пользовательские расширения, особенно при работе с JSON или XML. Наш плагин упрощает этот процесс, предлагая несколько ключевых преимуществ:
Ключевые преимущества:
- Замена токенов в памяти: устраните дублирующиеся запросы на вход в систему, легко заменяя токены в памяти, что повышает эффективность сканирования.
- Удобный интерфейс: легко извлекайте данные из ответных сообщений и заменяйте их в запросах с помощью регулярных выражений. Эта гибкость неоценима для различных сценариев, включающих JSON, XML, данные форм и многое другое.
- Повышенная скорость сканирования: достигайте более высокой скорости сканирования, избегая ненужных запросов на вход. Плагин использует механизм «Trigger Request» для выявления ошибочных состояний, например, код ответа 401 с телом, содержащим «Unauthorized request».
Вдохновением для создания плагина послужил плагин ExtendedMacro: https://github.com/FrUh/ExtendedMacro
Начало работы
Чтобы использовать этот плагин, выполните следующие действия:
- Установите Java и Maven.
- Клонируйте этот репозиторий.
- Выполните команду «mvn clean install» в каталоге клонированного репозитория, где находится pom.xml.
- Возьмите сгенерированный JAR-файл с зависимостями из папки «target».
Предварительные требования
Перед использованием плагина убедитесь в следующем:
- На вашем компьютере настроена среда Java.
- Настройте Burp Suite на прослушивание прокси-трафика.
- Настройте среду Java на вкладке «Extender» в Burp.
Для использования с тестовым приложением (установите это тестовое приложение (Tiredful application) с https://github.com/payatu/Tiredful-API)
Шаги
- Определите запрос, который вызывает ошибку.
- Определите шаблон ошибки (подробности в разделе ниже).
- Получите данные из ответа с помощью регулярного выражения (см. примеры регулярных выражений).
- Замените эти данные в запросе (используйте то же регулярное выражение, что и на шаге 3, вместе с именем переменной).
Шаблон ошибки:
Всего существует 4 различных способа указать условие ошибки:
- Код состояния: 401, 400
- Ошибка в теле: укажите любой текст из содержимого тела (Пример: Access token expired)
- Ошибка в заголовке: укажите любой текст из заголовка (Пример: Unauthorized)
- Свободная форма: используйте для указания нескольких условий (st=400 && bd=Access token expired || hd=Unauthorized)
Разбор сквозных тестов
- Поиск неверного запроса:
- http://HOST:PORT/api/v1/exams/MQ==/ с неверным Bearer токеном.
- Определение шаблона ошибки:
- Вышеуказанный запрос вернет 401, условие ошибки — Status Code = 401.
- Сопоставление регулярного выражения с данными запроса:
- Authorization: Bearer \w* — это регулярное выражение соответствует переданному токену доступа.
- Замена — как заменить:
- Замените совпавший текст (регулярное выражение из шага 3) на извлеченное значение (конфигурация извлечения описана ниже, скажем, имя переменной «token»).
- Authorization: Bearer token — извлеченный токен будет заменен.
Использование с тестовым приложением
Идея: Запишите запросы приложения Tiredful в Burp, настройте расширение ATOR, проверьте, заменяется ли токен с помощью ATOR.
- Откройте тестовое приложение в браузере, настроенном с Burp.
- Сгенерируйте токен с http://HOST:PORT/handle-user-token/
- Отправьте запрос http://HOST:PORT/api/v1/exams/MQ==/, передав токен Bearer из предыдущего шага.
- Добавьте JAR-файл ATOR как расширение в Burp.
- Щелкните правой кнопкой мыши по запросу (/handle-user-token) в истории прокси и отправьте его в Authentication Token Obtain and Replace Extender.
- Добавьте новую запись в конфигурацию извлечения, выбрав значение «access_token», и дайте ему имя «token» (может быть любым).
Примечание: для этого приложения достаточно одного запроса для генерации токена. Токен также может генерироваться после нескольких запросов.
- УСЛОВИЕ ТРИГГЕРА:
- Шаги макроса будут выполнены, если условие совпадает.
- После выполнения шагов замените входящий запрос, используя значения из «Pattern» и «Replacement Area», если они указаны.
- Для нашего теста:
- Условие ошибки: 401 (код состояния).
- Pattern: «Authorization: Bearer \w*» (укажите шаблон регулярного выражения, как вы хотите заменить на извлеченные значения).
- Replacement Area: «Authorization: Bearer <ИМЯ, которое вы указали на ШАГЕ 4>».
- Нажмите кнопку «Add».
- Для этого примера достаточно одной замены, чтобы сделать входящий запрос валидным, но вы можете добавить несколько замен для одного условия.
- Отправьте неверный запрос из Repeater и проверьте потоки запросов/ответов в FLOW/Logger++.
- Неверный токен Bearer (http://HOST:PORT/api/v1/exams/MQ==/) из Repeater вызовет ответ 401.
- Расширение сопоставит это условие и начнет выполнять записанные шаги, извлекая «access_token».
- Заменит токен доступа (из шага ii) в фактическом ответе (из Repeater) и сделает этот неверный запрос валидным.
- В консоли Repeater вы увидите ответ 200 OK.
- Повторите шаг 7 и проверьте поток.
- На этот раз расширение не будет вызывать шаги, так как существующий токен действителен, и будет использован он.
Разработано с использованием
- SWING — используется для добавления панели
Вклад в проект
Прочтите CONTRIBUTING.md для получения информации о нашем кодексе поведения и порядке отправки pull-запросов.
Версионирование
v2.3.0
Авторы
Synopsys
Лицензия
Это программное обеспечение выпущено компанией Synopsys под лицензией MIT.
Благодарности
- https://github.com/FrUh/ExtendedMacro
ExtendedMacro стал отличной отправной точкой — мы модифицировали интерфейс для работы с более сложными сценариями. Мы также исправили ошибки и повысили скорость за счет замены токенов в памяти.