Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
tomcat-rewrite-ns-loop — Apache Tomcat 11.0.27 - Hoch - Remote - DoS - RewriteValve [NS] Worker-Pin | Kitploit
Tools/GitHubGitHub/abraxas/tomcat-rewrite-ns-loop
DefensivwerkzeugeSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitLabs & Praxis
GitHubabraxas/tomcat-rewrite-ns-loop

tomcat-rewrite-ns-loop

Apache Tomcat 11.0.27 - Hoch - Remote - DoS - RewriteValve [NS] Worker-Pin

Repository anzeigen
7vor 3 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - tomcat-rewrite-ns-loop

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

tomcat-rewrite-ns-loop

Klasse: DoS Reichweite: Remote

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

RewriteValve.parseRuleFlag verwendet Präfix-Matching. Nach NC/NE aktiviert jedes verbleibende Flag, das mit startsWith("N") beginnt, das nächste. Kopierte httpd [NS] (nosubreq) und [NV] (novary) werden zu [N]. Die Substitution - lässt substitution null; RewriteRule.evaluate gibt dann die ursprüngliche URL zurück. isNext() plus ein nicht-null newtest setzt i = -1 ohne Rundenzähler-Begrenzung, sodass ein unauthentifizierter GET, der die Regel erfüllt, den HTTP-Connector-Thread blockiert, bis der Client abbricht oder der Prozess neu gestartet wird. Explizites [N] und [S=-1] sind dieselbe Blockade. [L,NS] ist sicher, weil isLast() zuerst abbricht.

CVE-2026-65927 (Important, 11.0.25) behob, dass [N] bei der zweiten Regel neu startet. Diese Blockade hat weiterhin keine Rundenzähler-Begrenzung. Am selben Tag fügte main nach 11.0.27 MAX_REWRITE_ROUNDS=1000 und exaktes Flag-Matching hinzu (2da9fddb, 8992dbdd) ohne Security Advisory.

IDnoch keine CVE
KlasseDoS
ReichweiteRemote (unauthentifiziertes HTTP)
CWECWE-835
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProduktApache Tomcat
Betroffen11.0.27 (52f3b364e5882a5dbcfc42cb8313a7c2ae532c64) RewriteValve
Authunauthentifiziertes HTTP
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Ich habe den Tag 11.0.27 gepinnt und RewriteValve.invoke gelesen. Das Valve ist nicht in der Standard-conf/server.xml. Der Standard-Host-Pfad ist conf/Catalina/localhost/rewrite.config. Das Lab ist Loopback-HTTP auf 127.0.0.1:18910. Offizielles 11.0.27-Tarball. Kein RCE.

Was ein Angreifer tun kann

MethodeSinkPrivileg
Unauth GET /loop passend zu Host rewrite.config RewriteRule ^/loop$ - [NS]RewriteValve.invoke i = -1 wegen startsWith("N") beim Token NSVerfügbarkeit (im Lab nachgewiesen): einen HTTP-Connector-Thread blockieren, bis der Client abbricht oder der Prozess neu gestartet wird. Lab: /loop Timeout bei 4,002s.
Unauth GET /next mit explizitem [N]derselbe isNext()-NeustartVerfügbarkeit (im Lab nachgewiesen): dieselbe Blockade. Lab: /next Timeout bei 4,003s.
Unauth GET /skip mit [S=-1]i += -1 dann der for-InkrementVerfügbarkeit (im Lab nachgewiesen): dieselbe Blockade. Lab: /skip Timeout bei 4,002s.
Eine passende Anfrage pro Workerderselbe Sink, maxThreads gleichzeitige passende URLsVerfügbarkeit (abgeleitet): den Connector-Pool füllen (Lab nutzte 32; Standard ist 200). Neue Anfragen werden dann in die Warteschlange gestellt oder abgelehnt. Die Schwester-URL /ok antwortete weiterhin, während ein /loop in Bearbeitung war.
Hängen vs. 13ms 404 auf /okTiming von next/skip vs. [L]Recon (im Lab nachgewiesen): erkennen, dass eine next/skip-Regel gepasst hat. Lab: 4,002s Hängen vs. 0,013s 404.

Im Lab nachgewiesen vs. abgeleitet: /loop [NS]-Hängen, /next [N]-Hängen, /skip [S=-1]-Hängen, /ok [L] 404 in 13ms, /safe [L,NS] 404 in 5ms und Schwester-/ok 404 während /loop in Bearbeitung ist, sind im Lab nachgewiesen. Pool-Erschöpfung ist aus Ein-Thread-Blockade plus maxThreads abgeleitet.

Erfordert: RewriteValve auf dem Host oder Context und eine passende rewrite.config-Regel. Das Valve ist Opt-in, gleiche Klasse wie auskommentiertes AJP. Kopiertes httpd [NS] ist eine passende Regel, keine absichtliche Endlos-[N]-Schleife.

Angrenzende Oberfläche, die geschlossen bleibt

OberflächeLab
[L,NS] (httpd last+nosubreq)/safe 404 in 5ms (L-ns-safe=yes)
Andere in Bearbeitung befindliche Anfragen, während ein Thread blockiert ist/ok 404 in 13ms während /loop (sibling-alive=yes)
Standard-server.xml ohne RewriteValveValve fehlt; Überbleibsel feuert nicht
RCE / WEB-INF-Lesen / Constraint-Bypass von CVE-2026-65927[N] startet jetzt bei Regel 0 neu; dieses Überbleibsel betrifft nur die Verfügbarkeit
Manager / JMX / AJP / DefaultServlet PUTunverändert; PUT weiterhin readonly

Keine Codeausführung als der Tomcat-Benutzer. Kein Lesen von conf/ oder WEB-INF. Kein Session-Diebstahl. Kein Manager-Deploy. Die JVM bleibt oben; andere Worker antworten weiterhin, bis der Pool gefüllt ist.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18910 mappt Container 8080. Compose-Projekt tomcat-rewrite-ns-loop. Image-Tag tomcat-rewrite-ns-loop:11.0.27. Offizielles apache-tomcat-11.0.27.tar.gz SHA512 a617896307cada4884b24f80c4e977ddad8b3e0f88ce0e2a6eea29d5f332498e276ae5976c227a9c8daecf05c7c90def684a3766dd5a81f47a56d8b1adf43dc3. Witness TOMCAT-REWRITE-NS-LOOP-WITNESS. Letzte Zeile:

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]

Der Fix

Rewrite-Runden begrenzen (MAX_REWRITE_ROUNDS=1000 auf main nach diesem Tag, Commit 2da9fddb). Exakte Flag-Übereinstimmung, damit [NS] das Parsen nicht besteht (Commit 8992dbdd). skip < 0 ablehnen. Bis diese in einem Release landen: [NS]/[NV]/[N]/[S=-1] bei passenden Regeln vermeiden oder RewriteValve entfernen.

Referenzen

  • github.com/apache/tomcat Tag 11.0.27 (52f3b364e5882a5dbcfc42cb8313a7c2ae532c64)
  • RewriteValve.java isNext()-Neustart und startsWith("N")
  • RewriteRule.java Substitution - gibt die ursprüngliche URL zurück
  • Schwester (Index-Bug, nicht diese unbegrenzte Schleife): CVE-2026-65927
  • Gleiche Important-Thread-Pin-Klasse: CVE-2026-78383 AJP, CVE-2026-77791 WebSocket Close
  • CWE-835
Tool herunterladen