Invadindo com Snyk: exploração de vulnerabilidade de traversal de diretório no pacote st
25 de fevereiro de 2019
0 minutos de leituraBoas-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).
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:
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:
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.
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.
