
PoC simple en Python para verificar Citrix NetScaler ADC/Gateway por XSS reflejado CVE-2025-12101 en /cgi/logout usando un payload SAMLResponse + RelayState manipulado
PoC simple en Python para verificar instancias de Citrix NetScaler ADC / Gateway por CVE-2025-12101 (XSS reflejado en /cgi/logout) usando un payload manipulado SAMLResponse + RelayState.
⚠️ Usa esta herramienta solo en sistemas de tu propiedad o para los que tengas autorización explícita de prueba.
CVE-2025-12101 es una vulnerabilidad de Cross-Site Scripting reflejado que afecta a NetScaler ADC y NetScaler Gateway cuando se configuran como servidor virtual Gateway o AAA.
En configuraciones vulnerables, el endpoint /cgi/logout procesa respuestas de cierre de sesión SAML y puede reflejar datos controlados por el atacante desde el parámetro RelayState sin la codificación adecuada, lo que provoca XSS.
La investigación y los detalles técnicos provienen de watchTowr Labs:
Este repositorio proporciona un verificador mínimo en Python con TLS puro que envía el mismo tipo de payload e inspecciona la respuesta HTTP.
Clona el repositorio:
git clone https://github.com/6h4ack/CVE-2025-12101-checker.git
cd CVE-2025-12101-checker
Asegúrate de tener Python 3 instalado.
El script principal acepta un único parámetro requerido: -u / --url.
python3 cve-2025-12101.py -u https://www.example.com
También válido:
python3 cve-2025-12101.py -u www.example.com
python3 cve-2025-12101.py -u http://www.example.com
La URL se normaliza internamente; el script extrae el nombre de host y puerto (por defecto 443 para HTTPS y 80 para HTTP).
Ejemplo (para un objetivo vulnerable):
[*] 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)'
Para un objetivo no vulnerable, verás algo como:
[INFO] No XSS behaviour detected on www.example.com with this payload.
Se utilizan colores ANSI para facilitar la visualización del resultado en la terminal (verde para vulnerable, rojo para no vulnerable / condiciones de error).