Dados sensíveis em arquivos com extensão .inc

Muitos desenvolvedores PHP acabam usando em seus códigos arquivos com extensão .inc, para configuração de variáveis ou inclusão de informações relevantes no site ou sistema. O uso de arquivos com este tipo de extensão é um simples convencionamento, quando se deseja incluir algum dado em uma área específica da aplicação. Não existe problema algum em usar arquivos com esta extensão no PHP, desde que o conteúdo que deseja "incluir" NÃO seja um dado sensível.

[ Hits: 6.516 ]

Por: Augusto de Paula Pereira em 28/05/2015 | Blog: http://www.augustopereira.com.br


Introdução



Muitos desenvolvedores PHP acabam usando em seus códigos, arquivos com extensão .inc para configuração de variáveis ou inclusão de informações relevantes no site ou sistema. O uso de arquivos com este tipo de extensão, é um simples convencionamento quando se deseja incluir algum dado em uma área específica da aplicação.

Não existe problema algum em usar arquivos com esta extensão no PHP, desde que o conteúdo do que deseja "incluir", NÃO seja um dado sensível.

O que acontece muitas vezes, é que por descuido ou desconhecimento, alguns programadores utilizam arquivos com extensão ".inc" para configuração de variáveis sensíveis, como usuário e senha de banco de dados, senhas diversas, cookies, hashs etc. Além de usar arquivos com extensão ".inc" para lidar com esses tipos de dados, ainda não configuram o servidor de forma apropriada para lidar com este tipo de arquivo. E é aí que mora o problema!

Cenários

Por padrão, os servidores não processam arquivos com extensão ".inc", deixando-os assim, para serem processados do lado do cliente. Assim, os navegadores web simplesmente mostram todo o conteúdo do arquivo em texto simples expondo todos os dados dentro dele.

Um exemplo deste cenário, seria um arquivo chamado "conectaBancoDeDados.inc" na raiz do servidor com o seguinte conteúdo:

<?php
define('DB_DRIVER', 'mysql');
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PWD', 'senha');
define('DB_DATABASE', 'meubancodedados');

try {
    $pdo = new PDO(DB_DRIVER.':host='.DB_HOST.';dbname='.DB_DATABASE, DB_USER, DB_PWD);

      if ($pdo) {
        echo "Conexão realizada com sucesso!";
      } else {
        echo "Problemas na conexão!";
      }

} catch (PDOException $exc) {
    echo "Problemas na conexão!";
    echo $exc->getMessage().
}
?>

Neste caso, o propósito para o qual o arquivo se serve, conectar no servidor MySQL, funcionaria sem problemas. Ou seja, incluindo-o em alguma área do site para conexão com o banco de dados através de um arquivo chamado "configura.php", por exemplo, o sistema iria funcionar tranquilamente.

Exemplo do arquivo "configura.php":

<?php
require_once('conectaBancoDeDados.inc');
?>

Todavia, se o arquivo "conectaBancoDeDados.inc" for acessado diretamente via navegador web do usuário, por padrão, todo o conteúdo seria apresentado na tela como foi escrito. Dessa forma, os dados sensíveis como endereço do servidor MySQL, usuário, senha e base de dados, estariam expostos para qualquer pessoa ou até mesmo "crawlers", que ficam sondando este tipo de dados na web.

Você poderia afirmar: "ah, mas para isso a pessoa teria que saber o nome exato do meu arquivo .inc e eu poderia colocar um nome bem difícil que ninguém descobriria".

É verdade! Em muitos casos, fica difícil saber exatamente o nome do arquivo por tentativa e erro, porém existem bots na internet, como o próprio GoogleBot, que facilitaria o trabalho de descoberta.

A internet é monitorada por bots o tempo todo para os mais diversos propósitos. O GoogleBot, por exemplo, avalia inúmeras páginas diariamente no intuito de verificar possíveis atualizações de conteúdo e se atualizar para cumprir a missão do Google:

"Organizar as informações do mundo e torná-las mundialmente acessíveis e úteis."
Nestas avaliações, os bots indexam as páginas para serem apresentadas nos resultados de pesquisa. Com isso, uma simples busca no Google usando os famosos Google Dorks, poderíamos chegar aos arquivos ".inc" em um servidor de forma fácil.

Exemplo de Google Dork para buscar arquivos sensíveis com extensão ".inc": ext:inc

Assim, todas as páginas indexadas com arquivos extensão ".inc" seriam apresentadas como resultado da pesquisa do Google. A partir daí, qualquer um teria acesso aos dados.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Neste caso, o que fazer?
Outros artigos deste autor

Instalações PHP não seguras

Leitura recomendada

Pentesting on PHP apps: XSS

Segurança: Autenticando o PHP com HTTP (Authentication Required)

XSS - Um exemplo de ataque

Vulnerabilidade em formulário PHP

PHP: Programando com segurança

  
Comentários
[1] Comentário enviado por rgrsoares em 07/06/2015 - 13:09h

Para se "divertirem", busquem no google: "conexao filetype:inc" (sem aspas).

[2] Comentário enviado por aprendiz_ce em 03/05/2017 - 11:11h

Excelente dica. Muitas vezes esses detalhes passam despercebidos e acabam causando muita dor de cabeça.
Parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts