Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
lighttpd-win32-dotdot-space — lighttpd 1.4.85 - Élevé - À distance - Chemin - Win32 natif GET /..%20/ lit en dehors de la racine du document | Kitploit
Outils/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionLabs et Pratique
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 - Élevé - À distance - Chemin - Win32 natif GET /..%20/ lit en dehors de la racine du document

Voir le dépôt
il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - lighttpd-win32-dotdot-space

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

lighttpd-win32-dotdot-space

Classe : Lecture de fichier Portée : Distante

lighttpd 1.4.85 (4852959) - lighttpd

Le staticfile natif _WIN32 joint document-root à rel_path après buffer_path_simplify. Simplify ne replie ../ que lorsque le troisième octet est /. http_response_prepare_physical supprime les espaces et points de fin uniquement sur le chemin entier. GET /..%20/windows/win.ini reste donc /.. /windows/win.ini. _wstati64 / _wopen sans préfixe \\?\ laissent alors Win32 supprimer l'espace par composant et traiter ce segment comme ...

Un GET/HEAD non authentifié sur lighttpd natif Windows lit un fichier régulier en dehors de document-root que le compte worker peut ouvrir. Unix/Linux n'est pas concerné par ce reliquat. Lecture de fichier, pas RCE.

Le lab est un gadget de ces fonctions épinglées. Ce n'est pas un worker Win32 natif réel. La dernière ligne utilise how=gadget.

IDpas encore de CVE
ClasseLecture de fichier (path traversal, natif Win32 ..%20/)
PortéeDistante (GET/HEAD non authentifié)
CWECWE-22
CVSSÉlevé : 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Produitlighttpd1.4
Affecté1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) natif _WIN32
Authaucune. mod_staticfile par défaut
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement, how=gadget

Ce qu'un attaquant peut faire

Nécessite un lighttpd natif Windows servant des fichiers statiques. Le compte worker doit pouvoir ouvrir le fichier régulier cible.

PrivilègeMéthode / sinkProuvé en lab ou déduit
Lire un fichier en dehors de document-rootGET /..%20/<name> non authentifiéProuvé en lab (gadget). Le corps HTTP 200 est le secret parent
Même classe pour un autre espace/point ASCII de fin sur un composant .. non finalurl-decode puis simplify conserve .. Prouvé en lab pour %20. Déduit pour un autre espace/point de fin
HEAD sur le même cheminstaticfile HEADDéduit. Le lab a utilisé GET
Négatif : vrai /../buffer_path_simplify replie ../Prouvé en lab. 404, /windows/win.ini simplifié, aucun témoin
Négatif : open POSIX Unix de la chaîne physique non simplifiéeopen("/srv/htdocs/.. /windows/win.ini")Prouvé en lab. ENOENT

Fermé sur ce reliquat : staticfile Unix/Linux ; Cygwin (même suppression, open POSIX) ; parseopt %5C de 1.4.85 ; alias CVE-2018-19052 ; Host CVE-2014-2324. Pas de RCE. Pas une écriture.

Comment je l'ai trouvé

J'ai épinglé le tag lighttpd-1.4.85. Vingt chasses. Staticfile Unix/Linux par défaut, FastCGI, proxy, TLS, auth, HTTP/2, alias/rewrite : rien à ce niveau. La vague de parseurs 1.4.81-1.4.85 avait déjà fermé les trailers, les conflits d'en-têtes CGI et les Content-Length de backend invalides.

buffer_path_simplify ne replie ../ que lorsque walk[2] == '/'. La suppression WIN32 dans http_response_prepare_physical (src/response.c 334-360) est la queue du chemin entier. _wstati64 / _wopen (src/fs_win32.c 24-77) passent de l'UTF-16 sans \\?\, donc Win32 supprime les espaces de fin par composant et .. devient ... La jointure physique est doc_root + rel_path sans vérification de basedir après stat.

Fausses pistes déjà consignées : traiter l'ENOENT Unix comme « pas un bug » (c'est le contrôle négatif) ; qualifier Cygwin de natif Win32 ; prétendre que le %5C de 1.4.85 est ce reliquat ; gonfler la lecture de fichier en RCE. Théâtre : un reverse shell. L'oracle est un corps 200 provenant du parent de document-root.

Lab

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

ou

cd lab
./run.sh

Le lab est un gadget fidèle de buffer_urldecode_path, buffer_path_simplify (mapping Win32 '\\'), la suppression de queue de response.c, et _wstati64 sans \\?\. L'open POSIX Unix est le contrôle négatif. La résolution Win32 est implémentée comme la même suppression d'espaces de fin par composant, puis . / .., puis un open POSIX du chemin résolu. HTTP loopback 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, aucun témoin.
  2. GET /../windows/win.ini -> 404, /windows/win.ini simplifié.
  3. GET /..%20/windows/win.ini -> décodé /.. /windows/win.ini, simplify a conservé l'espace, ENOENT Unix, Win32 a résolu /srv/windows/win.ini, témoin 200.
SUCCESS lighttpd-win32-dotdot-space how=gadget win32-get=200 unix-open=enoent simplify-kept-dotdot-space=yes LIGHTTPD-WIN32-DOTDOT-SPACE-WITNESS

Le correctif

Supprimer les espaces et points de fin par composant de chemin avant simplify, ou préfixer les opens Win32 avec \\?\ et rejeter un chemin physique qui ne reste pas sous document-root.

Références

  • github.com/lighttpd/lighttpd1.4 tag lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • Correctifs proches (pas ce reliquat) : trailers CVE-2025-12642 · parseopt %5C de 1.4.85 · alias CVE-2018-19052 · Host CVE-2014-2324
  • CWE-22

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab loopback uniquement. Aucune garantie.

Télécharger l’outil