Como funciona um ataque por Blind SQL Injection

Blind SQL Injection

Em tempos onde o mundo trabalha quase que inteiramente na Internet, a segurança das suas informações torna-se questionável. Como num jogo de perguntas e respostas, ensinarei neste tutorial como descobrir se o seu site é vulnerável a esta falha, simplesmente perguntando ao servidor através de instruções SQL em parâmetros na URL. Mostrarei também a forma correta de conseguir estas informações e algumas soluções.

É comum encontrar na Internet vários tutoriais sobre SQL Injection, tanto para invadir quanto para defender. Esta era uma falha muito comum antigamente, mas estima-se que hoje menos de 5% dos sites tenham esta vulnerabilidade, até pela quantidade de informação acerca do assunto. Ao contrário do Blind SQL Injection, que é pouco divulgado, estima-se que cerca de 20% dos sites possuam esta falha.

A diferença do SQL Injection para o Blind SQL Injection, é que no primeiro caso o site nos revela as informações escrevendo-as no próprio conteúdo, já no Blind SQL, eu preciso perguntar ao servidor se algo é verdade ou mentira. Se eu perguntar se o usuário é “x”, ele me dirá se isso é verdade ou não, carregando o site ou não. Simples, eu pergunto, se o site carregar isso é verdade, se o site não carregar isso é mentira.

Vejam a vídeo-aula abaixo:
Detalhe, este é mais um tutorial com o intuito de ensinar os administradores de sistemas a protegerem os seus conteúdos. Se você se considera um hacker, você usará o seu conhecimento para o bem, assim como eu estou fazendo neste tutorial.

 

Viram o quanto é grave este problema? Apenas perguntando ao servidor, eu consigo obter qualquer informação, não tão fácil quanto no SQL Injection (confesso), mas para quem tem paciência, isto é um prato cheio! Vamos à solução para este problema!

 

Não confie no usuário!

Em primeiro lugar, temos que nos concentrar na ação do usuário, de modo a prever comportamentos inesperados. Ou seja, não confie no usuário, pois existem os usuários normais que irão acessar o seu site e aproveitar o seu conteúdo, assim como existem os usuários com conhecimento sobre hacking (alguns maliciosos), que irão tentar invadir o seu servidor apenas por diversão.

 

Filtre todos os tipos de entrada de dados

Seja ela por POST, GET, PUT, enfim. Acredite, é possível enviar um exploit inteiro por um campo de um formulário do seu site. Se você não filtrar corretamente, suas informações e os seus usuários podem ficar a mercê de qualquer pessoa com mais conhecimentos. Mas e ai Lucas Peperaio, como eu filtro as entradas de dados?

Desenvolvi em conjunto com alguns amigos programadores, uma função em PHP para filtrar todo tipo de dado malicioso. Através desta função, o seu site estará protegido de SQL e Blind SQL Injection, XSS Cross Script e outras vulnerabilidades conhecidas na WEB. Se o seu site não é em PHP, e sim em ASP ou Python, analise a função e transcreva-a para a sua linguagem de programação, não é muito complicado afinal de contas..

function protect( $str )
{
/**
* Função para retornar uma string protegida contra SQL/Blind/XSS Injection
* @param Mixed str
* @access public
* @return string
*/
if( !is_array( $str ) ) {
$str = preg_replace("/(from|select|insert|delete|where|drop table|show tables)/i","",$str);
$str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
$str = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $str);
$str = str_replace("<script","",$str);
$str = str_replace("script>","",$str);
$str = str_replace("<Script","",$str);
$str = str_replace("Script>","",$str);
$str = trim($str);
$tbl = get_html_translation_table(HTML_ENTITIES);
$tbl = array_flip($tbl);
$str = addslashes($str);
$str = strip_tags($str);
return strtr($str, $tbl);
}
else return $str;
}

A forma correta de usá-la é filtrando os dados vindos por POST, GET e etc, antes de usá-los em sua aplicação:

//Simples não?
$variavel = protect( $_POST['variavel_exemplo'] );

 

Proteja o seu servidor

Algumas extensões e módulos ajudam a proteger o seu servidor WEB, como a Mod_Security. Mas a proteção mesmo vem de você, Administrador de Sistemas. Use e abuse do firewall, esteja constantemente em alerta sobre possíveis meios de invasão e principalmente, mantenha os seus softwares sempre atualizados, pois são através deles que boa parte das falhas se originam.

É isso gente, qualquer dúvida ou sugestão, postem nos comentários.
Vale lembrar, não estou incentivando ninguém a invadir sites.
Até uma próxima

 

Lucas Peperaio

Tenho 22 anos, sou estudante de Ciência da Computação, trabalho com desenvolvimento web há 6 anos e com hardware há 8. Nas horas vagas, sou entusiasta de Overclock, Casemod e Benchmarks, além é claro dos Games. Apaixonado por informática e pela vida, procuro compartilhar meus conhecimentos e assim, ajudar as pessoas.





13 Comentários Deixe o seu

  1. Alexandre Broggio disse:

    Lucas que post bacana vlw mesmo pelo tutorial e por mostrar o problema e a solução.

  2. Silvia disse:

    Bom dia Lucas,
    Possuo um blog desenvolvido no Blogger, sempre leio os seus posts e estou com um entrave no meu blog e queria ver a possibilidade de vc me ajudar.
    Vamos lá:
    As fotos inseridas no meu blog sempre clico em cima delas com o botão direito para ter a opção de aumentá-las e/ou deletá-las.
    De uns posts prá cá somente para as primeiras fotos consigo tal recurso depois não mais consigo mexer nas fotos, vc pode me ajudar?
    Obrigada,
    Abs,
    Silvia

  3. Lucas disse:

    Assunto muito importante, vou ficar mais atento a isto.

  4. Java Progressivo disse:

    Parabéns pelo excelente conteúdo, Lucas!

    Um dica pra esse tipo de coisa é aprender as benditas Expressões Regulares.
    É possível fazer muito com elas, escrevendo pouco. Porém exige uma certa engenhosidade, mas vale bastante a pena.

  5. Gleidson disse:

    No meu caso não funcionou, testei com a ferramenta sqlmap e o site continuou vulnerável.

  6. leonardo disse:

    Cara vc tenho certeza que foi vc que deu intrevista para o cqc na materia dos hackers la vc que editou o site do governo la certeza !!!!!!!!

  7. Jorge disse:

    Amigo você poderia me Falar Se os metodos Sql injection Funcionam em blog’s? o.O

    • Lucas Peperaio disse:

      Em 99% não, pois os maiores softwares de blog (WordPress e Blogger) são protegidos naturalmente. Só é possível explorar falhas de plug-ins mau programados.

      • Jorge disse:

        Então como pegar o dominio do blog e modificar..?

        existe alguns metodos? sem ser o de pegar o Email e senha do Google?

        Obrigado!!!

  8. Diego disse:

    Bom dia, pelo que vi o script nao testa
    if (!get_magic_quotes_gpc()) {
    $str = addslashes($str);
    }

    isso nao seria um problema?





Receba Grátis Novidades do meu blog em seu E-mail!


Após o Cadastro você receberá um Email Automático. Clique no link enviado para Ativar e receber as novidades.

Categorias do site

Mais visitados