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
lighttpd-win32-dotdot-space — lighttpd 1.4.85 - Alto - Remoto - Percorso - Win32 nativo GET /..%20/ legge al di fuori della document-root | Kitploit
Strumenti/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingLab e Pratica
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 - Alto - Remoto - Percorso - Win32 nativo GET /..%20/ legge al di fuori della document-root

Vedi Repository
2 giorni 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

Abraxas Labs - lighttpd-win32-dotdot-space

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

Classe: Lettura di file Reach: Remoto

lighttpd 1.4.85 (4852959) - lighttpd

Il _WIN32 nativo di staticfile unisce document-root a rel_path dopo buffer_path_simplify. Simplify ripiega ../ solo quando il terzo byte è /. http_response_prepare_physical rimuove spazi e punti finali dal percorso intero soltanto. GET /..%20/windows/win.ini rimane quindi /.. /windows/win.ini. _wstati64 / _wopen senza prefisso \\?\ lasciano poi che Win32 rimuova lo spazio per componente e tratti quel segmento come ...

GET/HEAD non autenticato su lighttpd nativo Windows legge un file regolare al di fuori di document-root che l'account del worker può aprire. Unix/Linux non è questo residuo. Lettura di file, non RCE.

Il lab è un gadget di quelle funzioni di pin. Non è un worker Win32 nativo live. L'ultima riga usa how=gadget.

IDnessuna CVE al momento
ClasseLettura di file (path traversal, ..%20/ nativo Win32)
ReachRemoto (GET/HEAD non autenticato)
CWECWE-22
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Prodottolighttpd1.4
Affetto1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) _WIN32 nativo
Authnessuna. mod_staticfile predefinito
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1, how=gadget

Cosa può fare un attaccante

Richiede lighttpd nativo Windows che serve file statici. L'account del worker deve poter aprire il file regolare di destinazione.

PrivilegioMetodo / sinkProvato in lab o dedotto
Leggere un file al di fuori di document-rootGET /..%20/<name> non autenticatoProvato in lab (gadget). Il corpo HTTP 200 è il segreto genitore
Stessa classe per altri spazi/punti ASCII finali su una componente .. non finaleurl-decode poi simplify mantiene .. Provato in lab per %20. Dedotto per altri spazi/punti finali
HEAD sullo stesso percorsostaticfile HEADDedotto. Il lab ha usato GET
Negativo: /../ realebuffer_path_simplify ripiega ../Provato in lab. 404, /windows/win.ini semplificato, nessun witness
Negativo: open POSIX Unix della stringa fisica non semplificataopen("/srv/htdocs/.. /windows/win.ini")Provato in lab. ENOENT

Chiuso su questo residuo: staticfile Unix/Linux; Cygwin (stessa rimozione, open POSIX); %5C parseopt di 1.4.85; alias CVE-2018-19052; Host CVE-2014-2324. Non RCE. Non una scrittura.

Come l'ho trovato

Ho fissato il tag lighttpd-1.4.85. Venti ricerche. staticfile Unix/Linux predefinito, FastCGI, proxy, TLS, auth, HTTP/2, alias/rewrite: nulla a questo livello. L'ondata di parser 1.4.81-1.4.85 aveva già chiuso trailers, conflitti di header CGI e Content-Length di backend non valido.

buffer_path_simplify ripiega ../ solo quando walk[2] == '/'. La rimozione WIN32 in http_response_prepare_physical (src/response.c 334-360) è la coda dell'intero percorso. _wstati64 / _wopen (src/fs_win32.c 24-77) passano UTF-16 senza \\?\, quindi Win32 rimuove gli spazi finali per componente e .. diventa ... Il join fisico è doc_root + rel_path senza controllo basedir post-stat.

Vicoli ciechi già registrati: trattare ENOENT Unix come "non un bug" (è il controllo negativo); chiamare Cygwin Win32 nativo; affermare che %5C di 1.4.85 è questo residuo; gonfiare la lettura di file a RCE. Teatro: una reverse shell. L'oracolo è un corpo 200 dal genitore di document-root.

Lab

python3 lighttpd-win32-dotdot-space-Abraxas-Labs.py

oppure

cd lab
./run.sh

Il lab è un gadget fedele di buffer_urldecode_path, buffer_path_simplify (mappa '\\' Win32), la rimozione della coda in response.c, e _wstati64 senza \\?\. L'open POSIX Unix è il controllo negativo. La risoluzione Win32 è implementata come la stessa rimozione di spazi finali per componente, poi . / .., poi un open POSIX del percorso risolto. HTTP su loopback 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, nessun witness.
  2. GET /../windows/win.ini -> 404, /windows/win.ini semplificato.
  3. GET /..%20/windows/win.ini -> decodificato /.. /windows/win.ini, simplify ha mantenuto lo spazio, ENOENT Unix, Win32 ha risolto /srv/windows/win.ini, 200 witness.
SUCCESS lighttpd-win32-dotdot-space how=gadget win32-get=200 unix-open=enoent simplify-kept-dotdot-space=yes LIGHTTPD-WIN32-DOTDOT-SPACE-WITNESS

La correzione

Rimuovere spazi e punti finali per componente di percorso prima di simplify, oppure prefissare gli open Win32 con \\?\ e rifiutare un percorso fisico che non rimane sotto document-root.

Riferimenti

  • github.com/lighttpd/lighttpd1.4 tag lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • Correlati già corretti (non questo residuo): trailers CVE-2025-12642 · %5C parseopt 1.4.85 · alias CVE-2018-19052 · Host CVE-2014-2324
  • CWE-22

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento