Intentando predecir sesiones.... ayuda!!

Iniciado por waizen, 21 Junio 2009, 14:49 PM

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

waizen

La idea es que partiendo de una sesión de un usuario sin permisos consigamos acceder a la cuenta de otro usuario.

La cookie se llama "sid", tiene este estilo:

x:0c836edf5dc44b7bde1b42503aa3ad50:1245585214

Vista así me di cuenta de que tenia este formato:

[user id]:[md5 hash]:[time]



[user id] es el nuero de usuario, este valor lo puedo averiguar

[time] es la fecha de cuando se abrió la sesión, lo averiguaríamos a fuerza bruta ya que sabríamos a que hora se conecta el usuario con un margen de error de unos 10 minutos si estamos atentos

[md5 hash] es el valor que mas problemas me da, por ello he abierto varias sesiones para mirar haber si encontraba algún patrón claro:



xxxx:ab2ae9cc1b3f618251ac44996e032fd7:1245585204


como veréis nunca se repite, por lo que pensé que utilizaría alguna función como mt_rand o microtime para que sea "aleatorio"

así que probé haber si unicamente utilizaba la función microtime:
 
<?php
for ($i 1$i <= 999999$i++) 
{

$var md5((0.000001*$i).'00 1245585180');

if(
$var == 'ba37aae00d337e0da86f379be6ef9e9c') echo 'aaaaaaaaaaaa';


}

?>


no conseguí nada..........
haber si alguien me ayuda a crackear algun hash md5 de esos :DDDDD


Azielito

[quote author=md5decrypter.com]Md5 Hash: f15f539ea45048d37778670ab22100ea
A decryption for this hash wasn't found in our database


=\

Prueba aca
http://milw0rm.com/cracker/insert.php

WHK

#3
No se si yo no entendí bién o los demás no entendieron  :P

Tu quieres algo como esto:
https://foro.elhacker.net/nivel_web/reset_admin_password_117_smf_teoria-t241014.0.html

Lo que tienes es el id del usuario que en este caso puedes saber y un tercer valor que es el tiempo del login que puede ser crackeado pero tienes un hash en medio que no puedes descifrar y lo mas probable es que sea la combinación del user mas el pass como por ejemplo md5(user:pass).
Si quieres intentar crackear el hash o sea intentar obtener un hash válido y no tener uno ya en mano como los demás pensaban debes saber exactamente cual es el tercer valor porque te explico...

2:xxxxxxx:5

Supongamos que tengo el user con id "2", el hash es "xxxxxxx" y el tiempo es "5", entonces para poder crackear el login necesito esto:
2:$hash:5
Donde $hash sería cada posibilidad tratando de atinarle a fuerza bruta pero que pasa si el time no es 5 y es 100? y si el time está entre 1111111111 y 199999999 ? ya tendrías 999999999 posibilidades de intentar crackear un solo hash, y como debes crackear por fuerza bruta entonces vas a tener que procesar una cantidad de pruebas igual al número de palabras en tu diccionario multiplicado por 999999999 xDDDDDD mientra mas grande sea el diccionario mas te demoras y mientra mas corto sea menos posibilidades tienes de encontrar la contraseña.

Si te entendí mal y ya tienes un hash en tu poder no necesitas crackearlo, solamente inyecta la cookie a tu navegador y ya, refrescas y ya estás dentro como ese usuario. javascript:document.cookie="id:hash:tiempo";

waizen

#4
si es eso WHK  la cosa es que el hash del medio parece aleatorio con el mismo tiempo:

Citar64706589:6315c517bafd53063cc6e31ff3f687d1:1245585205
64706589:5dbe586aef5b2c04afdc15c1d1bd3542:1245585205
64706589:68cd0732a49a126c272c9def70f598a6:1245585205
64706589:e469497c662017910ae4e218dbb0bd80:1245585205
64706589:21cd3021a805b3bb36e0a4050daac5cc:1245585205

por lo que supongo que usará algo como microtime()+time()+userid para sacar el hash algo así:

md5(time().microtime().$uid); o sino
md5(time().mt_rand().$uid); o parecidos

ahora estoy intentando haber si saco algo a fuerza bruta pero esta medio difícil  :P




lo de las posibilidades lo tengo controlado :D porque acertaré a que hora se conecta con un margen de error de 30 segundos o algo así, asi que posibilidades habrá bastantes pero con suerte se podría conseguir :D

yeikos

#5
Citar64706589:6315c517bafd53063cc6e31ff3f687d1:1245585205

Esa cookie si no me equivoco es de tuenti...

Siendo el primer parámetro el número identificador del usuario, el segundo parámetro es el identificador de sesión (sid), no es ningún hash, y el último parámetro no tiene importancia, es para saber si el usuario sigue activo en la página Web o no.

El sid es una cadena alfanumerica pseudo-aleatoria de 32 caracteres...

Utiliza los siguientes caracteres como base:

abcdefghijklmnopqrstuvwxyz0123456789

Puesto que su longitud es fija y el número de caracteres totales es de 36, el número de posibilidades es 36^32, o lo que es lo mismo... 6,3340286662973277706162286946812e+49.

El sid, como bien he dicho es psudo aleatorio, ¿qué quiero decir con pseudo? pues que prácticamente es aleatorio, pero teoricamente no, ya que para generar una serie de números aleatorios, es necesario pasarle al susodicho algoritmo un número, llamemosle X, para que a partir de ese número, pueda generar los demás números pseudo-aleatorios.

¿Y de dónde sacamos X? He ahí el dilema, funciones como time y microtime, son predecibles, ya que el tiempo es lineal, y yo se que hora será dentro de 30 minutos, por lo tanto, ya deja de ser aleatorio. Por lo tanto, para que el algoritmo fuera perfecto, X debería ser aleatorio, así que seguimos en las mismas.

Actualmente los sid generados son pseudoaleatorios y X puede ser los bytes de memoria utilizados por un programa, el tiempo que tardo en ejecutarse una serie de operaciones, etc... Vamos, que por muy pseudoaleatorios que sean esos números, va a ser muy dificil dar con ellos.

Existen nuevos métodos para la generación de números aleatorios, como puede ser la velocidad y la dirección del viento. Pero esos métodos ya son llevados al extremo y tan solo son usados por físicos en sus experimentos.

¿A dónde quiero llegar con esto? A ninguna parte, ya que computacionalmente es imposible optar por la fuerza bruta, pero a veces es necesario entender lo que expliqué para comprender otras cosas.





waizen

Cita de: yeikos en 14 Julio 2009, 17:48 PM
Citar64706589:6315c517bafd53063cc6e31ff3f687d1:1245585205

Esa cookie si no me equivoco es de tuenti...

Siendo el primer parámetro el número identificador del usuario, el segundo parámetro es el identificador de sesión (sid), no es ningún hash, y el último parámetro no tiene importancia, es para saber si el usuario sigue activo en la página Web o no.

El sid es una cadena alfanumerica pseudo-aleatoria de 32 caracteres...

Utiliza los siguientes caracteres como base:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

Puesto que su longitud es fija y el número de caracteres totales es de 62, el número de posibilidades es 62^32, o lo que es lo mismo... 2,2726578844967513453552415636275e+57.

El sid, como bien he dicho es psudo aleatorio, ¿qué quiero decir con pseudo? pues que prácticamente es aleatorio, pero teoricamente no, ya que para generar una serie de números aleatorios, es necesario pasarle al susodicho algoritmo un número, llamemosle X, para que a partir de ese número, pueda generar los demás números pseudo-aleatorios.

¿Y de dónde sacamos X? He ahí el dilema, funciones como time y microtime, son predecibles, ya que el tiempo es lineal, y yo se que hora será dentro de 30 minutos, por lo tanto, ya deja de ser aleatorio. Por lo tanto, para que el algoritmo fuera perfecto, X debería ser aleatorio, así que seguimos en las mismas.

Actualmente los sid generados son pseudoaleatorios y X puede ser los bytes de memoria utilizados por un programa, el tiempo que tardo en ejecutarse una serie de operaciones, etc... Vamos, que por muy pseudoaleatorios que sean esos números, va a ser muy dificil dar con ellos.

Existen nuevos métodos para la generación de números aleatorios, como puede ser la velocidad y la dirección del viento. Pero esos métodos ya son llevados al extremo y tan solo son usados por físicos en sus experimentos.

¿A dónde quiero llegar con esto? A ninguna parte, ya que computacionalmente es imposible optar por la fuerza bruta, pero a veces es necesario entender lo que expliqué para comprender otras cosas.






gracias por contestar  ;D

respecto a las posibilidades de acertar elhash serian con estos caracteres: abcdefghijklmnopqrstuvwxyz0123456789 ya que no usa mayúsculas la sid. Así que las posibilidades se quedarían en:
36^32 = 6,3340286662973277706162286946812e+49


demasiadas  :rolleyes: :rolleyes: :rolleyes:

se podría bajar bastante ese numero de probabilidades de acertar pero no lo suficiente así que dejo el caso xD

yeikos

Así es, se me pasó ese detalle, de todas maneras, la cantidad de posibilidades sigue siendo descomunal xd.

(*) Modifiqué mi primer mensaje para evitar confusiones.

PD: No cites los últimos mensajes o mensajes enteros pls, gracias :)

sirdarckcat

si es un sid no pueden hacer simplemente session fixation? logueas al usuario con tu sesion, y lo mandas a la pagina de inicio de sesion otra ves (o le haces logout si eso no destruye la sesion).

yeikos

nah, en tuenti siempre se genera un sid nuevo en cada identificacón