Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/f2u0a0d3/cve-2026-42945-nginx-rift-poc
Analyse Dynamique (Sandboxing)Frameworks d'ExploitationAnalyse des VulnérabilitésExploitation d'Applications WebFuzzingTests d'IntrusionApprentissage et ÉducationExploitation de BinairesLabs et Pratique

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
GitHubf2u0a0d3/cve-2026-42945-nginx-rift-poc

CVE-2026-42945-nginx-rift-poc

Voir le dépôt
1il y a 3 moisPas encore vérifié

À propos

PoC pour CVE-2026-42945 (nginx Rift) — dépassement de tampon du tas dans ngx_http_rewrite_module. Comprend les modes détection/sondage/exploitation, lab Docker à double montage, découverte empirique d'adresses, balayage de décalage vérifié hors limites (OOB). Divulgation originale par depthfirst.

Partager

NGINX Rift — CVE-2026-42945

Preuve de concept de RCE pour CVE-2026-42945, un débordement critique du tas (heap buffer overflow) dans le ngx_http_rewrite_module de NGINX introduit en 2008. Permet l'exécution de code à distance non authentifié contre des serveurs utilisant les combinaisons rewrite ... ?... + set de capture.

Divulgation originale de la vulnérabilité : depthfirst — découverte en même temps que CVE-2026-42946, CVE-2026-40701, CVE-2026-42934 via leur système autonome d'audit de code source.

Structure

root@kitploit:~
poc-CVE-2026-42945/
├── exploit.py            — improved PoC (3 modes: --check / --probe / --exploit)
├── poc.py.orig           — original depthfirst PoC (reference)
├── env/                  — dual-fixture Docker lab
│   ├── Dockerfile          (vuln: nginx commit 98fc3bb78)
│   ├── Dockerfile.patched  (patched: release-1.31.0)
│   ├── docker-compose.yml  (both services)
│   ├── nginx.conf          (vulnerable rewrite + set config)
│   ├── entrypoint.sh       (runs under setarch -R — ASLR off)
│   └── server.py           (backend stub)
├── discover-addresses.sh — extract HEAP_BASE / LIBC_BASE / system() offset from running container
├── verify.sh             — dual-fixture reproducer (exploit vuln, prove patched blocks)
├── setup.sh              — build helper (legacy single-image)
├── references.md         — full bug mechanics, exploitation strategy, mitigations
└── README.md             — this file

Le Bug (TL;DR)

Moteur de script à deux passes, désynchronisation du drapeau is_args :

  • Passe de longueur voit is_args = 0 → alloue la longueur brute de capture
  • Passe de copie voit is_args = 1 → ngx_escape_uri(NGX_ESCAPE_ARGS) expansion 3x → débordement de tas

Exploitation : heap feng shui via le corps POST /spray (octets NUL autorisés dans le corps, faux ngx_pool_cleanup_s planté) + débordement URI corrompant la tête ngx_pool_t.cleanup adjacente. Destruction du pool → system(cmd).

Mécanismes complets + stratégie d'exploitation dans references.md.

Affecté et Corrigé

ProduitAffectéCorrigé
NGINX Open Source0.6.27 – 1.30.01.30.1, 1.31.0
NGINX PlusR32 – R36R36 P4, R35 P2, R32 P6

Avis du fournisseur : https://my.f5.com/manage/s/article/K000160932

Démarrage rapide

root@kitploit:~
# Build both fixtures
docker compose -f env/docker-compose.yml build

# Start lab (vuln=:19321, patched=:19421)
docker compose -f env/docker-compose.yml up -d

# Detect-only (no overflow trigger)
python3 exploit.py --check --host 127.0.0.1 --port 19321

# Full exploit
python3 exploit.py --exploit --host 127.0.0.1 --port 19321 \
    --cmd 'echo pwned > /tmp/rift'

docker exec nginx-rift-vuln cat /tmp/rift

# Dual-fixture verify (exploit vuln + confirm patched blocks)
./verify.sh

# Teardown
docker compose -f env/docker-compose.yml down

Modes

Les cibles non localhost nécessitent le drapeau --i-have-tested-this (reconnaissance que les offsets codés en dur correspondent à la version déployée).

Découverte d'adresses

Les valeurs par défaut --heap-base / --libc-base / --system-offset sont celles du laboratoire fourni (Ubuntu 22.04 / glibc 2.35 / nginx commit 98fc3bb78 / ASLR désactivé). Pour une nouvelle construction ou une libc différente :

root@kitploit:~
docker compose -f env/docker-compose.yml up -d nginx-vuln
./discover-addresses.sh
# Copy values into exploit.py invocation

Mises en garde

  • Laboratoire uniquement. Les offsets codés en dur ne sont stables qu'à l'intérieur du montage fourni. L'exploitation en production nécessite une dérivation d'offsets par cible (fuite d'info + énumération d'offsets).
  • ASLR. Le lab désactive ASLR via setarch -R. Les cibles réelles ont ASLR activé — une primitive supplémentaire de fuite d'info est nécessaire.
  • Dépendance de configuration. La surface vulnérable nécessite la combinaison rewrite ... ? + set $X $N dans le nginx.conf déployé. De nombreuses configurations réelles ne l'ont pas.

Crédits

  • Découverte du bug + PoC original : depthfirst
  • Ce fork : a ajouté le mode de détection --check, l'énumération d'offsets --probe, le montage patché, l'assistant de découverte d'adresses, le vérificateur à deux montages.
Télécharger l’outil
ModeCas d'utilisationEffet secondaire
--checkDétecter la présence de surface rewriteAucun — envoie seulement de petites URI de sonde
--probeÉnumérer les offsets de spray pour CETTE constructionPlante le(s) worker(s) pendant la recherche ; pas d'exécution
--exploitChaîne RCE complètePlantage du worker + appel system() avec --cmd