Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tomcat-rewrite-ns-loop — Apache Tomcat 11.0.27 - Alta - Remota - DoS - RewriteValve [NS] worker pin | Kitploit
Herramientas/GitHubGitHub/abraxas/tomcat-rewrite-ns-loop
Herramientas DefensivasAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebLabs y Práctica
GitHubabraxas/tomcat-rewrite-ns-loop

tomcat-rewrite-ns-loop

Apache Tomcat 11.0.27 - Alta - Remota - DoS - RewriteValve [NS] worker pin

Ver Repositorio
2124hace 9 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - tomcat-rewrite-ns-loop

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  tomcat-rewrite-ns-loop

Write-up: https://abraxaslabs.tech/research/tomcat-rewrite-ns-loop

tomcat-rewrite-ns-loop

Clase: DoS Alcance: Remoto

Apache Tomcat 11.0.27 (52f3b364) - tomcat.apache.org

RewriteValve.parseRuleFlag hace coincidencia por prefijo. Tras NC/NE, cualquier flag restante que startsWith("N") habilita next. Los [NS] (nosubreq) y [NV] (novary) copiados de httpd se convierten en [N]. La sustitución - deja substitution en null; RewriteRule.evaluate entonces devuelve la URL original. isNext() junto con un newtest no nulo establece i = -1 sin límite de rondas, por lo que un único GET no autenticado que coincida con la regla fija el hilo del conector HTTP hasta que el cliente se desconecte o el proceso se reinicie. [N] explícito y [S=-1] producen el mismo bloqueo. [L,NS] es seguro porque isLast() se evalúa primero.

CVE-2026-65927 (Important, 11.0.25) corrigió que [N] reiniciara en la segunda regla. Este bloqueo sigue sin límite de rondas. El main del mismo día posterior a 11.0.27 añadió MAX_REWRITE_ROUNDS=1000 y coincidencia exacta de flags (2da9fddb, 8992dbdd) sin un aviso de seguridad.

IDaún sin CVE
ClaseDoS
AlcanceRemoto (HTTP no autenticado)
CWECWE-835
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProductoApache Tomcat
Afectado11.0.27 (52f3b364e5882a5dbcfc42cb8313a7c2ae532c64) RewriteValve
AutenticaciónHTTP no autenticado
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Fijé la etiqueta 11.0.27 y leí RewriteValve.invoke. La valve no está en el conf/server.xml de serie. La ruta predeterminada del Host es conf/Catalina/localhost/rewrite.config. El laboratorio es HTTP en loopback sobre 127.0.0.1:18910. Tarball oficial de 11.0.27. No es RCE.

Qué puede hacer un atacante

MétodoSumideroPrivilegio
GET /loop no autenticado que coincide con RewriteRule ^/loop$ - [NS] del Host rewrite.configRewriteValve.invoke i = -1 porque startsWith("N") sobre el token NSDisponibilidad (probado en laboratorio): fija un hilo del conector HTTP hasta que el cliente se desconecte o el proceso se reinicie. Laboratorio: /loop agotó el tiempo de espera a los 4.002s.
GET /next no autenticado con [N] explícitomismo reinicio por isNext()Disponibilidad (probado en laboratorio): mismo bloqueo. Laboratorio: /next agotó el tiempo de espera a los 4.003s.
GET /skip no autenticado con [S=-1]i += -1 y luego el incremento del forDisponibilidad (probado en laboratorio): mismo bloqueo. Laboratorio: /skip agotó el tiempo de espera a los 4.002s.
Una petición coincidente por workermismo sumidero, maxThreads URLs coincidentes concurrentesDisponibilidad (inferido): llena el pool del conector (el laboratorio usó 32; el valor predeterminado de serie es 200). Las nuevas peticiones entonces se encolan o se rechazan. La ruta hermana /ok siguió respondiendo mientras un /loop estaba en curso.
Cuelgue frente a 404 de 13ms en /oktemporización de next/skip frente a [L]Reconocimiento (probado en laboratorio): permite saber que coincidió una regla next/skip. Laboratorio: cuelgue de 4.002s frente a 404 de 0.013s.

Probado en laboratorio frente a inferido: el cuelgue de /loop [NS], el cuelgue de /next [N], el cuelgue de /skip [S=-1], el 404 de /ok [L] en 13ms, el 404 de /safe [L,NS] en 5ms, y el 404 de la ruta hermana /ok mientras /loop está en curso están probados en laboratorio. El agotamiento del pool se infiere del bloqueo de un hilo junto con maxThreads.

Requiere: RewriteValve en el Host o Context y una regla correspondiente en rewrite.config. La válvula es opcional, de la misma clase que el AJP comentado. El [NS] copiado de httpd es una regla de coincidencia, no un bucle [N] infinito intencional.

Superficie adyacente que permanece cerrada

SuperficieLaboratorio
[L,NS] (httpd last+nosubreq)/safe 404 en 5ms (L-ns-safe=yes)
Otras solicitudes en curso mientras un hilo está fijado/ok 404 en 13ms durante /loop (sibling-alive=yes)
server.xml estándar sin RewriteValveválvula ausente; el remanente no se activa
RCE / lectura de WEB-INF / omisión de restricciones de CVE-2026-65927[N] ahora reinicia en la regla 0; este remanente es solo de disponibilidad
Manager / JMX / AJP / PUT de DefaultServletsin cambios; PUT sigue en readonly

Sin ejecución de código como el usuario de Tomcat. Sin lectura de conf/ ni WEB-INF. Sin robo de sesión. Sin despliegue vía Manager. La JVM permanece activa; otros workers siguen respondiendo hasta que se llena el pool.

Laboratorio

cd lab
./run.sh

Loopback 127.0.0.1:18910 se asigna al contenedor 8080. Proyecto de Compose tomcat-rewrite-ns-loop. Etiqueta de imagen tomcat-rewrite-ns-loop:11.0.27. SHA512 oficial de apache-tomcat-11.0.27.tar.gz a617896307cada4884b24f80c4e977ddad8b3e0f88ce0e2a6eea29d5f332498e276ae5976c227a9c8daecf05c7c90def684a3766dd5a81f47a56d8b1adf43dc3. Testigo TOMCAT-REWRITE-NS-LOOP-WITNESS. Última línea:

SUCCESS TOMCAT-REWRITE-NS-LOOP control-ok=yes ns-hang=yes L-ns-safe=yes n-hang=yes skip-hang=yes sibling-alive=yes TOMCAT-REWRITE-NS-LOOP-WITNESS

Lab rewrite.config:

RewriteRule ^/loop$ - [NS]
RewriteRule ^/next$ - [N]
RewriteRule ^/skip$ - [S=-1]
RewriteRule ^/ok$ - [L]
RewriteRule ^/safe$ - [L,NS]

La solución

Limitar las rondas de reescritura (MAX_REWRITE_ROUNDS=1000 en main después de esta etiqueta, commit 2da9fddb). Indicadores de coincidencia exacta para que [NS] falle al analizarse (commit 8992dbdd). Rechazar skip < 0. Hasta que esos cambios lleguen a una versión: evite [NS]/[NV]/[N]/[S=-1] en reglas de coincidencia, o elimine RewriteValve.

Referencias

Descargar herramienta