PHP.info | Divulgação de dados

72 views
3 mins read

MOSTRAR: Aviso importante: Uso Ético e Profissional do Conteúdo

Todo o conteúdo fornecido neste post destina-se exclusivamente a fins educacionais, de estudo e desenvolvimento profissional e pessoal. As informações aqui apresentadas são para serem utilizadas de forma ética e profissional, em conformidade com todas as leis e regulamentos aplicáveis.


Sobre

O phpinfo() é uma funcionalidade de depuração que imprime informações detalhadas sobre o sistema e a configuração do PHP.

A documentação oficial do PHP recomenda a criação de um arquivo que chame a função phpinfo() para testar se a instalação do PHP foi bem-sucedida. E acaba sendo um erro comum esquecer de remover este arquivo. As informações vazadas pela função phpinfo() incluem caminhos físicos, variáveis ​​de ambiente e as configurações completas do PHP.

O phpinfo() também é uma ferramenta de depuração, pois consiste em todas as informações que um desenvolvedor deseja saber sobre um servidor. Se alguém fizer upload da função phpinfo() para seu arquivo webroot/index.php, poderá ver as configurações do servidor.

 


Riscos

Um invasor pode obter informações como:

  1. Versão exata do PHP.
  2. SO exato e sua versão.
  3. Detalhes da configuração do PHP.
  4. Opções de compilação PHP
  5. Extensões PHP
  6. Endereços IP internos.
  7. Variáveis ​​de ambiente do servidor.
  8. Extensões PHP carregadas e suas configurações.
  9. Cabeçalhos HTTP
  10. phpinfo() Limite de memória
  11. phpinfo() Carregar tamanho máximo do arquivo

Essas informações podem ajudar um invasor a obter mais informações sobre o sistema. Depois de obter informações detalhadas, o invasor pode pesquisar vulnerabilidades conhecidas do sistema em análise. O invasor também pode usar essas informações durante a exploração de outras vulnerabilidades.


Encontrando php.info expostos em seus sistemas

Duas ferramentas que podem ser utilizadas é o famoso Nmap e Nikto, mas para esse post usarei um template do Nuclei.

  1. Download do Nuclei: https://github.com/projectdiscovery/nuclei
  2. Post aqui nesse blog sobre o Nuclei: https://jardel.tec.br/2023/06/20/descubra-o-poder-da-projectdiscovery-io/
  3. Template para procurar php.info expostos: https://github.com/projectdiscovery/nuclei-templates/blob/main/http/exposures/configs/phpinfo-files.yaml

Executando o template:

cat domains.txt | nuclei -t /home/jjardel/phpinfo-files.yaml

Explicação do comadno:

  • cat domains.txt: O comando cat é usado para exibir o conteúdo do arquivo domains.txt no terminal. Ele lê o conteúdo do arquivo e imprime diretamente no terminal. Aqui, ele está sendo usado para mostrar o conteúdo dos domínios contidos no arquivo domains.txt.
  • | (pipe): O caractere | é conhecido como pipe. Ele é usado para redirecionar a saída de um comando para a entrada de outro. No caso do seu comando, ele redireciona a saída do cat, que é a lista de domínios do arquivo domains.txt, para o nuclei.
  • nuclei -t /home/jjardel/phpinfo-files.yaml: Este é o comando nuclei. Ele é usado para realizar a varredura de vulnerabilidades em alvos da web. Aqui, -t é usado para especificar o modelo de teste YAML que será usado pelo nuclei.

Resultado:

Ao contrário do que o template informa, essa vulnerabilidade pode ser tanto low, medium ou critical (como são definidas os resultados no Nuclei). Tudo vai depender do arquivo de configuração e quais informações podem ser encontradas nele.


Dados expostos

Após a fase de recon, é ir realizar a verificação dos endpoints encontrados. E em um dos endereços, achei informações interessantes sobre o ambiente.

E mais algumas dezenas de informações interessantes estavam expostas devido a essa falha.


Mitigação

1- Remoção do arquivo: Se você não precisa mais do arquivo phpinfo.php, a maneira mais simples de desabilitar o acesso é deletando o arquivo completamente do servidor.

2- Bloqueio por configuração do servidor web: Você pode configurar o seu servidor web (como Apache ou Nginx) para negar o acesso ao arquivo phpinfo.php

Apache (.htaccess ou configuração do VirtualHost):

<Files "phpinfo.php">
Require all denied
</Files>

Nginx (dentro do bloco server):

location = /phpinfo.php {
deny all;
}

3- Renomear o arquivo: Você pode renomear o arquivo phpinfo.php para algo que não seja facilmente adivinhado pelos usuários. Por exemplo, você pode renomear o arquivo para lord_of_the_rings_aragorn_zidane_pamonha_palmeiras_batatinhafrita123.php. No entanto, esta é uma medida pouco segura, pois ainda é possível que os usuários adivinhem o novo nome.


Finalizando

De uma maneira simples e rápida, é fácil encontrar esse tipo de configuração em milhares de servidores.

  1. Você como profissional de Cybersegurança, deve ter uma postura de sempre imaginar todos os vetores de ataque que podem ser utilizados contra seu ambiente. E um ponto importante, que vou abordar em outro post é ter um bom inventário de ativos, pois você sabendo o que tem no ambiente, fica mais simples definir planos de busca e mitigação de vulnerabilidades.
  2. Você como bug hunter, tem uma chance de achar algum endpoint interessante para verificar e conseguir alguma recompensa.
  3. Você como estudante, aprendeu que algo básico como uma configuração do php.info feita de maneira errada, pode deixar vazar informações importantes do ambiente.

 

 

Sou um profissional apaixonado pela área de Segurança da Informação. Sou certificado em ISO 27001, ISO 27005, LGPD e GDPR, o que me torna um Data Protection Officer (DPO) certificado. Também sou certificado CC e SSCP pelo (ISC)², bem como um AWS Practitioner. Além do meu trabalho, sou um orgulhoso pai de três filhos, um nerd, um cinéfilo, um leitor voraz e um eterno aprendiz.

Deixe um comentário

Your email address will not be published.

Previous Story

Encontrando credenciais vazadas com Google Chrome

Next Story

Enumeração de arquivos .js e procura de sensitive/secret/data

Latest from BugBounty

API Pentesting

Por que a segurança da API é importante? A segurança da API envolve a segurança dos

Git Exposed

Introdução A questão da segurança na era digital tornou-se rapidamente um tema quente. Todos nós já