Ataque por diccionario. ¿Palabras claves?

Iniciado por rorschach, 1 Marzo 2010, 20:17 PM

0 Miembros y 1 Visitante están viendo este tema.

rorschach

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.

<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.

Shell Root

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 (php) [Seleccionar]
$fd = fopen ("/tmp/archivo.txt", "r");
while (!feof($fd)) {
    $buffer = fgets($fd, 4096);
    echo $buffer;
}
fclose ($fd); 

Petición POST con PHP
Código (php) [Seleccionar]
<?

$host="www.tupagina.com";
$referer="http://referer.com";
$uri="/pagina.php";
$vars="&parametro1=valor1&parametro2=valor2";

$header = "Host: $host\r\n";
$header .= "User-Agent: Mosaic\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.="Referer: $referer\r\n";
$header .= "Content-Length: ".strlen($vars)."\r\n";
$header.="Pragma: no-cache\r\n";
$header .= "Connection: close\r\n\r\n";

$fp = pfsockopen("tcp://".$host, 80, $errno, $errstr, 20);
fputs($fp, "POST $uri HTTP/1.1\r\n");
fputs($fp, $header.$vars);
while (!feof($fp)){
echo fgets($fp, 128)."<br>";
}
fclose($fp);
?>

Fuente: http://pastebin.com/f7f667268

Ahora queda unirlo, y darle buen uso.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

rorschach

#2
¿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.

dark_sargon

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.
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.