
Простой Python PoC для проверки Citrix NetScaler ADC/Gateway на CVE-2025-12101 отражённую XSS на /cgi/logout с использованием специально сформированного SAMLResponse + RelayState payload
Простой Python PoC для проверки экземпляров Citrix NetScaler ADC / Gateway на CVE-2025-12101 (отраженный XSS на /cgi/logout) с использованием специально сформированной полезной нагрузки SAMLResponse + RelayState.
⚠️ Используйте этот инструмент только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
CVE-2025-12101 — это уязвимость отраженного межсайтового скриптинга (XSS), затрагивающая NetScaler ADC и NetScaler Gateway при настройке в качестве шлюза или виртуального сервера AAA.
При уязвимых конфигурациях конечная точка /cgi/logout обрабатывает ответы SAML logout и может отражать данные, контролируемые атакующим, из параметра RelayState без надлежащего кодирования, что приводит к XSS.
Исследование и технические детали предоставлены watchTowr Labs:
Этот репозиторий предоставляет минимальный raw-TLS Python-проверщик, который отправляет полезную нагрузку того же типа и анализирует HTTP-ответ.
Клонируйте репозиторий:
git clone https://github.com/6h4ack/CVE-2025-12101-checker.git
cd CVE-2025-12101-checker
Убедитесь, что у вас установлен Python 3.
Основной скрипт принимает один обязательный параметр: -u / --url.
python3 cve-2025-12101.py -u https://www.example.com
Также допустимо:
python3 cve-2025-12101.py -u www.example.com
python3 cve-2025-12101.py -u http://www.example.com
URL нормализуется внутренне; скрипт извлекает имя хоста и порт (по умолчанию 443 для HTTPS и 80 для HTTP).
Пример (для уязвимой цели):
[*] Testing target: www.example.com:443
===== RAW HTTP RESPONSE BEGIN =====
HTTP/1.1 302 Object Moved
Content-Type: text/html
...
<script>alert(1)</script>
...
===== RAW HTTP RESPONSE END =====
[+] HTTP status code: 302
[+] Payload '<script>alert(1)</script>' reflected: True
[VULNERABLE] XSS confirmed on www.example.com with payload '<script>alert(1)</script)'
Для неуязвимой цели вы увидите что-то вроде:
[INFO] No XSS behaviour detected on www.example.com with this payload.
Используются ANSI-цвета для упрощения восприятия результата в терминале (зеленый для уязвимых, красный для неуязвимых / ошибочных состояний).