Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
lighttpd-win32-dotdot-space — lighttpd 1.4.85 – Hoch – Remote – Pfad – native Win32 GET /..%20/ liest außerhalb des Document-Root | Kitploit
Tools/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLabs & Praxis
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 – Hoch – Remote – Pfad – native Win32 GET /..%20/ liest außerhalb des Document-Root

Repository anzeigen
4vor 6 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Klasse: Dateilesen Reichweite: Remote

lighttpd 1.4.85 (4852959) - lighttpd

Das native _WIN32-Staticfile verbindet document-root mit rel_path nach buffer_path_simplify. Simplify faltet ../ nur, wenn das dritte Byte / ist. http_response_prepare_physical entfernt abschließende Leerzeichen und Punkte nur vom gesamten Pfad. GET /..%20/windows/win.ini bleibt daher /.. /windows/win.ini. _wstati64 / _wopen ohne \\?\-Präfix lassen Win32 dann das Leerzeichen pro Komponente entfernen und dieses Segment als .. behandeln.

Unauthentifiziertes GET/HEAD auf nativem Windows-lighttpd liest eine reguläre Datei außerhalb von document-root, die das Worker-Konto öffnen kann. Unix/Linux ist nicht dieser Überrest. Dateilesen, kein RCE.

Das Lab ist ein Gadget dieser Pin-Funktionen. Es ist kein laufender nativer Win32-Worker. Die letzte Zeile verwendet how=gadget.

IDnoch keine CVE
KlasseDateilesen (Path Traversal, natives Win32 ..%20/)
ReichweiteRemote (unauthentifiziertes GET/HEAD)
CWECWE-22
CVSSHoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Produktlighttpd1.4
Betroffen1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) natives _WIN32
Authkeine. Standard-mod_staticfile
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1, how=gadget

Was ein Angreifer tun kann

Erfordert natives Windows-lighttpd, das statische Dateien ausliefert. Das Worker-Konto muss die Ziel-Datei öffnen können.

PrivilegMethode / SinkIm Lab bewiesen oder abgeleitet
Eine Datei außerhalb von document-root lesenUnauth GET /..%20/<name>Im Lab bewiesen (Gadget). HTTP-200-Body ist das Secret im Elternverzeichnis
Gleiche Klasse für anderes abschließendes ASCII-Leerzeichen/Punkt in einer nicht-finalen ..-Komponenteurl-decode, dann simplify behält .. Im Lab bewiesen für %20. Abgeleitet für anderes abschließendes Leerzeichen/Punkt
HEAD auf denselben Pfadstaticfile HEADAbgeleitet. Lab verwendete GET
Negativ: echtes /../buffer_path_simplify faltet ../Im Lab bewiesen. 404, vereinfacht zu /windows/win.ini, kein Witness
Negativ: Unix-POSIX-open des nicht vereinfachten physischen Stringsopen("/srv/htdocs/.. /windows/win.ini")Im Lab bewiesen. ENOENT

Ausgeschlossen bei diesem Überrest: Unix/Linux-Staticfile; Cygwin (gleiches Strip, POSIX-open); 1.4.85 %5C-parseopt; CVE-2018-19052-Alias; CVE-2014-2324-Host. Kein RCE. Kein Write.

Wie ich es gefunden habe

Ich habe den Tag lighttpd-1.4.85 gepinnt. Zwanzig Jagden. Standard-Unix/Linux-Staticfile, FastCGI, Proxy, TLS, Auth, HTTP/2, Alias/Rewrite: nichts auf diesem Niveau. Die Parser-Welle 1.4.81-1.4.85 hatte bereits Trailer, CGI-Header-Konflikte und ungültige Backend-Content-Length geschlossen.

buffer_path_simplify faltet ../ nur, wenn walk[2] == '/'. Das WIN32-Strip in http_response_prepare_physical (src/response.c 334-360) ist der Tail des gesamten Pfads. _wstati64 / _wopen (src/fs_win32.c 24-77) übergeben UTF-16 ohne \\?\, sodass Win32 abschließende Leerzeichen pro Komponente entfernt und .. zu .. wird. Der physische Join ist doc_root + rel_path ohne auf stat basierende Basedir-Prüfung.

Falsche Wendungen, die bereits festgehalten wurden: Unix-ENOENT als „kein Bug“ zu behandeln (es ist die Negativkontrolle); Cygwin als natives Win32 zu bezeichnen; zu behaupten, 1.4.85 %5C sei dieser Überrest; das Lesen von Dateien zu RCE aufzublähen. Theater: eine Reverse Shell. Das Orakel ist ein 200-Body vom übergeordneten Verzeichnis des Document-Root.

Lab

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

oder

cd lab
./run.sh

Das Lab ist ein originalgetreues Gadget von buffer_urldecode_path, buffer_path_simplify (Win32-'\\'-Mapping), dem Tail-Strip aus response.c und _wstati64 ohne \\?\. Unix-POSIX-open ist die Negativkontrolle. Win32-Resolve ist implementiert als derselbe Trailing-Space-Strip pro Komponente, dann . / .., dann ein POSIX-open des aufgelösten Pfads. Loopback-HTTP 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, kein Witness.
  2. GET /../windows/win.ini -> 404, vereinfacht zu /windows/win.ini.
  3. GET /..%20/windows/win.ini -> dekodiert zu /.. /windows/win.ini, Simplify behielt das Leerzeichen, Unix ENOENT, Win32 löste /srv/windows/win.ini auf, 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

Die Behebung

Entferne abschließende Leerzeichen und Punkte pro Pfadkomponente vor der Vereinfachung, oder stelle Win32-Öffnungen \\?\ voran und lehne einen physischen Pfad ab, der nicht unter document-root bleibt.

Referenzen

  • github.com/lighttpd/lighttpd1.4 Tag lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • In der Nähe gepatcht (nicht dieser Überrest): CVE-2025-12642 Trailer · 1.4.85 %5C parseopt · CVE-2018-19052 Alias · CVE-2014-2324 Host
  • CWE-22

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen