Vulnerabilidade em Auto Surfs por SQL Injection

Olá amigos!
Venho hoje trazer para vocês algo que vai deixar muito dono de auto surf com o cabelo em pé!
Há alguns meses atrás com a ajuda de um amigo e parceiro de auto surf, descobrimos uma terrível falha de segurança em scripts de auto surfs.
TODOS OS AUTO SURFS, EU DISSE TODOS!
Que possuam sistema de rotação de banner com link de redirecionamento desta forma:
http://seusite/banner.php?action=r&id=(id do banner) possuem vulnerabilidade a SQL Injection.
Infelizmente o programador que criou o arquivo original, deixou algumas brechas de segurança no script, permitindo que com programinhas medíocres seja possível explorar todo o banco de dados do site e obter senhas e o que mais o invasor desejar.
E aí ficou de cabelos em pé? Eu também fiquei! pois afinal meu site também tinha este problema e eu desconhecia!
Pois bem, eu não poderia deixar tudo como está e correr riscos.
Reescrevi o sistema de banners rotativos com as devidas medidas preventivas e filtros para barrar este tipo de invasão.
Mas como se trata de algo tão sério.. não posso ficar só pra mim e deixar que meus colegas administrem seus auto surfs a dura sorte como eu fiz a mais de 3 anos.
Estou compartilhando com vcs o script modificado junto com as modificações necessárias:
O download pode ser efetuado logo abaixo.
Outra vantagem está no tamanho do arquivo, sendo que o original ocupava cerca de 7 KB ou mais.
Esta nova versão não passa de míseros 700 bytes significando menor consumo de banda de seu site, simplicidade e maior segurança aliados.

Importante: o sistema de banners antigos era chamado por java script no site (na páginas: header.php, ptcbar.php, surfbar.php, headermem.php)
Após esta modificação o sistema funciona apenas via include. Portanto é necessário pequenas alterações nas páginas acima citadas. veja abaixo o que precisa fazer:
Baixe o anexo abaixo e envie para seu diretório principal.

Em header.php e headermem.php

Antigamente era assim:
<div id="divbanner">
<script language="JavaScript" src="/banner.php?style=non_ssi"></script></div>
Você deve deixar assim:
<div id="divbanner">
<? include ("banner.php")?></div>


Em surfbar.php

Antigamente era assim:
echo("</font></div></td><td width=\"50%\"><div align=\"center\">$surf_ban_rotator<br><font size=1> Usu&aacute;rio #<b>" . ......resto do código não importante para nós
$surf_ban_rotator  Este carinha fazia a chamada do arquivo banner.php


Você deve deixar assim:

echo("</font></div></td><td width=\"50%\"><div align=\"center\">");
include ("banner.php");
echo("<br><font size=1> Usu&aacute;rio #<b>" . ......resto do código não importante para nós
include ("banner.php");    Este é o novo carinha. Observe que tive que cortar o "echo" em duas partes para adicionar o include e apenas o $surf_ban_rotator foi removido nada mais!

Em bars.html  e  bars_done.html
Apenas remova o trecho abaixo pois o mesmo é responsável por mostrar o banner na página de ptc
<script language='JavaScript' src='/banner.php?style=non_ssi'></script>

Em ptcbar.php

Você precisa criar uma tabela logo abaixo de: echo($ptcbarhtmla); e
echo($ptcbarhtmlb);

Cole este código abaixo do código citado acima:
echo("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td width=\"31%\"><div align=\"center\">");
echo("</font></div></td><td width=\"50%\"><div align=\"center\">");
include ("../banner.php");
echo("</td></tr></table>");
Nossa página de surf:
 Se vc usa recursos de surfar sem logar.. é óbvio que a url de surf capture dados via $_GET do PHP.
isso significa que se seu script não tiver um bom sistema de proteção, ele também é um alvo fácil:
Este é um exemplo do que usamos para filtrar o id do usario passado pela url.
$usrid = $_GET['user'];
$usrid = mysql_real_escape_string($usrid);
$usrid = preg_replace( '/([%_])/u', '\\\\$1', $usrid );
$usrid = preg_replace("/[^0-9]/","", $usrid);
Confesso que é um pouquinho de exagero kkkkk mas nunca é demais!

Evite que suas páginas de surfar sem logar e logout.php sejam inseridos em outros sites para derrubar seus surfistas!
Insira nas primeiras linhas dentro destas páginas e outras que vc não queira que sejam aberta em iframes:
<script type="text/javascript">
if (window.location != window.top.location) {
    window.top.location = window.location;
}
</script>

UFA!!!!!!!!!! Achou demais meu filho? Pois bem acredite em mim! Você vai achar bem pior se um dia alguem avacalhar contigo e acabar com seu trabalho que vc deve ter levado anos para fazer.
Então  por mais foda e cansativo que seja, se é por motivo de segurança e proteção de seu trabalho... nenhum esforço é o bastante ok! Pense que com isso vc estará mais protegido e evitando dores de cabeça futuras.

*** Antes de aplicar qualquer alteração em seu script sempre efetue um backup do mesmo.
O Kebra Gaio Auto Surf faz uso destas medidas de segurança, mas não nos resposnsabilizamos por eventuais incompatibilidades em seu script.
Ao fazer alterações tenha certeza que vc sabe fazer ou peça para alguem que saiba ok!

Faça aqui o Download dos arquivos de banner corrigidos!

Caso as tabelas de seu banco de dados não possuam o mesmo nome ou colunas de nomes diferentes, vc deverá efetuar as devidas alterações. (creio que não seja necessário, mas acho que pode acontecer)







9 comentários:

ótimo trabalho cara! eu não tenho nenhum autosurf i nem uso, mas pra o fato de você ter descoberto isso e divulgado como corrigir é uma excelente atitude =)

Valeu Patrik! muito obrigado pelo seu comentário.
tenha um Feliz Natal e um próspero Ano Novo!

É bom avisar mesmo, Marcelo.
Afinal, quanto mais todos souberem, menos problemas surgirão aos que usam autosurfs.

Boas Festas!

É isso aí J. obrigado pela força!
Feliz Natal e um próspero ano novo!

Vlw kg por da uma força pra nois q é kabaço hehehe...

Falou Murilooooooo sempre que eu puder ajudar em algo, estarei postando por aki blz.
feliz ano novo!

nossa muito bom hen parceiro agora os hackerss''' n pode fazer + nada por enquanto temos q ficar ligados parabens correçao o cara q disse ajudou muito a todos

valeu amigo! obrigado pela participação.
Não esquecendo que... Foi graças a vc que descobrimos o erro e assim corrigimos a tempo o problema.

e ai marcelo como vai vc bom dia espero q a saude esteja contigo sempre!!!!

Postar um comentário