Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
lighttpd-win32-dotdot-space — lighttpd 1.4.85 - Alta - Remoto - Caminho - Win32 nativo GET /..%20/ lê fora do document-root | Kitploit
Ferramentas/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 - Alta - Remoto - Caminho - Win32 nativo GET /..%20/ lê fora do document-root

Ver Repositório
há 2 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - lighttpd-win32-dotdot-space

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

lighttpd-win32-dotdot-space

Classe: Leitura de arquivo Alcance: Remoto

lighttpd 1.4.85 (4852959) - lighttpd

O staticfile nativo _WIN32 junta document-root a rel_path após buffer_path_simplify. O simplify só dobra ../ quando o terceiro byte é /. http_response_prepare_physical remove espaços e pontos à direita do caminho inteiro apenas. Portanto GET /..%20/windows/win.ini permanece /.. /windows/win.ini. _wstati64 / _wopen sem prefixo \\?\ então deixam o Win32 remover o espaço por componente e tratar esse segmento como ...

GET/HEAD não autenticado em lighttpd nativo Windows lê um arquivo regular fora do document-root que a conta do worker consegue abrir. Unix/Linux não é este resíduo. Leitura de arquivo, não RCE.

O lab é um gadget dessas funções de pin. Não é um worker Win32 nativo real. A última linha usa how=gadget.

IDsem CVE ainda
ClasseLeitura de arquivo (path traversal, ..%20/ nativo Win32)
AlcanceRemoto (GET/HEAD não 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
Produtolighttpd1.4
Afetado1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) _WIN32 nativo
Authnenhuma. mod_staticfile padrão
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1, how=gadget

O que um atacante pode fazer

Precisa de lighttpd nativo Windows servindo arquivos estáticos. A conta do worker deve conseguir abrir o arquivo regular alvo.

PrivilégioMétodo / sinkComprovado em lab ou inferido
Ler um arquivo fora do document-rootGET /..%20/<name> não autenticadoComprovado em lab (gadget). Corpo HTTP 200 é o segredo do diretório pai
Mesma classe para outro espaço/ponto ASCII à direita em um componente .. não finalurl-decode e então simplify mantém .. Comprovado em lab para %20. Inferido para outro espaço/ponto à direita
HEAD no mesmo caminhostaticfile HEADInferido. O lab usou GET
Negativo: /../ realbuffer_path_simplify dobra ../Comprovado em lab. 404, /windows/win.ini simplificado, sem witness
Negativo: open POSIX Unix da string física não simplificadaopen("/srv/htdocs/.. /windows/win.ini")Comprovado em lab. ENOENT

Fechado neste resíduo: staticfile Unix/Linux; Cygwin (mesma remoção, open POSIX); %5C parseopt do 1.4.85; alias CVE-2018-19052; Host CVE-2014-2324. Não é RCE. Não é escrita.

Como eu encontrei

Fixe o tag lighttpd-1.4.85. Vinte caçadas. staticfile padrão Unix/Linux, FastCGI, proxy, TLS, auth, HTTP/2, alias/rewrite: nada neste nível. A onda de parser 1.4.81-1.4.85 já fechou trailers, conflitos de header CGI e Content-Length inválido de backend.

buffer_path_simplify só dobra ../ quando walk[2] == '/'. A remoção WIN32 em http_response_prepare_physical (src/response.c 334-360) é a cauda do caminho inteiro. _wstati64 / _wopen (src/fs_win32.c 24-77) passam UTF-16 sem \\?\, então o Win32 remove espaços à direita por componente e .. vira ... A junção física é doc_root + rel_path sem verificação de basedir pós-stat.

Caminhos errados já registrados: tratar ENOENT Unix como "não é bug" (é o controle negativo); chamar Cygwin de Win32 nativo; afirmar que %5C do 1.4.85 é este resíduo; inflar leitura de arquivo para RCE. Teatro: um reverse shell. O oráculo é um corpo 200 vindo do pai do document-root.

Lab

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

ou

cd lab
./run.sh

O lab é um gadget fiel de buffer_urldecode_path, buffer_path_simplify (mapa '\\' do Win32), a remoção de cauda do response.c, e _wstati64 sem \\?\. O open POSIX Unix é o controle negativo. A resolução Win32 é implementada como a mesma remoção de espaço à direita por componente, depois . / .., depois um open POSIX do caminho resolvido. HTTP loopback 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, sem witness.
  2. GET /../windows/win.ini -> 404, /windows/win.ini simplificado.
  3. GET /..%20/windows/win.ini -> decodificado /.. /windows/win.ini, simplify manteve o espaço, ENOENT Unix, Win32 resolveu /srv/windows/win.ini, witness 200.
SUCCESS lighttpd-win32-dotdot-space how=gadget win32-get=200 unix-open=enoent simplify-kept-dotdot-space=yes LIGHTTPD-WIN32-DOTDOT-SPACE-WITNESS

A correção

Remover espaços e pontos à direita por componente de caminho antes do simplify, ou prefixar opens Win32 com \\?\ e rejeitar um caminho físico que não permaneça sob document-root.

Referências

  • github.com/lighttpd/lighttpd1.4 tag lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • Próximos corrigidos (não este resíduo): trailers CVE-2025-12642 · %5C parseopt do 1.4.85 · alias CVE-2018-19052 · Host CVE-2014-2324
  • CWE-22

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab loopback. Sem garantia.

Baixar ferramenta