Templates e Plugins

Base64: perigo oculto no código de temas grátis do WordPress

Anúncios Google

Quem lê meus textos sabe que sempre defendi os temas grátis para WordPress como opção interessante, às vezes até melhores que temas premium – todo mundo gosta da gratuidade e compartilhamento de qualquer software, desde que seja essa a vontade do autor. Disponibilizados quase sempre para iniciantes e como forma de divulgação do autor, eles são um bom começo para aprender a customizar estilos e criar pequenos hacks que quando bem aplicados, podem dar-lhe novas funções e uma “cara” de tema pago – de quebra agregando conhecimento durante a construção.

Mas se sua aventura é mais séria, está pensando em ganhar dinheiro com o projeto e levá-lo um passo adiante, é melhor pensar duas vezes antes de sair usando tudo que encontra na internet. Aproveitando-se da inexperiência dos desavisados, hackers fazem modificações em temas e plugins que, mais tarde oferecidos, infectam servidores com as mais variadas funções: de simples redirecionamentos indesejados até espionagem de senhas e roubo de dados. O meio mais comum de infiltrar esses códigos são via Base64.

Base64, o perigo oculto

Base64 é um tipo de codificação usado para enviar dados binários pela internet, útil por exemplo ao transmitir imagens, anexos de e-mail, etc. Como em PHP, linguagem em que boa parte do WordPress é feito, é simples decodificar Base64 com a função base64_decode, ele é muito usado para esconder links e códigos maliciosos – ou não – nos temas e plugins, seja na página functions.php, header.php e footer.php, os mais comuns.

Um link como esse, por exemplo…

<a href="http://www.tutoriart.com.br/">Um link oculto</a>

…depois de codificado em Base64 ficaria assim, totalmente ilegível e um completo mistério para um leigo:

Código em base64

O recurso é usado por alguns desenvolvedores que querem obrigar o blogueiro a manter créditos de rodapé, por exemplo, codificando todo o footer.php assim. Embora seja válido, é bom ter cuidado, porque a maioria não faz isso (já que não é TÃO difícil de decodificar) e quase sempre a presença de Base64 longos em temas e plugins grátis é cilada.

Alguns usam mais de um tipo de codificação juntos, para tentar dificultar ainda mais a remoção dos links ou do código malicioso ser descoberto. Um exemplo tirado do footer de um template grátis:

Código escondido em base64

Veja que é só uma parte do código! Decodificando tudo isso resultou em:

?><?php
gl2b1l $2pt42ns;
f2r51ch ($2pt42ns 1s $v1l35) {
4f (g5t_2pt42n( $v1l35['4d'] ) === FALSE) {
$$v1l35['4d'] = $v1l35['std']; } 
5ls5 { 
$$v1l35['4d'] = str4psl1sh5s(g5t_2pt42n( $v1l35['4d'] )); }} ?>

<d4v 4d="f22t5rT2p"></d4v>
<d4v 4d="f22t5r">
<d4v 4d="f22t5rInn5r" cl1ss="wr1pp5r">

<?php 4f($sl_sh2w_s2c41l == "tr35") : ?>
<3l 4d="s2c41l">
<?php 4f($sl_tw4tt5r) : ?>

<l4><1 hr5f="http://tw4tt5r.c2m/<?php 5ch2($sl_tw4tt5r); ?>" t4tl5="F2ll2w m5 2n Tw4tt5r" t1rg5t="_bl1nk"><4mg src="<?php bl2g4nf2('t5mpl1t5_d4r5ct2ry'); ?>/4m1g5s/1ss5ts/4c2ns/tw4tt5roa_oa.png" w4dth="oa" h54ght="oa" 1lt="Tw4tt5r" /></1></l4>
<?php 5nd4f ; ?>

<?php 4f($sl_f1c5b22k) : ?>
<l4><1 hr5f="http://www.f1c5b22k.c2m/<?php 5ch2($sl_f1c5b22k); ?>" t4tl5="My F1c5b22k pr2f4l5" t1rg5t="_bl1nk"><4mg src="<?php bl2g4nf2('t5mpl1t5_d4r5ct2ry'); ?>/4m1g5s/1ss5ts/4c2ns/f1c5b22koa_oa.png" w4dth="oa" h54ght="oa" 1lt="F1c5b22k" /></1></l4>
<?php 5nd4f ; ?>

<?php 4f($sl_bl2gg5r) : ?>
<l4><1 hr5f="<?php 5ch2($sl_bl2gg5r); ?>" t4tl5="My Bl2gg5r pr2f4l5" t1rg5t="_bl1nk"><4mg src="<?php bl2g4nf2('t5mpl1t5_d4r5ct2ry'); ?>/4m1g5s/1ss5ts/4c2ns/bl2gg5roa_oa.png" w4dth="oa" h54ght="oa" 1lt="Bl2gg5r" /></1></l4>
<?php 5nd4f ; ?>

<?php 4f($sl_4c2n6) : ?>
<l4><1 hr5f="<?php 5ch2($sl_s2c41l_3rl6); ?>" t4tl5="<?php 5ch2($sl_s2c41l_t5xt6); ?>" t1rg5t="_bl1nk"><4mg src="<?php 5ch2($sl_4c2n6); ?>" w4dth="oa" h54ght="oa" 1lt="<?php 5ch2($sl_s2c41l_t5xt6); ?>" /></1></l4>
<?php 5nd4f ; ?>

<?php 4f($sl_4c2na) : ?>
<l4><1 hr5f="<?php 5ch2($sl_s2c41l_3rla); ?>" t4tl5="<?php 5ch2($sl_s2c41l_t5xta); ?>" t1rg5t="_bl1nk"><4mg src="<?php 5ch2($sl_4c2na); ?>" w4dth="oa" h54ght="oa" 1lt="<?php 5ch2($sl_s2c41l_t5xta); ?>" /></1></l4>
<?php 5nd4f ; ?>

<l4><1 hr5f="<?php bl2g4nf2('rssa_3rl'); ?>" t4tl5="S3bscr4b5 t2 RSS f55d" t1rg5t="_bl1nk"><4mg src="<?php bl2g4nf2('t5mpl1t5_d4r5ct2ry'); ?>/4m1g5s/1ss5ts/4c2ns/RSS-oa_oa.png" w4dth="oa" h54ght="oa" 1lt="RSS" /></1></l4> 	
</3l>
<?php 5nd4f ; ?>

<?php 4f($sl_f22t5r_t5xt) : 5ch2($sl_f22t5r_t5xt); 5ls5 : ?>
<p cl1ss="d4scl14m5r">

<?php 5nd4f; ?>          
<p>
THEME: <1 hr5f="http://xxxxx/">W2rdPr5ss Th5m5s</1> | Sp2ns2r5d By: <1 hr5f="http://xxxxxx">D5d4c1t5d S5rv5r</1> | <1 hr5f="http://www.1v14l1bl5c1rds.c2m">Cr5d4t C1rds</1>
</p>
</d4v><!-- 5nd f22t5rInn5r -->
</d4v><!-- 5nd f22t5r -->
</b2dy>
</html>

Um código ainda não totalmente quebrado: as vogais estão trocadas por números, porque foi usada a função strtr para tal. Descodificada totalmente, resulta quase nisso (eliminei parte do código, é só pra ilustrar):

<div id="footerTop"></div>
<div id="footer">
<div id="footerInner" class="wrapper">

<?php if($sl_show_social == "true") : ?>
<ul id="social">
<?php if($sl_twitter) : ?>

<li><a href="http://twitter.com/<?php echo($sl_twitter); ?>" title="Follow me on Twitter" target="_blank"><img src="<?php bloginfo('template_directory'); ?>/images/assets/icons/twitter21_21.png" width="21" height="21" alt="Twitter" /></a></li>
<?php endif ; ?>

[...]

<p>
THEME: <a href="http://LINK-REMOVIDO1">WordPress Themes</a> | Sponsored By: <a href="http://LINK-REMOVIDO2">Dedicated Server</a> | <a href="http://LINK-REMOVIDO3">Credit Cards</a>
</p>
</div>
</div>
</body>

Nesse caso, não chega a ser uma grande ameaça direta: são links sociais do footer, mais três links de crédito do autor – esses poderiam apontar, por exemplo, para um URL de site de apostas, pornografia ou outra coisa não muito recomendável para todos os públicos, e o usuário nada poderia fazer para tirá-los dali.

Mas nem sempre esses códigos são inofensivos assim.

Exemplo menos ingênuo

Em todos os temas oferecidos no ZJTThemes (não vou linkar aqui) há códigos maliciosos. Se você tentar baixá-los tendo o Avast instalado, será impedido de completar o download assim que for feita a varredura no .zip (o Avast pega a ameaça dentro do PHP na checagem prévia do arquivo compactado antes de salvá-lo na sua máquina).

Para mostrar, desativei o anti-vírus e baixei um deles (corri o risco de baixar algo nocivo no esquema “drive-by download“, quando um arquivo é enviado junto com outro sem seu consentimento, mas não aconteceu dessa vez), o Kimtea – poderia ser qualquer outro, todos os grátis dali estão contaminados.

No seu arquivo functions.php, logo no começo, já tem um longo trecho de base64 que está comentado como “retrieve image ends”, mas é mentira, ele não faz nada com imagens; na verdade inclui um PHP no tema, chamado “wp_funcs.php” – esse arquivo está na raíz do tema.

include_once get_theme_root() . '/' . get_template() . '/wp_funcs.php';

Aí você vai no tal wp_funcs.php e adivinha o que tem lá?

Mais base64!

Depois de decodificado, resulta num código enorme que, entre outras coisas, checa informações do servidor, da versão do template, versão do WordPress e e-mail do administrador, para fins que, “supõe-se”, seja checar se o footer não foi alterado (?), mas ainda são encontrados vários outros trechos em Base64 no resto do tema.

Claro que o autor tem autonomia pra decidir se o usuário pode ou não remover os links, afinal está oferecendo seu tema de graça. Mas eu, como usuário, tenho autonomia de não usar temas com esse tipo de “proteção” de forma nenhuma, e para sua segurança, sugiro também que pense bem antes de arriscar-se. Há muitos outros temas grátis sem isso, é só procurar. Como disse antes, nem todo código escondido é assim tão bonzinho.

Como se prevenir

Só baixe de sites seguros

Cheque com ferramentas como o Sucuri Sitecheck se há ameaças conhecidas no url que oferece os temas. Esses sites costumam ser incluídos em listas negras quando detectados como distribuidores de spam, malware e afins.

Decodifique os Base64 por garantia

Baixou o tema e achou Base64 nos arquivos? Use alguma ferramenta para conferir o que o autor quis esconder ali, só por precaução. Há várias opções como esse decodificador de eval gzinflate base64, e pesquisando por “base64 decoder online” você acha muitas outras.

Nota importante: se o autor codificou os links no rodapé e você os remover, estará violando seu direito autoral e a licença de uso grátis. Se notar que o código escondido não é nocivo, não o remova, e se for nocivo, não remova também – simplesmente não use aquele tema ou plugin. Se quer um tema sem os códigos de rodapé, compre um ou procure outro.

Não use plugins e temas piratas

Ficou felizão porque aquele super tema que você viu no ThemeForest por US$$50,00 está sendo oferecido de graça num site bonitinho logo ali?  Então pense por alguns minutos: que vantagem o cara levou em gastar comprando o original, e depois colocar de graça para todo mundo pegar no site dele – que por ser pirateador, nem pode ser monetizado direito? Nem a sua visita será rentável pra ele.

Pois é, a vantagem é que naquele tema modificado estão alterações que você dificilmente vai captar, mas que compensarão para quem distribuiu, como malwares diversos. Se seu blog é profissional, certamente os tais US$50,00 são uma merreca perto da segurança que o tema original dá: código 100% limpo e confiável, suporte do autor (que costuma até fazer login na sua conta e configurar o tema pra você, se pedir), arquivos de apoio e a tranquilidade de saber que seu projeto está legal.

Esteja atualizado

Se atualizar o WordPress assim que um update é lançado pode não ser uma boa (se houver um bug que passou pela fase beta, você estará entre os primeiros a se ferrar), também não é bom deixar o blog rodando numa versão muito antiga. Com o tempo, o código vai sendo examinado pelos hackers e novas formas de burlar o sistema criadas, por isso as atualizações trazem mais segurança.

O mesmo vale para templates e plugins.

Plugins de segurança

Pesquise pelo menu Plugins > Adicionar novo, na caixa de pesquisa do seu blog:

Theme Authenticity Checker – fará a revisão dos temas que você tem, e se houver coisas suspeitas como Base64 ou links estáticos (que também podem apontar para lugares inseguros), ele lista tudo pra você. Aí é só abrir o arquivo que o contém e limpar.

Exploit Scanner – roda uma checagem para procurar brechas na segurança de seu blog. Vai mostrar todos os códigos suspeitos, mas cuidado pra não sair deletando o que não deve – é  comum que ele exiba qualquer Base64 como ameaça, seja ele inofensivo ou não.

Better WP Security – um dos melhores plugins de segurança do WordPress, com várias melhorias facilmente corrigidas de forma bastante intuitiva. Mais que recomendado.

WP Security Scan – também de forma bem didática mostra melhorias de segurança que seu blog pode ter, como correção de permissões de pastas, força de passwords, etc.

Sucuri Scanner – excelente plugin que varre seu blog em busca de ameaças, e ainda sugere melhorias que podem ser aceitas (ou não) com um clique.

Author

Fundador do Tutoriart em 2010, é ex-instrutor de Photoshop, design web e gráfico. Em quase uma década de redação online, tem cerca de 1500 artigos publicados. Gerencia também o Memória BIT.

6 Comments

  1. Valeu pelo post muto bem explicado, tinha pesquizdo no google, valeu pela dica

Write A Comment

Pin