Por que restringir usuários do Apache de executar scripts?

2

Quando os usuários do Apache têm permissão para executar scripts bash via PHP - por que é considerado perigoso? Eu entendo que os usuários podem percorrer todo o sistema de arquivos e até mesmo ver quais usuários adicionais estão hospedados na máquina; eles também podem ler as configurações em conf/httpd.conf . Mas como essa informação irá ajudá-los a hackear o sistema? Considere que o suexec está ativo.

    
por Dor 04.02.2011 / 10:33

1 resposta

4

Existem restrições de segurança (geralmente padrão) no php.ini para evitar que scripts usem muita memória, executem certas funções ou geralmente façam o que não deveriam.

Se você permitir que o PHP execute um script de shell que não seja restrito dessa maneira, você estará abrindo as possibilidades para os invasores. Por exemplo, eles poderiam executar uma garfo bomba e potencialmente colocar seu servidor offline. Eles poderiam participar de um DDoS com mais facilidade ou executar um scanner de vulnerabilidade em outros servidores. Também pode ser muito mais difícil depurar onde algo começou e exatamente como um servidor foi comprometido se você permitir um nível extra de abstração.

Em geral, se um servidor for bloqueado corretamente, o código mal-intencionado é limitado, mas os servidores raramente são bloqueados corretamente. Geralmente, são necessárias duas ou três vulnerabilidades para comprometer um servidor - as permissões 777 não causarão problemas, a menos que alguém comprometa o código do seu site ou um usuário mal-intencionado com acesso vagueie, mas por que correr o risco?

Quando as pessoas tentam entrar no seu servidor, geralmente ficam cegas. Eles estão adivinhando suas configurações do PHP, eles estão adivinhando como seu servidor está configurado, eles estão adivinhando nomes de usuários (/ etc / passwd é legível por todos), eles estão adivinhando seus nomes de banco de dados. Se você permitir que eles leiam arquivos de configuração, você estará tornando sua vida muito mais fácil. Se você permitir que eles enviem seus arquivos PHP contendo nomes de usuário e senhas para as strings de conexão com o banco de dados, você estará tornando isso extremamente fácil. Firewalls de entrada (por exemplo, restringir o MySQL ao localhost) são de uso limitado se você permitir que eles executem o que quiserem em seu servidor.

    
por 04.02.2011 / 12:38