código injetado dentro do arquivo PHP com permissão 777

4

Eu acordei e descobri que todas as pastas no meu host compartilhado com a permissão 777 tinham dois novos arquivos php. O código dentro do arquivo não pôde ser lido - aqui está a versão decodificada: link (o que ...?) Esse código foi injetado mesmo dentro de alguns arquivos PHP.

Eu não sei como alguém faria isso? Eu sei que ter permissão 777 não é a coisa mais inteligente, mas como eles entraram no meu sistema de pastas em primeiro lugar.

Sou apenas um programador do lado do cliente, seria ótimo se eu tivesse alguns conselhos sobre como evitar que isso acontecesse no futuro.

Felicidades.

    
por coder_ 24.01.2010 / 05:24

2 respostas

8

Aqui está a versão desofuscada do script: link

O código parece incluir código PHP externo de outro site e coleta informações sobre seus visitantes ao fazer isso.

Uma maneira de isso acontecer é que você está permitindo uploads de arquivos em um diretório acessível externamente. Fazer isso sem a devida validação é perigoso, pois um usuário mal-intencionado pode fazer upload de um arquivo PHP (usando o upload de sua imagem) com código malicioso. Se o servidor web não estiver configurado corretamente, o código será executado quando solicitado.

Para evitar esses problemas, certifique-se de que:

  • Processos PHP são executados por um usuário limitado.
  • Os arquivos que não precisam ser editados são configurados para serem graváveis apenas pelo proprietário (0644 ou 0744, dependendo se você precisa ou não do bit de execução).
  • Defina apenas o diretório de upload como gravável.
  • Tente usar um diretório de upload que esteja fora de sua webroot. Em seguida, use readfile() para veicular o arquivo.
  • Valide os arquivos. Se você quiser que seu formulário apenas permita imagens, valide os bits mágicos e certifique-se de que a imagem é válida. Este é um passo extremamente negligenciado. O mesmo se aplica a qualquer outro formato. Não confie na extensão do arquivo ou no tipo MIME enviado pelo cliente. Verifique o conteúdo real do arquivo.
por 24.01.2010 / 06:16
2

Há pelo menos duas possibilidades em que posso pensar:

  1. Eles encontraram sua senha de FTP
  2. Eles encontraram uma falha no seu software PHP

Para evitar que isso aconteça:

  1. Use uma senha complexa (mínimo de 9 caracteres, maiúsculas e minúsculas, dígitos e caracteres especiais)
  2. Corra de 777 como se fosse o número da besta; tente dar ao servidor da web sem mais do que permissões de leitura em seus scripts, e dê permissões especiais para as (esperançosamente raras) pastas / arquivos em que ele precisa escrever.

Se você tiver acesso a alguns logs (os logs de acesso do Apache e os logs de FTP de qualquer servidor FTP que seu website executa), isso pode ser útil para ver o que aconteceu.

É duvidoso que eles conseguiram fazer tantas mudanças com uma simples falha em seus scripts, a menos que seja uma falha realmente ampla (como se você tivesse um script desprotegido envolvendo apenas fopen () sobre o que o usuário gosta), então eu Verifique a prioridade de login do FTP.

    
por 24.01.2010 / 05:34