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

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

Acordei e descobri que todas as pastas em meu host compartilhado com 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:http://pastie.org/779226(o que...?) Esse código foi injetado até dentro de alguns arquivos PHP.

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?

Sou apenas um programador do lado do cliente. Seria ótimo se eu tivesse alguns conselhos sobre como evitar que isso aconteça no futuro.

Saúde.

Responder1

Aqui está a versão desofuscada do script:http://pastie.org/private/iobgt7aetg8mezoepucsg

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 é permitir uploads de arquivos em um diretório acessível externamente. Fazer isso sem a validação adequada é 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 tais problemas, certifique-se de que:

  • Os processos PHP são executados por um usuário limitado.
  • 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 do bit de execução ou não).
  • Defina apenas o diretório de upload como gravável.
  • Tente usar um diretório de upload que esteja fora do seu webroot. Então usereadfile()para servir o arquivo.
  • Valide os arquivos. Se você deseja que seu formulário permita apenas imagens, valide os bits mágicos e certifique-se de que a imagem é válida. Este é um passo extremamente esquecido. 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.

Responder2

Existem 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 aconteçam:

  1. Use uma senha complexa (mínimo 9 caracteres, mistura de letras maiúsculas, dígitos e caracteres especiais)
  2. Corra de 777 como se fosse o número da besta; tente dar ao servidor webnão maisdo que permissões de leitura em seus scripts e conceda permissões especiais às pastas/arquivos (espero que raros) onde ele deve ser gravado.

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

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

informação relacionada