Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
lighttpd-win32-dotdot-space — lighttpd 1.4.85 - Alta - Remota - Ruta - Win32 nativo GET /..%20/ lee fuera del document-root | Kitploit
Herramientas/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónLabs y Práctica
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 - Alta - Remota - Ruta - Win32 nativo GET /..%20/ lee fuera del document-root

Ver Repositorio
hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - lighttpd-win32-dotdot-space

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

lighttpd-win32-dotdot-space

Clase: Lectura de archivos Alcance: Remoto

lighttpd 1.4.85 (4852959) - lighttpd

El staticfile nativo _WIN32 une document-root con rel_path después de buffer_path_simplify. Simplify solo pliega ../ cuando el tercer byte es /. http_response_prepare_physical elimina los espacios y puntos finales de la ruta completa únicamente. Por lo tanto, GET /..%20/windows/win.ini permanece como /.. /windows/win.ini. _wstati64 / _wopen sin un prefijo \\?\ permiten entonces que Win32 elimine el espacio por componente y trate ese segmento como ...

GET/HEAD no autenticado en lighttpd nativo de Windows lee un archivo regular fuera de document-root que la cuenta del worker puede abrir. Unix/Linux no es este remanente. Lectura de archivos, no RCE.

El laboratorio es un gadget de esas funciones de fijación. No es un worker nativo Win32 en vivo. La última línea usa how=gadget.

IDsin CVE todavía
ClaseLectura de archivos (path traversal, nativo Win32 ..%20/)
AlcanceRemoto (GET/HEAD no autenticado)
CWECWE-22
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Productolighttpd1.4
Afectado1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) nativo _WIN32
Autenticaciónninguna. mod_staticfile por defecto
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1, how=gadget

Qué puede hacer un atacante

Requiere lighttpd nativo de Windows sirviendo archivos estáticos. La cuenta del worker debe poder abrir el archivo regular objetivo.

PrivilegioMétodo / sinkProbado en laboratorio o inferido
Leer un archivo fuera de document-rootGET no autenticado /..%20/<name>Probado en laboratorio (gadget). El cuerpo HTTP 200 es el secreto padre
Misma clase para otro espacio/punto ASCII final en un componente .. no finalurl-decode y luego simplify mantiene .. Probado en laboratorio para %20. Inferido para otro espacio/punto final
HEAD en la misma rutastaticfile HEADInferido. El laboratorio usó GET
Negativo: /../ realbuffer_path_simplify pliega ../Probado en laboratorio. 404, simplificado /windows/win.ini, sin testigo
Negativo: apertura POSIX de Unix de la cadena física no simplificadaopen("/srv/htdocs/.. /windows/win.ini")Probado en laboratorio. ENOENT

Cerrado en este remanente: staticfile de Unix/Linux; Cygwin (mismo strip, apertura POSIX); %5C parseopt de 1.4.85; alias CVE-2018-19052; Host CVE-2014-2324. No es RCE. No es una escritura.

Cómo lo encontré

Fijé la etiqueta lighttpd-1.4.85. Veinte búsquedas. Staticfile por defecto de Unix/Linux, FastCGI, proxy, TLS, auth, HTTP/2, alias/rewrite: ninguno en este nivel. La oleada de parser 1.4.81-1.4.85 ya cerró trailers, conflictos de cabeceras CGI y Content-Length de backend inválido.

buffer_path_simplify solo pliega ../ cuando walk[2] == '/'. El strip WIN32 en http_response_prepare_physical (src/response.c 334-360) es la cola de la ruta completa. _wstati64 / _wopen (src/fs_win32.c 24-77) pasan UTF-16 sin \\?\, por lo que Win32 elimina los espacios finales por componente y .. se convierte en ... La unión física es doc_root + rel_path sin verificación de basedir posterior al stat.

Giros equivocados ya registrados: tratar ENOENT de Unix como "no es un bug" (es el control negativo); llamar a Cygwin nativo Win32; afirmar que %5C de 1.4.85 es este remanente; inflar la lectura de archivos a RCE. Teatro: una reverse shell. El oráculo es un cuerpo 200 desde el padre de document-root.

Laboratorio

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

o

cd lab
./run.sh

El laboratorio es un gadget fiel de buffer_urldecode_path, buffer_path_simplify (mapa '\\' de Win32), el strip de cola de response.c, y _wstati64 sin \\?\. La apertura POSIX de Unix es el control negativo. La resolución de Win32 se implementa como el mismo strip de espacio final por componente, luego . / .., luego una apertura POSIX de la ruta resuelta. HTTP en loopback 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, sin testigo.
  2. GET /../windows/win.ini -> 404, simplificado /windows/win.ini.
  3. GET /..%20/windows/win.ini -> decodificado /.. /windows/win.ini, simplify mantuvo el espacio, ENOENT de Unix, Win32 resolvió /srv/windows/win.ini, testigo 200.
SUCCESS lighttpd-win32-dotdot-space how=gadget win32-get=200 unix-open=enoent simplify-kept-dotdot-space=yes LIGHTTPD-WIN32-DOTDOT-SPACE-WITNESS

La solución

Eliminar los espacios y puntos finales por componente de ruta antes de simplify, o prefijar las aperturas de Win32 con \\?\ y rechazar una ruta física que no permanezca bajo document-root.

Referencias

  • github.com/lighttpd/lighttpd1.4 etiqueta lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • Parcheados cercanos (no este remanente): trailers CVE-2025-12642 · %5C parseopt de 1.4.85 · alias CVE-2018-19052 · Host CVE-2014-2324
  • CWE-22

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo laboratorio en loopback. Sin garantía.

Descargar herramienta