
XSRFProbe v3.0.0
Инструментарий Prime для аудита и эксплуатации межсайтовой подделки запросов (CSRF).
XSRFProbe
Основной инструмент для аудита и эксплуатации межсайтовой подделки запросов.
О программе
XSRFProbe — это продвинутый инструментарий для аудита и эксплуатации межсайтовой подделки запросов (CSRF/XSRF). Оснащённый мощным движком сканирования и множеством систематических проверок, он способен обнаруживать большинство случаев уязвимостей CSRF, связанных с ними обходов, а также генерировать эксплуатируемые proof of concept для каждой найденной уязвимости. Дополнительная информация о работе XSRFProbe приведена в разделе XSRFProbe Internals на вики.
Вики XSRFProbe • Начало работы • Общее использование • Расширенное использование • Внутреннее устройство XSRFProbe • Галерея
Некоторые возможности
- Выполняет полный набор систематических проверок — основанных на движке сравнения ответов/бенчмаркинга — перед тем как объявить конечную точку уязвимой.
- Обнаруживает и активно вмешивается в различные реализации анти-CSRF токенов: переключение метода запроса, удаление токена, пустые/дублированные значения, токены, не привязанные к сессии, double-submit cookies и токены в пользовательских заголовках.
- Проверяет валидацию Referer и Origin с использованием реальных обходов (удаление заголовка, трюки с регулярными выражениями/поддоменами,
Origin: null), а также обходы через переопределение метода и Content-Type. - Анализирует защиту SameSite cookies, с опциональным перечислением поддоменов (через crt.sh) для тестирования обхода через смежные домены.
- Работает с мощным сканером, обеспечивающим детерминированное ограниченное сканирование (настраивается через
--max-urls,--max-depthи--crawl-timeout). - Опциональная интеграция headless Firefox (Selenium) для браузерозависимых тестов и автоматической валидации сгенерированных PoC.
- Точное обнаружение стойкости токена и анализ с использованием проверок энтропии и кодирования.
- Может генерировать как обычные, так и вредоносные эксплуатационные proof of concept для CSRF.
- Из коробки поддерживает пользовательские значения cookies, общие заголовки и отчёт в формате JSON — каждая находка содержит оценку серьёзности и условие эксплуатации.
- Пользователь контролирует всё, что делает сканер.
- Удобная среда взаимодействия с полной поддержкой подробного вывода и детальным логированием ошибок, уязвимостей и токенов.
Выполняемые проверки уязвимостей:
У каждой проверки XSRFProbe есть уникальный идентификатор. ID отображается в выводе консоли (например, [T6] VULNERABLE: ...) и сохраняется как поле test_id каждой находки в JSON-отчёте (наряду с её severity и, где применимо, примечанием об exploitability в поле details), так что каждая находка ссылается на конкретную проверку, которая её породила.
| ID | Категория | Проверка |
|---|---|---|
D1 | Наличие токена | Отсутствует анти-CSRF токен (общая подделка запроса) |
D2 | Наличие токена | Форма входа не имеет CSRF-токена (login CSRF) |
T2 | Манипуляция токеном | Валидация привязана к методу запроса (переключение GET ↔ POST) |
T3 | Манипуляция токеном | Токен можно полностью опустить |
T4 | Манипуляция токеном | Токен не привязан к сессии пользователя (воспроизведение между сессиями) |
T5 | Манипуляция токеном | Токен привязан к cookie, не связанной с сессией (например, csrfKey) |
T6 | Манипуляция токеном | Наивный double-submit cookie (cookie == тело, без привязки) |
T7 | Манипуляция токеном | Принимается пустое значение токена |
T8 | Манипуляция токеном | Токен в пользовательском заголовке может быть опущен или подделан |
M1 | Метод / Content-Type | Переопределение HTTP-метода через параметр _method |
M2 | Метод / Content-Type | Переопределение HTTP-метода через заголовок X-HTTP-Method-Override |
M4 | Метод / Content-Type | Обход валидации через альтернативный Content-Type |
R0 | Referer | Заголовок Referer не проверяется при отправке формы |
R1 | Referer | Обход валидации Referer путём удаления заголовка |
R2a | Referer | Обход регулярного выражения Referer — цель как поддомен атакующего |
R2b | Referer | Обход регулярного выражения Referer — цель в строке запроса |
R2c | Referer | Обход регулярного выражения Referer — цель в пути |
O1 | Origin | Обход валидации Origin с помощью Origin: null |
O2 | Origin | Обход валидации Origin с помощью трюка с поддоменом |
O3 | Origin | Обход валидации Origin путём удаления заголовка |
S2 | SameSite (браузер) | Обход SameSite=Strict через клиентский перенаправляющий гаджет |
S3 | SameSite (браузер) | Обход SameSite=Strict через XSS на смежном поддомене |
S4 | SameSite (браузер) | Обход SameSite=Lax через обновление cookie/OAuth-поток |
C1 | Состояние cookie | Анализ атрибута SameSite cookie (None/Lax/Strict) |
C2 | Состояние cookie | Атрибут SameSite не установлен для cookies |
E1 | Стойкость токена | Токен использует слабое/структурированное хэш-кодирование |
A1 | Стойкость токена | Анализ предсказуемости/возможности подделки токена после сканирования |
Проверки
S*требуют опциональной интеграции headless-браузера (--browser). ПроверкиT*/M*/R*/O*— это проверки на уровне HTTP, управляемые движком сравнения ответов/бенчмаркинга.
Галерея
Давайте посмотрим на несколько реальных сценариев работы XSRFProbe:
Установка и использование
Полную информацию по использованию см. на вики — Общее использование и Расширенное использование.
Установка через Pypi:
XSRFProbe можно легко установить одной командой:
pip install xsrfprobe
Установка вручную:
- Для начала установите инструмент:
pip install .
- Теперь инструмент можно запустить через:
xsrfprobe --help
- Браузерозависимые тесты (
--browser,--auto-validate-poc) дополнительно требуют, чтобы geckodriver был доступен в вашемPATH(или указан через--geckodriver-path). - После тестирования XSRFProbe на сайте в вашей текущей рабочей директории создаётся папка
xsrfprobe-output. В этой папке можно просмотреть подробные логи и информацию, собранную во время сканирования (передайте--jsonдля машинно-читаемого отчёта).
Версия и лицензия
XSRFProbe в настоящее время имеет версию v3.0.0, работа лицензирована в соответствии с GNU General Public License (GPLv3).
Предупреждения
Не используйте этот инструмент на реальном сайте!
Это связано с тем, что инструмент предназначен для автоматического выполнения всевозможных отправок форм, что может навредить сайту. Иногда вы можете испортить базу данных и, скорее всего, вызвать DoS на сайте.
Тестируйте на disposable/тестовом сайте!
Отказ от ответственности
Использование XSRFProbe для тестирования веб-сайтов без предварительного взаимного согласия может рассматриваться как незаконная деятельность. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Автор не несёт ответственности и не отвечает за любое неправомерное использование или ущерб, причинённый этой программой.
Слова автора
Этот проект основан исключительно на моих собственных исследованиях и моём собственном опыте работы с веб-приложениями по атакам типа Cross-Site Request Forgery. Вы можете просмотреть исходный код, чтобы лучше понять, как был создан этот инструментарий. Полезные запросы на слияние, идеи и проблемы приветствуются. Если вы хотите увидеть, как разрабатывается XSRFProbe, загляните на Доску разработки.
Создано с ♡ от @0xInfection