🧙‍♂️
nico
  • Design Patterns
    • Factory Method
  • Javascript
    • Como rodar um código JS?
    • Comentários
    • Variáveis
    • Tipos
    • Conversão de tipos
    • Literais
    • Estruturas de Repetição
    • Declaração Condicional
    • Tratamento de Erros
    • Operadores
    • Functions
    • Classes
    • Classes Importantes
    • Programação Assíncrona
    • Módulos
  • Git
    • Básico
    • Branches
    • Listando repositórios remotos e arquivos de configuração
    • Commits
    • Stash
    • Logs
    • Tags
    • Reset e Revert
    • Checkout, Rm e clean
    • Merge
    • Fetch e Pull
    • Show
  • Segurança da Informação
    • Swiss Army Knife
      • Utilitários
    • Information Gathering - Business
      • Métodos de coleta de informações
    • Information Gathering - Business
    • Information Gathering - INFRA
      • Métodos de coletas de informações
    • Information Gathering - Web
      • Métodos de coleta de informações
    • Scanning
      • Tracking the route
      • Firewall
      • Ping Sweep
      • Identificado hosts ativos em uma rede interna utilizando o ARP
      • Nmap: the network mapper
      • Network Sweeping
    • Burlando mecanismos de defesa
      • Bypass Firewall
      • IDS - Intrusion Detection System
      • IPS - Intrusion Prevention System / Bloqueio de Port Scanning
      • Bypass IDS/IPS/FW
    • Enumeration
      • Enumerando HTTP
      • Enumerando HTTPS
      • Identificando WAF - Web Application Firewall
      • Enumerando FTP
      • Enumerando NetBIOS / SMB
      • Enumerando com RPC
      • Automatizando a enumeração NetBIOS/SMB
      • Enumerando POP3
      • Enumerando SMTP
      • Enumerando SSH
      • Enumerando NFS
      • Enumerando SNMP
      • Enumerando MySQL
    • Hashes e Senhas - Linux
      • Entendendo os Hashes
      • Senhas em sistemas Linux
    • Hashes e Senhas - Windows
      • Introdução
      • Obtendo hashes em sistemas modernos
      • Obtendo hashes em servidores AD
      • Descobrindo hashes
      • Obtendo hashes e senhas em cache
      • Validando as credenciais obtidas
      • Obtendo hashes remotamente
      • Obtendo shell no host
      • Pass the Hash
      • Swiss Army Knife
      • Ataque: NBT-NS / LLMNR
    • Pentest Interno
      • Introdução
      • Identificando o escopo na rede.
      • Capturando hashes
      • Validando as credenciais
      • Enumerando as contas do AD
      • Conseguindo domain admin
    • Brute force: Ataques em senhas
      • Wordlists
    • Pentest Web
      • Identificando métodos aceitos
      • Open redirect
      • SQL Injection
      • Full Path Disclosure | Path Traversal or Directory Traversal
      • LFI - Local File Inclusion
      • HTML Injection
      • XSS - Cross Site Scripting
      • Command Injection
      • Bypass upload
    • Buffer Overflow
      • Arquitetura de computadores
      • Introdução
    • Pós exploração
      • Diferença de shells
      • Transferência de arquivos
      • Tunelamento
      • Enumeração Host: Windows
      • Privilégios e Mecanismos de Integridade
      • Bypass UAC
      • Enumeração Host: Linux
  • Docker
    • O que é docker?
    • Criação e edição de containers
    • Criação de imagens
    • Docker compose
  • Backend
    • Gerenciamento de memória
    • Concorrência e paralelismo
  • Data Structures & Alhorithms
    • Binary Search
Powered by GitBook
On this page
  • Infecção de logs
  • PHP Wrappers

Was this helpful?

  1. Segurança da Informação
  2. Pentest Web

LFI - Local File Inclusion

PreviousFull Path Disclosure | Path Traversal or Directory TraversalNextHTML Injection

Last updated 3 years ago

Was this helpful?

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.