))%20hack%20-%20como%20evitar%20que%20isso%20ocorra%20novamente%3F.png)
Recentemente, tivemos um site hackeado, onde algum código PHP foi injetado no arquivo index.php que se parecia com:
avaliação (gzinflate(base64_decode('s127ezsS/...bA236UA1')));
O código estava causando a inclusão de outro arquivo php (cnfg.php), o que fazia com que algum spam relacionado a produtos farmacêuticos fosse exibido (mas visível apenas para googlebot et al). Parece um hack farmacêutico para wordpress, exceto que não estamos executando esse software. O código já foi removido, mas gostaria de evitar que tais ocorrências aconteçam no futuro.
Sei que este é um problema bastante amplo e que pode haver uma infinidade de falhas de segurança que podem ser responsáveis, mas pensei em divulgar isso caso alguém já tenha tido experiência com esse problema no passado.
Quais são algumas possíveis falhas de segurança que permitiriam o upload desses arquivos php? E o que posso fazer para evitar que isso aconteça no futuro?
Saúde
Responder1
Você precisa descobrir como isso foi parar aí.
- O invasor teve acesso ao sistema de arquivos por meio de sftp/scp?
- Se isso aconteceu, você precisa bloquear seus métodos de acesso remoto
- O invasor usou algum script de upload ou algum bug em um script existente que permitiu modificar arquivos?
- Corrija o script, altere as permissões em seus scripts e conteúdo da web para que o processo do servidor web não possa alterá-los. O servidor web deve se limitar a modificar arquivos em um diretório de dados em algum lugar. Seus scripts e arquivos geralmente não devem pertencer ou ser graváveis pelo servidor web.
- O script veio como parte de algum software malicioso que você não instalou?
- Já vi coisas assim incluídas como parte de modelos wordpress. Um usuário desavisado baixou modelos de algum site aleatório. Esses modelos incluíam uma função para executar código em um servidor web externo. Isso, combinado com configurações de permissão inadequadas, permitiu que o invasor modificasse outras coisas.
Responder2
Apenas um aviso.
Se você estiver usando o FileZilla como seu cliente FTP, existe um malware por aí que irá capturar suas credenciais de FTP do ARQUIVO DE TEXTO PLANO do Filezilla (caramba!) e usar essas informações para inserir o código do malware (indicado pelo tipo de código #b58b6f# em torno de um comando "gzinflate (base64_decode)" É assim que seus arquivos serão atacados/comprometidos.
Procure na sua pasta %APPDATA%/Roaming/Filezilla. Um dos arquivos XML contém todas as credenciais do seu site FTP (usuário/senha/etc) em TEXTO SIMPLES! E o pessoal do FileZilla se recusa a consertar essa óbvia falha de segurança.
Minha recomendação: exclua o FileZilla do seu computador (e você terá que excluir manualmente a pasta na sua pasta APPDATA).
Se você precisar de um cliente FTP seguro, use WinSCP (www .winscp .net ), onde você pode definir uma senha mestra e todas as credenciais do seu site serão criptografadas.
Apenas um aviso... Rick...J
Responder3
Há um grande número de possibilidades de como isso poderia ter acontecido. Uma informação que ajuda a limitar isso é que tipo de hospedagem você tem (compartilhada, dedicada, virtual) e quem é seu host. Alguns pontos de entrada potenciais são
- Comprometimento da conta de administrador
- Compromisso deseuconta ftp/ssh/web console/etc com seu provedor. Se você enviar sua senha por meio de um protocolo não criptografado (como FTP), pare de fazer isso.
- Compromisso deseuprópria máquina de desenvolvimento local
- Vulnerabilidade é qualquer software de servidor no servidor, como Apache ou qualquer um de seus módulos.
Vulnerabilidade em nível de aplicativo no PHP em seu site:
- Você está usando software de terceiros e, em caso afirmativo, está tudo atualizado?
- Você escreveu uma quantidade significativa de sua própria programação no site? Nesse caso, há um milhão de maneiras de você ter escrito um buraco. Verifique qualquer método que toque em dados originados da entrada do usuário (REQUEST/GET/POST/COOKIES/FILES). Se você permitir uploads de arquivos, você os salva sem filtro em um diretório visível na Web? Nesse caso, alguém poderia fazer upload de um script .php e visualizá-lo. As instruções include/require são alvos especialmente importantes se você usar uma solução de modelos como:
<?php include $_GET['page'] . '.php'; ?>
Como evitar que isso se repita?
- Certifique-se de confiar totalmente na segurança do seu host. Ligue para eles e questione-os sobre suas políticas de segurança, a rapidez com que corrigem seus serviços quando surgem vulnerabilidades, etc.
- Ignore a hospedagem compartilhada barata e pague por uma hospedagem dedicada ou virtual dedicada. Menos pessoas usando o servidor significa menos vetores de ataque
- Mantenha seus próprios aplicativos/bibliotecas de terceiros atualizados. Entre em sua lista de e-mails, feeds RSS ou qualquer coisa para se manter atualizado com seus lançamentos.
- Audite seu próprio código. Se você não tem experiência suficiente para isso, encontre alguém que pague por isso.
- Mantenha seu site sob controle de versão como git ou subversion. Mantenha seu diretório de produção como uma cópia de trabalho para que você possa detectar facilmente alterações em sua base de código (mas certifique-se de bloquear o acesso a metadados como diretórios .git e .svn).
Responder4
Você pode querer tentarhttp://www.hardened-php.net/suhosin/que, entre outras coisas, poderia ter desabilitado eval(). Se o cnfg.php fosse hospedado remotamente, ele também poderia ter evitado sua inclusão.
Se possível, não conceda ao usuário que o servidor web está executando como acesso de gravação aos arquivos php.