Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: rorschach en 1 Marzo 2010, 20:17 pm



Título: Ataque por diccionario. ¿Palabras claves?
Publicado por: rorschach en 1 Marzo 2010, 20:17 pm
Quiero programar un ataque por diccionario para un sitio que encontré y me gustaría que me guiaran con algunas palabras claves para poder lograrlo. Les explico.

El sitio ( http://victima/intranet/ ) me muestra un formulario en donde se debe ingresar: 1) Usuario y 2) Contraseña.

Código:
<form name="form1" method="post" action="comprueba.php">

El código me permite saber cuáles son los usuarios válidos, ya que al ingresar un usuario inválido me muestra el siguiente error: "No existe el usuario introducido" ( http://victima/intranet/comprueba.php )
Al ingresar un usuario válido, me muestra el siguiente error: "Password incorrecto!"



Entonces quisiera hacer un script en PHP que permita ir leyendo línea por línea de un archivo (el diccionario) e ingresándolos a "comprueba.php" como valor "pass". Si recibe el error: "Password incorrecto!", que se vuelva a ejecutar con la línea siguiente.

Encontré la función fopen, pero no se me ocurre qué más puedo necesitar.
Gracias.


Título: Re: Ataque por diccionario. ¿Palabras claves?
Publicado por: Shell Root en 1 Marzo 2010, 20:32 pm
1. Abres el archivo
2. Recorres el archivo linea por linea
2.1 Con cada linea realizas una peticion $_POST, al archivo comprueba.php
2.2 Verificas el resultado de la petición $_POST
2.2.1 Si es el User y Pass correctos, muestras los datos introducidos, de lo contrario sigue con el bucle.
3 Cierras el archivo, para liberar la memoria.

Recorrer Archivo Linea por Linea
Código
  1. $fd = fopen ("/tmp/archivo.txt", "r");
  2. while (!feof($fd)) {
  3.    $buffer = fgets($fd, 4096);
  4.    echo $buffer;
  5. }
  6. fclose ($fd);  
Petición POST con PHP
Código
  1. <?
  2.  
  3. $host="www.tupagina.com";
  4. $referer="http://referer.com";
  5. $uri="/pagina.php";
  6. $vars="&parametro1=valor1&parametro2=valor2";
  7.  
  8. $header = "Host: $host\r\n";
  9. $header .= "User-Agent: Mosaic\r\n";
  10. $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  11. $header.="Referer: $referer\r\n";
  12. $header .= "Content-Length: ".strlen($vars)."\r\n";
  13. $header.="Pragma: no-cache\r\n";
  14. $header .= "Connection: close\r\n\r\n";
  15.  
  16. $fp = pfsockopen("tcp://".$host, 80, $errno, $errstr, 20);
  17. fputs($fp, "POST $uri HTTP/1.1\r\n");
  18. fputs($fp, $header.$vars);
  19. while (!feof($fp)){
  20. echo fgets($fp, 128)."<br>";
  21. }
  22. fclose($fp);
  23. ?>
Fuente: http://pastebin.com/f7f667268

Ahora queda unirlo, y darle buen uso.


Título: Re: Ataque por diccionario. ¿Palabras claves?
Publicado por: rorschach en 3 Marzo 2010, 23:50 pm
¿Me podrías ayudar a ligarlo? Llevo dos días intentando y no he podido. Mi problema ha sido encontrar la forma de leer la última linea de lo que me entrega la página, que es donde se encuentra la línea que me interesa: "Password incorrecto!".

Gracias por la ayuda.


P.S.: Pensé agregar las palabras del diccionario en un array, pero son MUCHAS palabras.


Título: Re: Ataque por diccionario. ¿Palabras claves?
Publicado por: dark_sargon en 4 Marzo 2010, 18:05 pm
Solamente debes tener en cuenta que algunas personas escriben números, mayúsculas u otros caracteres. Además, si la contraseña está compuesta por varias palabra o por varias partes de palabras, sería casi imposible llegar a 'adivinarlo'.
La mayoría de gente que conozco, usan números (documentos de identidad, direcciones, teléfonos, etc). También podrías hacer un script para los números.

Un saludo.