LFI - Local File Inclusion
Essa vulnerabilidade ocorre quando a aplicação permite que o usuário inclua algum arquivo. Vamos supor que no código fonte há um include que pega por parâmetro via GET e inclui esse arquivo.
Com isso, podemos testar colocar uma barra "/" no parâmetro file para ver como que a aplicação se comporta.
Como esperado, a aplicação tentará incluir o que for passado no parâmetro. Podemos então navegar pelas pastas voltando e lendo alguns arquivos sensíveis, como o /etc/passwd por exemplo.
E pronto, conseguimos ler um arquivo no servidor.
Essa é até uma falha pouco provável de achar, apenas acontecerá se o desenvolvedor realmente confiar no controle que o usuário tem da aplicação, que é algo que não se deve fazer.
Infecção de logs
Uma técnica para conseguirmos uma shell com a falha de LFI, é infectar algum arquivo de logs de algum serviço, como por exemplo, o do apache. O arquivo de logs do apache fica localizado em /var/log/apache2/access.log. A ideia é enviarmos uma requisição maliciosa para o servidor e após isso, utilizar a LFI para ler esse arquivo de log, assim ele irá exibir a requisição e se houver um script PHP ele irá interpretar. Se enviarmos uma requisição ou um arquivo pelo netcat com um comando <?php system($_GET['cmd']); ?> e depois disso lermos o arquivo de logs, ele irá permitir que nós conseguiremos executar um comando no sistema alvo que for passado por parâmetro. Com isso, podemos conseguir uma shell e comprometer esse sistema.
PHP Wrappers
Uma outra forma de explorarmos essa falha, é utilizarmos o php wrappers. Passando qualquer valor, a aplicação retorna esse erro, está inserindo ".php" no final do arquivo passado por parâmetro.
Agora passando o wrapper data:// podemos inserir um código php logo em seguida.
Não apareceu nada na tela, mas se visualizarmos o código fonte, veremos que foi executado normalmente.
Obs: geralmente esse wrapper é passado da seguinte forma: data://text/plain;base64,<código aqui em base64> porém nesse caso não foi necessário codificar para base64.
Last updated