Na segunda feira, o blog MM do Mark Maunder colocou um artigo falando sobre uma vunerabilidade, em um script muito usado em sites/blogs que rodam com WordPress, o TimThumb, que tem como foco a criação de miniaturas (thumbnails) de imagens.
Como o meu blog tem como foco o WordPress ví a necessidade de alertar o problema e fazer uma explicação mais técnica do problema. Então se você tem um blog em WordPress é muito provável que o seu tema faça uso desse script, se você não é desenvolvedor, entre em contato com quem faz a manutenção do código do seu site e peça para ele acessar este artigo ou o artigo original para poder resolver esse problema de segurança.
O que aconteceu?
Segundo o grep, para procurar a fonte do problema, e nada foi encontrado depois ele fez um dump do banco de dados e procurou denovo, nada outra vez.
O grande problema é o hacker que havia colocado o código malicioso no site dele usou uma função chamada eval(base64_decode('string')); e dessa forma você esconde o código real que será exibido em um encode de 64 bits, e na hora da execução o PHP executa o código com a função eval.
Este problema só aconteceu porque as permissões da pasta estavam dando permissão de escrita, mas isso não explica o porque e como este código foi parar no servidor dele.
Acessando alguns logs de erros, do apache e do nginx ele começou a entender qual era o problema.
Segundo o que foi reportado ele usa o tema Memoir da ElegantThemes.com, e como a maioria dos temas de WordPress ele faz uso do TimThumb para fazer o recorte das imagens, e ele carrega a imagem de uma url e para diminuir o uso do servidor faz cache em disco das imagens para tornar o script mais performático.
De uma forma geral, se você conseguir fazer com que o TimThumb carregue um arquivo .php você consegue fazer o que você quiser no servidor a pessoa.
Por padrão a maioria dos sites que usam o TimThumb vem com as permissões para domínios externos com os seguintes sites, para que possa ser possível recortar imagens externas.
$allowedSites = array (
‘flickr.com’,
‘picasa.com’,
‘blogger.com’,
‘wordpress.com’,
‘img.youtube.com’,
‘upload.wikimedia.org’,
‘photobucket.com’,
);
Bom nesta parte do código do TimThumb que mora o problema, pois o desenvolvedor usa o strpos para verificar o domíno, e dessa forma se em qualquer parte da URL tiver um destes domínios permitidos, o usuário consegue fazer fetch de um arquivo PHP para o seu servidor.
Por exemplo, http://flickr.com.hacker.com.br/gotcha.php, será um domínio válido para o TimThumb e ai o script irá pegar esse arquivo e colocar na pasta de Cache do seu TimThumb…
Assim como o
No ataque foi colocado um arquivo .php com um código chamado Alucar, que se esconde, como dito acima com decode_base64, e mesmo se todo o resto do seu servidor for seguro o Alucar permite que você coloque arquivos no servidor e consiga senhas e usuários de administração.
A tela que o Alucar mostra para o usuário é essa, a não ser na primeira vez que ele pede um login e senha.
Solução
Bom é bem simples solucionar o problema com o TimThumb, você deve atualizar a sua versão do TimThumb para a última versão que está sendo destribuida no Grupo do Google do TimThumb.
Agora se você já foi infectado é um pouco mais complexo, nada impossível mas é mais chato. Abaixo segue uma listinha de passos para descobrir se foi infectado e abaixo o link para as duas versões do código do Alucar:
- Logue por SSH no seu servidor
cdpara a a raiz do WordPress- Rode o comando,
grep -r base64_decode * - Você deve ver algumas ocorrências de arquivos com essa função e uma grande string como argumento
Como qualquer arquivo pode ter sido colocado em seu servidor, não só o Alucar, não tem como saber o que foi mudado. Mas descobrindo qual foi o arquivo que foi executado é possível fazer uma engenharia reversa e descobrir o que foi mudado, agora não é um processo que uma pessoa com conhecimentos básicos de PHP vai conseguir resolver, então recomendo que verifique se você tem algum arquivo PHP na pasta onde o seu TimThumb foi configurado para fazer Cache.
Qualquer dúvida ou problema, deixe nos comentários que eu tento ajudar.


Thiago
on 03/08/2011 at 15:32 said:Post de utilidade pública, muito bom. Com certeza vai ajudar muita gente. Vlw.
Pingback: Unlock Gamers “Hackeada” – Mas nada tão sério assim.