You are currently viewing LFD — Uma das Falhas mais graves que você pode ter em sua aplicação #LGPD

LFD — Uma das Falhas mais graves que você pode ter em sua aplicação #LGPD

Um pouco da minha história

Embora eu nunca tenha trabalhado na área de segurança, todo conhecimento que eu possuo em tecnologia se deve a ela, há 10 anos atrás eu começava meu grande interesse por Hacking em geral, admito que toda cultura pop e filmes relacionados a esse assunto sempre me cativaram muito me influenciando muito a estudar assuntos relacionados a esse tema como programação, engenharia reversa, engenharia social e redes mas acabei não seguindo com isso como profissão, e com as novas leis de proteção de dados e privacidade, resolvi compartilhar um pouco do meu conhecimento e ajudar a comunidade a manter suas aplicações mais seguras, com algumas técnicas de como se proteger.

Um case dessa falha em um grande sistema

Um dia eu estava no Portal da minha Universidade que é uma das maiores do país e faz diversos comerciais por ai, quando de repente preciso baixar um arquivo de estudo e decidi verificar se o sistema iria filtrar minhas entradas e o resultado foi que eu consegui baixar os arquivos .php do sistema, após descobrir essa falha notifiquei a equipe de desenvolvimento e ao meu coordenador de curso, que em poucos instantes corrigiram a falha.

Image for post

Chega de enrolação, vamos ver o que é esse tal de LFD afinal?

A sigla LFD significa Local File Disclosure, podemos traduzir como Divulgação de Arquivos Locais, ou seja o vazamento de arquivos locais do seu sistema, quando eu falo arquivos locais eu estou falando de qualquer arquivo do seu servidor dependendo da gravidade da falha 🙁

O maior objetivo do atacante são os arquivos de configuração e os confidenciais, como os arquivos de senhas do linux citados abaixo:

"/etc/passwd/" ou  "/etc/shadow" no linux

O arquivo /etc/passwd contém a localização dos usuários e senhas do linux e é um arquivo muito utilizado para outra falha a LFI e o arquivo /etc/shadow contém as reais senhas de cada um dos usuários do servidor criptografadas.

-Sabe aquele seu arquivo de configuração da sua aplicação que tem todas credenciais para se conectar no banco de dados?

Então é através dele que o atacante consegue se conectar em seu banco de dados e realizar maiores estragos…

Como detectar essa falha no meu sistema?

Essa falha pode ocorrer quando você possui em seu sistema alguma funcionalidade de Download de aquivos, imagina que seu sistema permita o usuário exportar e baixar uma planilha com dados, ou um arquivo PDF, algo bem comum dos diversos sistemas de hoje em dia.

Como eu já programei muito tempo com PHP além de ser uma das mais utilizadas para criação sites então vou dar todos exemplos com essa linguagem mas essa falha não se limita a ela…

É muito comum termos um script chamado baixar.php ou download.php com essa lógica de programação, o usuário faz um GET com nome do arquivo e realiza o download do arquivo. Se você tem um script igual esse sem verificar a entrada do GET por favor vá agora no seu servidor e corrija isso!

Image for post

link do arquivo : https://github.com/3t1n/lfd/blob/master/baixar.php

Para corrigir essa falha como eu tinha dito anteriormente deve se filtrar a entrada utilizando expressões regulares (o bom e velho RegEX), e além de se filtrar a entrada de dados da variável que contém o GET, você pode verificar a extensão e fazer um withlist de extensões permitidas. Outra alternativa para manter ainda mais seguro é armazenar os aquivos de download em uma tabela do seu banco de dados, ou utilizar um serviço externo de storage para não utilizar o mesmo servidor da sua aplicação.

Vamos seguir com a correção com RegEx e verificação de extensão.

Image for post

link do arquivo : https://github.com/3t1n/lfd/blob/master/baixar_correto.php

Hands on demonstrando como conseguir invadir o servidor da aplicação utilizando essa falha.

No vídeo eu demostro como identificar uma aplicação vulnerável a LDF (Local File Disclosure), e como atacante vou explorando essa falha até conseguir acesso ao banco de dados da aplicação com isso consigo executar um backdoor na minha vítima fazendo assim conexão com o terminal da vítima via Reverse TCP e escalando privilégios até o usuário root (Administrador do Sistema).

Referências e links interessantes

https://www.exploit-db.com/exploits/40871

http://blog.inurl.com.br/2012/08/explorando-vulnerabilidade-fopen.html

https://www.exploit-db.com/papers/29856

Deixe um comentário