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
46 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

Write-up: https://abraxaslabs.tech/research/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

Classe: Lettura di file Portata: Remota

lighttpd 1.4.85 (4852959) - lighttpd

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

Una GET/HEAD non autenticata 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 nativo Win32 attivo. L'ultima riga usa how=gadget.

IDnessuna CVE al momento
ClasseLettura di file (path traversal, nativo Win32 ..%20/)
PortataRemota (GET/HEAD non autenticata)
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) nativo _WIN32
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 nel lab o dedotto
Leggere un file al di fuori di document-rootGET non autenticata GET /..%20/<name>Provato nel lab (gadget). Il corpo HTTP 200 è il segreto della directory superiore
Stessa classe per altri spazi/punti ASCII finali su una componente .. non finaleurl-decode poi simplify mantiene .. Provato nel 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 nel lab. 404, /windows/win.ini semplificato, nessuna prova
Negativo: open POSIX Unix della stringa fisica non semplificataopen("/srv/htdocs/.. /windows/win.ini")Provato nel lab. ENOENT

Chiuso su questo residuo: staticfile Unix/Linux; Cygwin (stessa rimozione, open POSIX); parseopt %5C 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: nessuno a questo livello. L'ondata di parser 1.4.81-1.4.85 aveva già chiuso trailer, 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 ... L'unione fisica è doc_root + rel_path senza controllo basedir post-stat.

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

Lab

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

o

cd lab
./run.sh

Il lab è una fedele riproduzione di buffer_urldecode_path, buffer_path_simplify (mappatura Win32 '\\'), della rimozione della coda in response.c e di _wstati64 senza \\?\. L'open POSIX Unix è il controllo negativo. La risoluzione Win32 è implementata come la stessa rimozione degli 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, semplificato in /windows/win.ini.
  3. GET /..%20/windows/win.ini -> decodificato in /.. /windows/win.ini, la semplificazione ha mantenuto lo spazio, Unix ENOENT, Win32 ha risolto in /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

Rimuovi gli spazi e i punti finali per ogni componente del percorso prima di simplify, oppure anteponi \\?\ alle aperture Win32 e rifiuta 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 e già corretti (non questo residuo): CVE-2025-12642 trailers · 1.4.85 %5C parseopt · CVE-2018-19052 alias · CVE-2014-2324 Host
  • CWE-22

Licenza

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

Scarica lo strumento