segunda-feira, 20 de julho de 2015

Explorando falhas de SQL Injection com SQLmap


O SQLMap é um scrip de exploração de falhas de SQL Injection.
Vou usar as falhas descobertas durante o post  Encontrando Falhas em Aplicações Web com Uniscan para realizar os exemplos desta postagem. Um complementa o outro, então se você ainda não viu, recomenda que estude os exemplos dele primeiro.

Vou pegar para o exemplo a váriável http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 --dbs

A sintaxe ficaria sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 --dbs


O SQLmap vai realizar vários testes no parâmetro até identificar o tipo de banco de dados que está rodando e se a variável é mesmo injetável. Neste exemplo, a vulnerabilidade foi positiva. Conseguimos identificar a existência de dois bancos rodando. O information_schema que é padrão do MySQL e um banco chamado "acuart". Vamos explorá-lo para ver o que conseguimos achar.




Vamos injetar mais scripts na variável, desta vez para que ela retorne as tabelas do banco.

sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart --tables


O Scrip nos retornou 8 tabelas do MySQL



Vamos executar o próximo passo em cima da tabela users, que provavelmente contenha alguma informação relevante como logins, e-mails, senhas e outras informações pessoais. Mas primeiro vamos identificar as colunas na tabela inserindo mais um dump de scrips do SQLmap

sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart -T users --columns


Podemos ver que o script nos trouxe mais informação. Ele identificou todas as 8 colunas da tabela 'users'. Podemos notar algumas informações importantes como name, uname, pass, email e cc que seria algum número de cartão de crédito.


Vamos fazer o select em forma de dump do SQLmap para extrair os dados dessas colunas. Vou fazer um teste extraindo só o que importa de inicio como nome, login e senha.

# sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart -T users -C 'name,uname,pass' --dump

Podemos ver que ele nos retornou exatamente o que esperávamos, um nome, um login e uma senha desencriptada ainda por cima.



É claro que este site não é sério, ele apenas simula as falhas e deixam os pentesters tocarem o terror por um tempo e depois voltam o backup anterior dentro de alguns períodos de tempo do dia. Em um ambiente real, não seria tão fácil assim. Provavelmente você encontraria hash com um ou mais níveis de criptografia e etc. Mas deu pra entender como a ferramenta funciona.


Vamos comprovar a falha:

http://testphp.vulnweb.com/login.php

login: test
senha: test


Perceba que conseguimos explorar a falha e obter acesso ao perfil do usuário.

Agora para dar aquela boa zoadinha de costume. Vamos realizar um exemplo de BRzagem.


Agora vamos executar o script novamente para verificar as modificações no banco de dados da vitima



Homenagem ao meu amigo Hermeto.

Lembrando que o SQLmap é um script para ser usado como ferramenta para testes de intrusão, e não para cometer crimes.

Veja também: Encontrando falhas em aplicações web com Uniscan

:)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

Postar um comentário

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com