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
4há 6 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

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

lighttpd-win32-dotdot-space

Classe: Leitura de arquivo Alcance: Remoto

lighttpd 1.4.85 (4852959) - lighttpd

O staticfile nativo _WIN32 une 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 apenas do caminho inteiro. Portanto, GET /..%20/windows/win.ini permanece /.. /windows/win.ini. _wstati64 / _wopen sem prefixo \\?\ então permitem que o Win32 remova o espaço por componente e trate esse segmento como ...

GET/HEAD não autenticado em lighttpd nativo do 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 nativo Win32 real. A última linha usa how=gadget.

IDainda sem CVE
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
Autenticaçãonenhuma. mod_staticfile padrão
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1, how=gadget

O que um atacante pode fazer

Requer lighttpd nativo do 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). O 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 (mesmo strip, open POSIX); parseopt %5C 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: nenhum neste nível. A onda de parser 1.4.81-1.4.85 já fechou trailers, conflitos de cabeçalho CGI e Content-Length inválido de backend.

buffer_path_simplify só dobra ../ quando walk[2] == '/'. O strip 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 .. se torna ... A junção física é doc_root + rel_path sem verificação de basedir pós-stat.

Erros já registrados: tratar o ENOENT do Unix como "não é um bug" (é o controle negativo); chamar o Cygwin de Win32 nativo; afirmar que o %5C da 1.4.85 é este resquício; inflar a 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 laboratório é um gadget fiel de buffer_urldecode_path, buffer_path_simplify (mapa Win32 '\\'), a remoção da cauda em response.c e _wstati64 sem \\?\. O open POSIX do Unix é o controle negativo. A resolução Win32 é implementada como a mesma remoção de espaços à direita por componente, depois . / .., e então um open POSIX do caminho resolvido. HTTP em loopback 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index, sem testemunho.
  2. GET /../windows/win.ini -> 404, simplificado para /windows/win.ini.
  3. GET /..%20/windows/win.ini -> decodificado para /.. /windows/win.ini, a simplificação manteve o espaço, ENOENT no Unix, Win32 resolveu para /srv/windows/win.ini, 200 testemunho.
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

Remova espaços e pontos à direita por componente de caminho antes de simplificar, ou prefixe aberturas Win32 com \\?\ e rejeite 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
  • Corrigido nas proximidades (não este resquício): CVE-2025-12642 trailers · 1.4.85 %5C parseopt · CVE-2018-19052 alias · CVE-2014-2324 Host
  • CWE-22

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório em loopback. Sem garantias.

Baixar ferramenta