CVE-2025-5777 Exploit de fuga de memoria en Citrix NetScaler
[!WARNING]
Este script está destinado exclusivamente a fines educativos y de investigación. No lo utilices contra sistemas sin permiso explícito. El acceso o las pruebas no autorizadas son ilegales y poco éticas. Lee el AVISO LEGAL completo antes de usar este script.
Resumen
Este proyecto demuestra una vulnerabilidad de fuga de memoria (CVE-2025-5777) encontrada en los dispositivos Citrix NetScaler. La vulnerabilidad se debe al manejo inadecuado de memoria no inicializada al analizar datos POST malformados, en particular el parámetro login. Es ampliamente conocida como CitrixBleed 2 por su gran parecido con la infame CVE-2023-4966 (CitrixBleed original), que fue explotada masivamente en 2023.
Cuando el campo login se incluye sin un signo igual ni valor, una parte de la memoria de pila no inicializada se devuelve dentro de la etiqueta <InitialValue> en la respuesta XML.

Datos filtrados: Cada solicitud HTTP puede filtrar aproximadamente 127 bytes de contenido de la RAM. Al repetir estas solicitudes, los atacantes pueden recopilar datos confidenciales de la memoria, que pueden incluir:
- Tokens de sesión (que permiten el secuestro de sesión y la omisión de MFA).
- Datos de autenticación.
- Partes de solicitudes HTTP anteriores.
- Credenciales en texto plano.
- Otra información confidencial.
Uso del script
Requisitos / Dependencias
pip3 install aiohttp colorama
Ejecutar el script
python3 exploit.py <URL> [options]
Opciones de línea de comandos
positional arguments:
url Base URL (e.g., http://target.com)
optional arguments:
-h, --help Show help message
-v, --verbose Enable debug output
-p, --proxy PROXY HTTP proxy URL (e.g., http://127.0.0.1:8080)
-t, --threads N Number of concurrent threads (default: 10)
-d, --delay SECONDS Delay between request batches in seconds (default: 1.0)
--max-requests N Maximum number of requests to send (default: unlimited)
-e, --endpoints PATH Additional endpoints to test (can specify multiple)
--no-save Don't save data to files on exit
Ejemplos
Uso básico:
python3 exploit.py http://target.com
Modo verboso con proxy:
python3 exploit.py http://target.com -v -p http://127.0.0.1:8080
Alta concurrencia con limitación de velocidad:
python3 exploit.py http://target.com -t 20 -d 0.5
Solicitudes limitadas con múltiples endpoints:
python3 exploit.py http://target.com --max-requests 1000 -e /p/u/doAuthentication.do /api/auth
Ayuda:
Características avanzadas
Esta versión mejorada incluye:
🔍 Detección de patrones
- Detecta automáticamente tokens de sesión (patrones NSC_*, NSC_TASS, NSC_AAAC)
- Identifica credenciales (usuario:contraseña, autenticación básica)
- Encuentra direcciones IP, direcciones de correo electrónico, URLs
- Detecta Base64, cadenas hexadecimales, datos JSON
- Resalta patrones en la salida de volcado hexadecimal
📊 Seguimiento de estadísticas
- Visualización de estadísticas en tiempo real
- Tasa de éxito, tasa de fuga, seguimiento de errores
- Contador de bytes filtrados
- Detección de fugas únicas (hash MD5)
- Conteo de detección de patrones
💾 Recopilación y exportación de datos
- Guardado automático de datos al salir (Ctrl+C)
- Exportación JSON con metadatos completos
- Exportación CSV para análisis en hojas de cálculo
- Archivo separado de tokens de sesión
- Archivo de texto con fugas sin procesar
- Directorios de salida con marca de tiempo
- Detección automática de tokens de sesión de Citrix
- Deduplicación de tokens encontrados
- Almacenamiento y exportación separados de tokens
- Seguimiento del número de tokens
- Decodificación de autenticación básica
- Detección de patrones usuario:contraseña
- Almacenamiento y exportación de credenciales
📈 Salida mejorada
- Volcados hexadecimales codificados por colores
- Resaltado de patrones en la salida
- Resúmenes detallados de fugas
- Actualizaciones periódicas de progreso
- Estadísticas completas al salir
⚙️ Configuración avanzada
- Pruebas de múltiples endpoints
- Límites de solicitudes configurables
- Retrasos ajustables entre lotes
- Mejor manejo de errores y recuperación
- Apagado elegante con guardado de datos
Cómo funciona
Este script avanzado en Python:
- Envía solicitudes POST malformadas repetidas a endpoints vulnerables
- Analiza las respuestas XML en busca de etiquetas
<InitialValue>
- Extrae el contenido de memoria filtrado
- Analiza los datos en busca de patrones confidenciales (tokens, credenciales, etc.)
- Muestra los resultados en formato de volcado hexadecimal mejorado con resaltado
- Realiza seguimiento de estadísticas y fugas únicas
- Guarda automáticamente los datos recopilados en múltiples formatos
- Soporta proxy, subprocesos, limitación de velocidad y salida verbosa
Impacto
- Secuestro de sesión: La principal preocupación es el robo de tokens de sesión, lo que permite a los atacantes secuestrar sesiones de usuario activas y obtener acceso no autorizado a sistemas críticos, incluso si la autenticación multifactor (MFA) está habilitada.
- Omisión de la autenticación: Los tokens de sesión o credenciales robados pueden utilizarse para omitir por completo el proceso de autenticación.
- Divulgación de datos: Se puede exponer información confidencial que reside en la memoria.

Defensa y mitigación
- Actualice al firmware seguro más reciente inmediatamente.
- Supervise patrones anormales de solicitudes POST.
Referencia