Autor Tema: Atacando Bomber Code - Fuerza Bruta  (Leído 281 veces)

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

Desconectado magicbone

  • [L0] Ladrón de espacio en la BD
  • Mensajes: 8
  • cl
  • Bienvenidos/as a Bomber Code
    • Ver Perfil
Atacando Bomber Code - Fuerza Bruta
« el: 23 Marzo de 2020, 01:50 pm »
Hola chicos, acá vengo de vuelta. Un tanto aburrido por todo el revuelo que a causado en Coronavirus a nivel mundial me he sentado en el computador para divertirme un rato, pasar el tiempo un tanto mas veloz y así hacer un poco más interesante mi cuarentena ja

Hoy es el turno de brute force. Y le hecho un poco de asco a los lenguajes tradicionales para desarrollar herramientas de hacking simplemente por que siempre le he tenido más amor al mi querido php, javascript, css y html, por lo que cada vez que requiero hacer alguna herramienta para mis travesuras trato de alejarme de perl, python y ruby, solo por ir contra la tendencia y demostrarme a mi mismo que "pensar" es lo más lindo del hacking, más lindo que sus libros python para pentester, hacking con ruby y todas esas cosas que los hacen ver interesantes cuando van en el metro de Santiago, de mi querido Chilito. :D

¿Qué son los ataques de fuerza bruta?

Según yo xD un ataque de fuerza bruta es simplemente probar credenciales una tras otra, hasta dar con los accesos correctos he ingresar. Es como estar en frente de una puerta, tener 2000 llaves, y probar una por una hasta dar con la que abre la puerta. Las llaves en hacking las conocemos como diccionarios y estas se categorizan en dos, diccionario de usuarios y diccionario de contraseñas. Para efectos de esto, no utilizaré ningún diccionario, primero por que mi intención no es robarle la contraseña a nadie, segundo por que probaré solo con mi usuario(no necesito el diccionario de usuarios), tercero por que me da paja, prefiero hacer un array solamente... con un par de datos de contraseñas (5-6 incluyendo la correcta) ha esto le sumo el dato de mi nombre de usuario y con esto ya me bastaría para poder simular un ataque de fuerza bruta en baja escala. :D

Si quieren algo más técnico se puede googlear:
https://es.wikipedia.org/wiki/Ataque_de_fuerza_bruta

Hay un montón de herramientas conocidas para este tipo de ataques, Hydra, Ncrack, Hashcat, etc, etc, etc muchas de ellas tienen características buenas con respecto a la creación de diccionarios y entrar a los ataques de diccionarios como también a los híbridos. Acá no utilizaré nada de esto, sencillamente por que me gusta hacer mis propias herramientas. Hoy en día todo es copiar, pegar, click para acá y click para allá... poco a poco vamos perdiendo lo lindo que tiene el hacking, el pensar y lucho contra eso, aparte de que es mucho más entretenido y versátil hacer sus propias herramientas, por otro lado si no sabes hacer un par de peticiones GET/POST en cualquier lenguaje e intentas hacer fuerza bruta a un login web, no mereces vivir xD

Mi primera intención será atacar el foro mediante fuerza bruta, con algo desarrollado en php, ya saben lo típico probar usuarios y contraseñas hasta lograr ingresar con credenciales reales.

Bueno lo primero que hice fue ir al sitio de bomber code, específicamente al login:




Al presionar click en ingresar sinn poner datos, me lleva a la página de login mostrándome el mensaje de error:


 
Perfecto, ahora solo tengo que sacar los nombres de los campos (input) del formulario, la url de destino de este y hacer el envío de los datos desde un script php que realizaré utilizando curl y que subiré a un servidor web, aunque también se podría de forma local pero no tengo un ambiente web configurado, solo tengo un mac, filezilla, sublimetext, google chrome, ofimática. Primeramente lo haré con mis datos reales, solo estos. Mi intención es probar si hago la conexión de forma correcta y ver que es lo que responde el servidor cuando pongo datos correctos y cuando pongo datos incorrectos, así diferenciar y ver que hacer en ambos, luego de esto hacer el ciclo para probar una y otra vez... lo mismo que hacen todas las herramientas existentes para los ataques de fuerza bruta, o al menos eso creo que hacen xD Tampoco me pondré a desarrollar la mejor herramienta del mundo si no solo lo que voy requiriendo, probablemente este script termine en la basura xD

Mirando los datos los datos que necesito, con la ayuda de la pestaña "network" de la herramienta inspeccionar (Botón secundario), algunos utilizan para esta tarea herramientas como Burp suite, que de por cierto es maravillosa ja pero no tengo nada instalado en mi compu :'(. Si alguien tiene la posibilidad de probar la herramienta que lo haga, es buena a parte de tener muchas posibilidades.





Intenté hacer esto, claramente cambiando los datos [***] por los correctos, tanto en el campo user como en el passwrd, me quedó algo así:

Código: [Seleccionar]
<?php
    $campos_txt 
"user=[***]&passwrd=[***]&cookielength=-1&hash_passwrd=877bbe635fd2846693e456b25e663e6186ca8a72&c91d0da=4cc6fee1fb3460ccd239e53c90121fc3";
    
$url "https://www.bombercode.net/foro/index.php?PHPSESSID=b5c1fb20ffc6640c1699515be9dd755a&action=login2";
    
rtrim($campos_txt'&');
    
$handler curl_init();
    
curl_setopt($handler,CURLOPT_URL$url);
    
curl_setopt($handler,CURLOPT_POSTcount($campos));
    
curl_setopt($handler,CURLOPT_POSTFIELDS$campos_txt);
    
curl_setopt($handlerCURLOPT_RETURNTRANSFERtrue);
    
curl_exec($handler);
    
$quepajo curl_getinfo($handler,CURLINFO_HTTP_CODE);
    
curl_close($handler);
    
//var_dump($quepajo);
    
if($quepajo!=200){
      echo 
'<span style="color:green;">Acceso concebido -> '.$campos['user'].' - '.$campos['passwrd'].'</span><br>';
    }else{
      echo 
'Sin acceso -> '.$campos['user'].' - '.$campos['passwrd'].'<br>';
    }
?>

El resultado que tuve, fue como la mierda... jaja después de modificar varias cosas en el script, "intentar" he "intentar", no tuve buenos resultados como es de costumbre y no pondré cada modificación que hice al script intentando de qué si me funcionara por que fueron muchas, estuve un buen rato jaja Acá siempre entro en una crisis existencial y pienso si ponerme a ver Netflix o seguir intentando, averiguar qué es lo pasa.  Veamos que es lo que pasa.

Se me ocurren dos cosas, primero copiar el html directo desde el sitio y montarlo en mi servidor, poner los datos correctos usuario y contraseña y darle click, en teoría esto debería llevarme a la página, logearme correctamente e iniciar sesión en el foro. Nuevamente con la ayuda de la herramienta inspeccionar:



Lo monto en mi servidor, claramente en su forma visual no se verá igual pero si me servirá para hacer la petición directamente de un form igual al del foro, solo para probar y ver si puedo sacar algún tipo de información importante:



Al poner mis datos falsos en el formulario y dar click en ingresar, me da información interesante. Al poner datos correctos el foro me devuelve lo mismo un mensaje tan lindo de "¡Un error ha ocurrido! Sitio de referencia inválido.":



Digo lindo por que lo primero que se me vino a la mente cuando ví este mensaje fue CORS. Cors verifica que el origen de la petición sea aceptado, muchos servidores lo tienen así  "Access-Control-Allow-Origin: *" lo que permite que cualquiera pueda hacer peticiones (*), pero parece no ser el caso o al menos eso creo y comprendo el por que no funcionaba mi escript php que había creado,que en teoría debió funcionarme :( , deben tenerlo algo así "Access-Control-Allow-Origin: https://bombercode.net" lo que hará que si hago una petición desde un origen que no sea BomberCode, simplemente el servidor no me responderá.

Si te interesa el tema te dejo un par de links sobre CORS lo demás es googlear:
De qué trata:
https://developer.mozilla.org/es/docs/Web/HTTP/Access_control_CORS
Cors Attack:
https://www.exploit-db.com/docs/45906


Veré como me va con javascript, puede ser que me dé un poco mas de información al respecto, así que hago esto:
Código: [Seleccionar]
<script type="text/javascript">
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "https://www.bombercode.net/foro/index.php?action=login2", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("user=[***]&passwrd=[***]&cookielength=-1&hash_passwrd=877bbe635fd2846693e456b25e663e6186ca8a72&c91d0da=4cc6fee1fb3460ccd239e53c90121fc3");
</script>

Y claro, el mensaje de error por consola que me entrega es el siguiente, confirmando mis pensamientos:

Access to XMLHttpRequest at 'https://www.bombercode.net/foro/index.php?action=login2' from origin 'https://********.cl' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Maldito Cors xD en fin... intento bypassearlo durante mucho rato, y adivinen, me fue nuevamente como la mierda xD no lo logré. Entro en crisis existencial nuevamente, pero me decido nuevamente por no ir a ver Netflix y sigo intentando.

Salgo a fumarme un cigarrillo, malísimo en estos tiempos por el mencionado coronavirs xD fumo y fumo... y pienso "BomberCode no me deja hacer peticiones de forma remota, ¿Qué hago?¿podré hacerlo de forma local, pero ¿cómo si finalmente no tengo accesos al servidor? piensa... piensa..."

Bueno sin mucho aliento ya me pongo a buscar un algún XSS para poder insertar código dentro de la vista del sitio y nada. Pensé también en algo como RFI (se me callo el carnet xD) y nada, también LFI y nada, paff ya Netflix me estaba pareciendo una buena idea, pero sigo, finalmente no ha estado tan aburrido todo esto ja

Lo siguiente que hago es tomar mi código javascript y meterlo directamente en la consola del navegador:



Al menos ya no me tira el bloqueo de Cors. Un rayito de luz dentro de tanta oscuridad jaja. Pensando como poder seguir avanzando se me ocurre hacer un script que pueda meter en la consola y que me logee en el sitio sin tener que interactuar directamente como un usuario normal, así poder aprovechar esto para mi beneficio y poder automatizar la reiteración de esto, probar usuarios y claves hasta dar con los accesos correctos (Fuerza Bruta)

En las cabeceras del sitio se logra ver que se utiliza JQuery, así que haré uso de esto. Es como partir de nuevo, la misma idea, pero con la consola js del navegador, local. Primero pruebo con esto:
Código: [Seleccionar]
$("input[name=user]").val("magicbone");
              $("input[name=passwrd]").val("[***]");
              $("input[type=submit]").click();

Con el password correcto, me hace fácilmente el login satisfactoriamente:



Al poner datos incorrectos y hacer esta acción más de una ves en el mismo script, el sitio me tira un mensaje que solo me permite hacerlo cada 2 segundos, cada intento de login. Esto se logro  con una función recursiva para hacer múltiples intentos de login. Me acordé de  SetTimeOut en javascript para poder pausar cada dos segundo el intento de inicio de sesión y paff me acuerdo otra vez de Netflix cuando al ver que al intentar hacer el primer login se pierde el script ya que carga la página nuevamente... fui por un cigarrillo mientras se me ocurría algo para poder seguir avanzando, ya que no podía insertar una función que intentará logearse sin perder el hilo de las contraseñas, ya que siempre probaba solo la primera y perdía el hilo. Paff necesita poner un script dentro del sitio web, algo que persistiera, algo que no me hiciera volver a cargar mi script por cada ves que se intentaba loggear. Crisis existencial god mode xD "Piensa... piensa... ¿Qué puedo hacer? ¿recursividad, bucles? todo me hace perder el hilo del script :'(" partí al living y prendí el televisor y Netflix :'(.

Mientras miraba Netflix jajaja se me ocurrió que algo me podía servir (mi mente seguía pegada con esto xD) y que cumple con los requisitos. "Chrome extension" pare de ver Netflix y partí al computador nuevamente. Una extensión de Google Chrome me permitiría ejecutar código javascript, así que desarrollé una sin publicarla solo para mi navegador y cumplir con mi propósito, no explicaré como desarrollar una, hay mucha info en google, solo pondré el código principal que hice para hacer el ataque de fuerza bruta. De todas formas dejo un par de links por si alguien requiere desarrollar alguna para términos de aprendizaje.

http://www.maestrosdelweb.com/crear-extensiones-google-chrome/
https://support.google.com/chrome/a/answer/2714278?hl=es-419

Con eso debería bastar para entender o replicar algo parecido a lo que hice.

Este es el código que implementé, y finalmente me funcionó... Tiene fallas por que en realidad no me interesa seguir más allá de este punto, pero se puede mejorar el script de muchas formas y dejarlo bien lindo y funcional, yo solo llego hasta acá. recordar que en el manifest.json de la extensión agregar jquery:
Código: [Seleccionar]
chrome.extension.onMessage.addListener(function(message, sender, sendResponse) {
    switch(message.type) {
        case "attack":
            var ps=["nueva","notengo","[***passreal***]"];
            function loginbombercode(pass){
              $("input[name=user]").val("magicbone");
              $("input[name=passwrd]").val(pass);
              $("input[type=submit]").click();
            }
            //loginbombercode("asd");
            //console.log("mario");
            for (var i = 0; i < ps.length; i++) {
                setTimeout(loginbombercode(ps[i]),4000);
               
            }
        break;
    }
});

Se podría implementar un diccionario de contraseñas... buscar nombres de usuarios en el foro, etc, etc...





Login con fuerza bruta:



Nos estamos leyendo chicos, este fue mi aporte y espero que ha alguien le sirva de algo,

#QUEDATEENCASA

Salu2!














« Última Modificación: 23 Marzo de 2020, 02:06 pm por magicbone »

Conectado Rock Lee

  • Administrador
  • *
  • Mensajes: 1019
  • Sexo: Masculino
  • ar
  • Digitalizando tu Mundo
    • Ver Perfil
    • La nueva era del conocimiento
Re:Atacando Bomber Code - Fuerza Bruta
« Respuesta #1 el: 23 Marzo de 2020, 10:17 pm »
??? ??? hace mucho tiempo no veo algo de este estilo... funciona a muchos niveles como por ejemplo con politicas simples sobre seguridad a la hora de tener un sitio puede salvarte de muchas cosas. Muy buena explicacion corta y simple, ademas agregar lo que respecta a fuerza bruta puede ser aplicado a muchas web solo es tomarse el tiempo de entender como poder aplicarlo... Yo tengo entendido netflix recibe mucho de este ataque (entre otras diferetentes) por eso se revenden cuentas re contra quemadas (siempre sea rentable una web sera blanco de todo tipo de ataque). Espero ver mas este tipos de aportes @magicbone y seguro notaras en BC es respetable su seguridad (no digo hiper seguro por que nada es al 100% mas repecto a webs).


Saludos Familia!