Alguém, pela segunda vez, anexou um pedaço de javascript a um site que eu ajudo a executar. Esse javascript seqüestra o Google adsense, inserindo seu próprio número de conta e colando anúncios por todo o lado.
O código é sempre anexado, sempre em um diretório específico (usado por um programa de anúncios de terceiros), afeta vários arquivos em vários diretórios dentro desse diretório de anúncio (aproximadamente 20) e é inserido aproximadamente no mesmo dia da noite para o dia. Tempo. A conta do adsense pertence a um site chinês (localizado em uma cidade a menos de uma hora de onde eu estarei na China no próximo mês. Talvez eu deva ficar bravo ... brincando, meio que), btw ... aqui está a informação sobre o site: http://serversiders.com/fhr.com.cn
Então, como eles poderiam anexar texto a esses arquivos? Está relacionado às permissões definidas nos arquivos (variando de 755 a 644)? Para o usuário do servidor da web (está no MediaTemple, portanto deve ser seguro, não é?)? Quero dizer, se você tem um arquivo com permissões definidas para 777, ainda não consigo adicionar código à vontade ... como eles podem fazer isso?
Aqui está uma amostra do código real para o seu prazer visual (e como você pode ver ... não é muito importante. O verdadeiro truque é como eles conseguiram chegar lá):
<script type="text/javascript"><!--
google_ad_client = "pub-5465156513898836";
/* 728x90_as */
google_ad_slot = "4840387765";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Como várias pessoas o mencionaram, eis o que eu verifiquei (e, quando verificado, quero dizer, procurei o tempo em que os arquivos foram modificados para detectar qualquer estranheza e eu esperei os arquivos por instruções POST e travessias de diretório:
- access_log (nada ao longo do tempo, exceto tráfego normal (ou seja, excessivo) de bots msn)
- error_log (nada além do arquivo usual não existe erros para arquivos com aparência inócua)
- ssl_log (nada além do habitual)
- messages_log (nenhum acesso FTP aqui, exceto eu)
* ATUALIZAÇÃO: ** OK, resolvi. Os hackers da China colocaram fisicamente um arquivo em nosso site que lhes permite fazer todo tipo de coisa administrativa (acesso ao banco de dados, exclusão e criação de arquivos e diretórios, o que for, eles tiveram acesso). Tivemos sorte de não terem feito algo mais destrutivo. Não havia nada nos arquivos de log normais do apache, mas eu encontrei um conjunto diferente de arquivos de log em um analisador de log de servidor da Web e as evidências estavam lá. Eles estavam acessando esse arquivo com seu próprio nome de usuário e senha de administrador e editando o que precisassem ali no servidor. O arquivo deles tem "apache" definido como usuário, enquanto todos os outros arquivos em nosso site têm um nome de usuário diferente. Agora preciso descobrir como eles conseguiram fisicamente esse arquivo em nosso sistema. Suspeito que a culpa disso acabe com o nosso host (Media Temple),
Respostas:
Primeiro de tudo,
chmod 744
NÃO é o que você deseja. O objetivo do chmod é revogar o acesso a outras contas no sistema. Chmod700
é muito mais seguro que chmod744
. No entanto, o Apache precisa apenas do bit de execução para executar seu aplicativo php.chmod 500 -R /your/webroot/
chown www-data:www-data -R /your/webroot/
www-data é comumente usado como a conta do Apache, que é usada para executar o php. Você também pode executar este comando para ver a conta do usuário:
O FTP é terrivelmente inseguro e é muito provável que você tenha sido invadido por esse método. Usando o FTP, você pode tornar os arquivos graváveis e depois infectá-los novamente. Certifique-se de executar um antivírus em todas as máquinas com acesso FTP. Existem vírus que detectam o tráfego local para nomes de usuário e senhas de FTP e, em seguida, efetuam login e infectam os arquivos. Se você se preocupa com a segurança, usará o SFTP, que criptografa tudo. Enviar código-fonte e senhas por fio em texto não criptografado é uma loucura total.
Outra possibilidade é que você esteja usando uma biblioteca ou aplicativo antigo. Visite o site do fornecedor do software e verifique se você está executando a versão mais recente.
fonte
Minhas contas do Media Temple Grid Server foram "hackeadas" assim várias vezes. A segurança deles é muito baixa ... começou com o PLAIN TEXT PASSWORDS no ano passado e continua até hoje (você pode ligar para o suporte técnico e eles dizem "qual é a sua senha?"). Sei porque recebo e-mails mensais sobre como eles mudaram todas as senhas da minha conta e eles realmente entram e alteram as senhas do banco de dados para você toda vez que são invadidos. Essa empresa parece brilhante como o inferno na superfície, mas o servidor da grade está uma bagunça. Eu recomendo mudar imediatamente .
Por favor, veja este post do ano passado sobre o fiasco original (aviso, ele vai te irritar). Foi ladeira abaixo a partir daí. Passei o dia de ação de graças no ano passado longe da minha família e removendo links pornográficos de meus sites. Encantador.
Acompanhe a diversão na página de status deles : ela lhe mostrará tudo sobre as últimas explorações (e, sim, de fato, há uma "exploração possível" lá em cima agora).
fonte
Com base na falta de atividade nos logs de acesso etc. e no fato de que isso está acontecendo aproximadamente ao mesmo tempo, parece que eles comprometeram o servidor e têm algum tipo de script de shell em execução para executar o anexo.
Você verificou o crontab em busca de algo estranho?
Você tentou renomear o diretório e as referências a ele (isso pode quebrar o script do shell)?
fonte
Sim, definitivamente poderia estar relacionado às permissões de arquivo. Ao ter arquivos graváveis pelo processo da web, você está aberto a qualquer vulnerabilidade de segurança nos aplicativos da web em execução. Bloqueie tudo para que o processo da Web não possa ler ou gravar nada além do necessário.
O outro componente está rastreando exatamente como eles estão modificando seus arquivos. Verificar os logs de acesso do servidor da web é um bom ponto de partida. Verifique os últimos horários de login para vários usuários. Você também pode configurar um script que monitore os arquivos para modificação e o notifique para que você possa tentar pegar os criminosos em flagrante!
fonte
Isso parece muito familiar para os hackers do Wordpress que atingiram muitos sites da Network Solutions recentemente. Como você está no Media Temple, é possível que você tenha deixado alguns arquivos visíveis para outros usuários que compartilham sua máquina. Isso explicaria a falta de rastreamentos de log POST ou Apache. Se for esse o caso, seria muito simples injetar código na linha de comando.
fonte
Você está em um servidor compartilhado? Nesse caso (ou até mesmo não), alguém pode ter brutalmente forçado uma senha de FTP e enviado um script que anexou todos os arquivos nos quais poderia ter acesso.
Ou talvez este programa tenha uma façanha.
fonte
Se você tiver acesso apropriado (e suporte ao kernel), tente criar um daemon de monitoramento baseado em inotify ou dnotify para observar as alterações em seus arquivos e, em seguida, use rapidamente "lsof" para ver com qual processo o arquivo está aberto. acesso de gravação. Você também pode usar o strace para monitoramento. Isso deve fornecer uma pista sobre qual executável está sendo explorado.
fonte
Os logs de inspeção de FTP são o primeiro lugar para começar. O log deve conter a maioria das atividades, se não todas, junto com os carimbos de data e hora. Se você souber a que horas seus arquivos foram modificados, poderá determinar se sua conta de FTP está comprometida ou não.
Em seguida, pode ser um script em seu servidor da web que está injetando esse código. Em um cenário de hospedagem compartilhada, acho que é possível fazer a
cat /web/malicious.com/script.js >> /web/innocent.com/index.php
. Isso pode funcionar sob certas condições, como o comando sendo executado pelo usuário httpd e o arquivo index.php também são de propriedade / graváveis por esse usuário. Nesse caso, você deve ter seu provedor de hospedagem para rastrear a conta que está sendo usada para injetar os scripts.fonte
A maioria dos arquivos do site precisa ser legível pelo servidor da web. Em um site somente leitura, apenas os logs precisam ser graváveis pelo servidor da web. defina o proprietário para alguém que não seja o usado pelo servidor da web. Defina a proteção 640 em todos os arquivos, exceto scripts. Defina scripts e diretórios 750. Para arquivos ou diretórios que precisam ser gravados pela web, você pode alterar o proprietário para o servidor da web ou definir o chmod g + 2 nos arquivos ou diretórios relevantes.
fonte
Há um milhão de maneiras possíveis de invadir um site. Eles poderiam ter usado uma vulnerabilidade em seu script, roubado sua senha, uma vulnerabilidade de um site hospedado em conjunto (se você estiver em um host barato), uma vulnerabilidade de algum serviço não relacionado à Web na máquina do servidor. .
Como primeira etapa, verifique a data de modificação do arquivo e verifique os logs de acesso, erro e ftp para qualquer atividade suspeita naquele momento.
fonte
A mesma coisa aconteceu comigo um tempo atrás. Wordpress foi o único software que teria causado algo assim, até onde eu sei.
fonte