Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2026-42945 — Analysiert CVE-2026-42945, einen Heap-Overrun in der NGINX-Rewrite-Engine, und bietet einen differenziellen Detektor, einen deterministischen DoS-PoC sowie einen mit Anerkennung versehenen RCE-Port mit Verifizierung. | Kitploit
Tools/GitHubGitHub/franklinf25/cve-2026-42945
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungBinary-Exploitation
GitHubfranklinf25/cve-2026-42945

cve-2026-42945

Analysiert CVE-2026-42945, einen Heap-Overrun in der NGINX-Rewrite-Engine, und bietet einen differenziellen Detektor, einen deterministischen DoS-PoC sowie einen mit Anerkennung versehenen RCE-Port mit Verifizierung.

Repository anzeigen
2vor 10h 55mNoch 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

CVE-2026-42945 — NGINX-Rewrite-Heap-Overrun: Analyse, DoS & zugeschriebener RCE-Port

Sicherheitsforschung zu CVE-2026-42945 (CVSS 4.0 9.2 KRITISCH): ein Heap-Pufferüberlauf in der Script-Engine von NGINX, bei dem ein rewrite mit Argumenten in der Ersetzung (z. B. rewrite ^(.*) /new?c=1;) das is_args-Flag der Engine gesetzt lässt und nie zurücksetzt — sodass jede danach in set/if ausgewertete Erfassung ($1) mit URI-Escaping in einen Puffer kopiert wird, der für die unescaped Länge dimensioniert wurde. Erreichbar ohne Authentifizierung durch jeden Client, dessen Request-URI %XX-Escapes oder + enthält.

Ergebnis (Phase 1): ein sicherer (verwundbar 1.30.0 vs. behoben 1.30.1, null Abstürze) plus ein (SIGSEGV, Core-Dump — die Antwort wird zuerst vollständig ausgeliefert). Beide reproduziert gegen Builds, die aus dem Quellcode bei Commit kompiliert wurden.

differenzieller Detektor
deterministischer Worker-DoS
71d62c6

Ergebnis (Phase 2): ein zugeschriebener Port des RCE des Reporters — system()-Ausführung als Worker-Benutzer (nobody), reproduziert in 3/3 sauberen Läufen gegen den gepinnten Build des Reporters, repliziert unter lab/rce/. Die Ausnutzungstechnik stammt von Leo Lin (DepthFirst); siehe Was ist hier originell vs. frühere Arbeit und den Abschnitt Frühere Arbeit im Writeup.

Verifikationsmatrix

BehauptungBeleg
Ursache aus dem Fix-Commit abgeleitet (nicht aus Blogs)finding-sheet
Fix ist ein Einzeiler — e->is_args = 0; in ngx_http_script_regex_end_code()Commit 524977e (zitiert in writeup)
Sicherer Detektor: verwundbar vs. behoben Oracle, null Abstürzepoc/diagnose.py — Trunkierungs-Fingerabdruck (/foo%25b vs. /foo%bar)
Trigger-Matrix: quotierte/Plus-URI und escapbare Zeichen in der Erfassung — beide erforderlichpoc/diagnose.py Sonden-Batterie inkl. der /a%41b-Kontrolle
Deterministischer Worker-DoS (SIGSEGV, Core-Dump, Antwort zuerst ausgeliefert)poc/crash.py — X-Worker-PID-Änderung beweist Worker-Tod
Behobenes 1.30.1 übersteht den identischen Angriffpoc/crash.py --host 127.0.0.1:29544 — 3/3 Runden überstanden
RCE (Phase 2, Technik des Reporters, zugeschriebener Port)exploit/rce.py — 3/3 Läufe, Beweisdatei + uid=65534(nobody), Worker exited on signal 11 nach Ausführung

Schnellstart

root@kitploit:~
# Differenzielles Paar: nginx 1.30.0 (:29543) + 1.30.1 (:29544) aus dem Quellcode gebaut
cd lab && docker compose up -d --build && cd ..

python3 poc/diagnose.py                          # sicheres Oracle — stürzt keinen der beiden Worker ab
python3 poc/crash.py --host 127.0.0.1:29543      # 1.30.0: Worker stirbt mit Signal 11, Core-Dump
python3 poc/crash.py --host 127.0.0.1:29544      # 1.30.1: übersteht jede Runde

docker logs cve-42945-vuln 2>&1 | grep 'exited on signal' | tail -3

Phase 2 — RCE gegen den gepinnten Build des Reporters (nginx-Dev-Rev 98fc3bb7 = release-1.29.8-14, ASLR durch den gepinnten Entrypoint deaktiviert):

root@kitploit:~
docker compose -f lab/rce/docker-compose.yml up -d --build   # :29545, dauert Minuten zum Bauen

python3 exploit/rce.py \
  --cmd 'echo pwned-by-cve-2026-42945 > /tmp/proof' --verify --expect pwned
docker compose -f lab/rce/docker-compose.yml exec nginx cat /tmp/proof

Dokumente

DokumentWas es ist
docs/finding-sheet.mdEinseitiges Datenblatt: Versionen, CVSS, Konfigurationsmuster, Trigger-Bedingungen, Erkennungssignaturen
docs/report-ptes.mdPTES-strukturierter Bericht (7 Phasen), begrenzt auf das tatsächlich Durchgeführte
docs/research-writeup.mdDie Untersuchungserzählung — Fix-Commit-Archäologie, die Trunkierungs-Überraschung, portable Lehren, zukünftige Arbeit

Was ist hier originell vs. frühere Arbeit

Die Phase-1-Forschungskette ist originelle Arbeit: das absturzfreie differenzielle Oracle und sein Trunkierungs-Fingerabdruck (der ausgelieferte Body ist die neu-escapte Erfassung, auf die Roh-Länge trunkiert — die sichtbare Signatur des Längen/Wert-Zwei-Pass-Mismatch), die Trigger-Matrix, die beide Vorbedingungen als notwendig beweist, die Quellcode-Ebene-Erklärung, warum der Längen-Pass is_args nicht sehen kann, und der deterministische Worker-Kill nach der Antwort. Der Bug selbst, das verwundbare Konfigurationsmuster und die Fix-Commit-Analyse sind frühere Arbeit des Reporters und Upstreams — Leo Lin (DepthFirst) hat das Problem offengelegt und Roman Arutyunyan hat es behoben; siehe den Abschnitt Frühere Arbeit im Writeup und DepthFirst Disclosures — Nginx-Rift, Baum CVE-2026-42945.

Phase 2 (RCE) ist ein Port des veröffentlichten Exploits des Reporters, keine unabhängige Kette: das Cross-Request-Heap-Feng-Shui, das den Overrun auf den cleanup-Zeiger eines benachbarten Request-Pools landet, der Fake-ngx_pool_cleanup_t-Spray über gehaltene POST-Bodies, die Cleanup-Dispatch-Umleitung zu libc system(), die Overflow-Geometrie (349 A + 969 + + 6 Ziel-Bytes), die No-ASLR-Basis/Offset-Konstanten und der gepinnte Build in lab/rce/ (deren env/) sind allesamt das Design von Leo Lin, mit Anerkennung in exploit/rce.py reproduziert. Unseres in Phase 2: der Port selbst — die CLI-/Logging-/Verifikations- Konventionen dieses Repos, Live-Heap-Scan-Kandidatenentdeckung und Basis-Autoerkennung (deren statische Konstanten kernelabhängig sind; siehe den Exploit-Docstring), der Stdlib-Reverse-Shell-Listener und die Verifikationsbelege.

Begleitforschung

Dieses Repo teilt seine Methodik mit CVE-2026-42533 — NGINX Pre-Auth Heap Overflow: Analysis & RCE (Schwester-Repo): dieselbe Zwei-Pass-Längen/Wert-Bug-Klasse in der nginx-Script-Engine, dort durch eine vollständige Pre-Auth-RCE-Kette geführt. Diese Kette hat die plausible Obergrenze für diesen Bug abgesteckt; Phase 2 dieses Repos erreicht hier dieselbe Obergrenze — als zugeschriebener Port der Technik des Reporters, nicht als unabhängige Kette.

Repository-Struktur

root@kitploit:~
docs/            Finding-Sheet · PTES-Bericht · Forschungs-Writeup
poc/             diagnose.py (sicheres differenzielles Oracle) · crash.py (deterministischer DoS)
exploit/         rce.py — zugeschriebener Port der system()-Kette des Reporters
lab/             Dockerfile (nginx aus dem Quellcode, -g -O0) + differenzielles Compose-Paar
lab/nginx/       vulnerable.conf — die PoC-Konfiguration aus dem Fix-Commit
lab/rce/         gepinnte RCE-Umgebung des Reporters (deren env/, unser Port-Mapping)

Referenzen

  • Fix-Commit: 524977e7c534 "Rewrite: fixed escaping and possible buffer overrun" (Roman Arutyunyan) — veröffentlicht in nginx 1.30.1
  • Red Hat: RHSA-2026:17790 und Folgeversionen (breites Downstream-Patching)
  • DepthFirst Disclosures — Nginx-Rift, Baum CVE-2026-42945 (frühere Arbeit des Reporters; Leo Lin)

Forschungsartefakt zu Bildungszwecken. Nur gegen Systeme ausführen, die dir gehören oder für die du ausdrücklich autorisiert bist. Die Schwachstelle ist gepatcht — aktualisiere nginx auf ≥ 1.30.1.

Tool herunterladen