
SignSaboteur — это расширение Burp Suite для редактирования, подписи и проверки различных подписанных веб-токенов.
SignSaboteur — это расширение Burp Suite для редактирования, подписи, проверки и атаки на подписанные токены. Оно поддерживает различные типы токенов: Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT и неизвестная подписанная строка.
Дополнительную информацию о расширении можно найти в блоге Portswigger Research — Introducing SignSaboteur: forge signed web tokens with ease.
Оно обеспечивает автоматическое обнаружение и встроенное редактирование токенов в HTTP-запросах/ответах и WebSocket-сообщениях, подпись токенов и автоматизацию атак методом перебора для реализаций подписанных токенов.
Расширение было вдохновлено расширениями JWT Token от Fraser Winterborn и Dolph Flynn. Исходный код можно найти здесь и здесь.
./gradlew jarsign-saboteur-1.0.6.jar в каталог build/libsExtensions, подвкладку Installed, нажав Add и загрузив JAR-файл
Представление списка слов позволяет импортировать файлы списков секретов и солей. Расширение имеет собственные предварительно собранные словарные списки. Большинство секретов взяты из jwt-secrets. В качестве опции можно использовать Flask-Unsign-Wordlist. Расширение поддерживает формат JSON-строк для специальных символов — для этого заключайте строку секрета в кавычки ".
Представление редактора поддерживает ряд подписанных токенов: Django, Dangerous, Flask, Express, OAuth2 и Tornado. Оно позволяет изменять подписанные токены в представлении HTTP-запросов/ответов Burp Suite в инструментах Proxy, History и Repeater.
Вкладка Dangerous может использоваться как для токенов Flask, так и для Django, которые выбираются в зависимости от того, обнаружен ли токен Dangerous или Django.
Вкладка Unknown может использоваться для перебора неизвестных подписанных строк. Режим угадывания работает только с атаками Balanced и Deep. Поддерживаются различные методы деривации сообщений, включая:
Предоставляется JSON-текстовый редактор для каждого компонента, содержащего JSON-контент:
Предоставляется редактор временных меток для каждого компонента, содержащего её:
Шестнадцатеричный редактор предоставляется для всех подписанных токенов, кроме подписей Express. ПРИМЕЧАНИЕ: Вкладка Express пока не поддерживает автоматическое обновление подписи. Пожалуйста, скопируйте её вручную в соответствующую cookie-подписи.
Подпись открывает диалог подписи, который можно использовать для обновления подписи, подписывая токен ключом из Представления ключей, имеющим возможности подписи.
Перебор попытается найти секретный ключ, использованный для генерации подписи. Если ключ найден, отобразится диалоговое окно.
Опция Перебор реализует три типа атак на подписи подписанных токенов:
Опция Атака реализует восемь известных атак авторизации на подписанные токены:
Более подробно они описаны ниже.
Все эти атаки могут использоваться вместе. Имейте в виду, что расширение не поддерживает модификацию полезной нагрузки токена в режиме атаки, поэтому ваша полезная нагрузка будет заменена новой.
Формат ID-токена OpenID Connect обычно используется библиотеками подписи для хранения информации об аутентифицированном пользователе. Расширение сгенерирует заполнитель для ID-токена пользователя admin.
То же, что и атака User claims, но помещает её в атрибут JSON user.
Ещё один распространённый способ хранения данных пользователя — атрибуты JSON username и password. Расширение сгенерирует заполнитель для пользователя admin.
Если информация о сессии аутентифицированного пользователя Flask хранится на стороне клиента, она должна включать атрибуты JSON id, _id, user_id или _user_id. Расширение сгенерирует сессию для первого пользователя, обычно admin.
Фреймворк Express использует атрибут JSON passport для хранения данных пользователя. Расширение сгенерирует заполнитель для пользователя admin.
Некоторые фреймворки могут использовать обёртку account для хранения информации об аутентифицированном пользователе. Для эксплуатации может потребоваться также использовать Authenticated claims.
Authenticated claims реализует 12 известных флагов авторизации.
Опция User access_token генерирует JWT OpenID Connect ID-токен, подписанный тем же ключом и тем же алгоритмом хеширования, без какой-либо деривации ключа.