viernes, 7 de noviembre de 2008

SMF 1.1.6 Remote Code Execution

Saludos!


Seguro que si estás leyendo esto es porque te has hecho eco de la publicación de un exploit que explota un RCE en los foros SMF 1.1.6. Quisiera con este post analizar el cómputo de vulnerabilidades que han posibilitado provocar el RCE. Antes de empezar quisiera decir que la información que aquí publico está extraida del exploit. Bien, empecemos...



Como ya he dicho al inicio, esta vulnerabilidad no es una en sí, sino la suma de varias fallas... Empezando por el principio, todos somos conscientes de que para evitar que un admin realice acciones dentro del panel de administración sin ser consciente de ello, es decir, para evitar que se produzca un CSRF, SMF usa un sistema de sesiones.

Para realizar cualquier accion (en principio) el SMF debe de requerir la sesión y así evitar ejecutar algo por clickar sobre un link o algo.. pero como he dicho esto es sólo en "principio", porque para la instalación de paquetes no es requerido.

Entonces estamos ante un CSRF, en el cual podríamos hacer que el administrador instalase paquetes sin que se diera cuenta, simplemente tendríamos que ingeniarnosla para que clickase sobre esta URL:

http://[website]/SMF/index.php?action=packages;sa=install2;package=[filename]

Si analizásemmos el código fuente, podríamos ver que la variable $_REQUEST['package'] no es filtrada, lo que nos permite (aprovechando el CSRF) hacer que el admin instale cualquier tipo de paquete, sin tener en cuenta su localización (en extensión .gzip)

Entonces... si pensamos un poco, podemos encontrar dos formas de subir desde nuestro ordenador un archivo a un foro SMF. Por una parte está el upload de imagenes para usarlas como avatar (casi siempre deshabilitado y dificil de bypassear) y por otra, podemos agregar un archivo a un post, sin importar su extensión.


Ya sólo nos quedaría encontrar el archivo que hemos subido y hacer clickar al admin para que instale todo... Y es aquí donde SMF vuelve a meter la pata: podemos encontrar fácilmente nuestro archivo subido.

SMF cambia el nombre a los archivos que se suben de esta forma, pero al renombrarlos no usa ningún tipo de función que dé caracteres aleatorios sino que lo hace de esta forma:


[id]_[name]_[ext][md5([name].[ext])]


Entonces, la URL maliciosa quedaría tal que así:

http://[website]/SMF/index.php?action=packages;sa=install2;package=../attachments/[nombre de nuestro archivo]


En el exploit que hay en milw0rm lo que se hace es crear un post agregando nuestro archivo .gzip y despues modifica ese post para hacer un [img]
http://[website]/SMF/index.php?action=packages;sa=install2;package=../attachments/[nombre de nuestro archivo][/img] y así cuando un admin vea el post instale todo.





Exploit en Milw0rm
5 0verl0ad Labs: SMF 1.1.6 Remote Code Execution Saludos! Seguro que si estás leyendo esto es porque te has hecho eco de la publicación de un exploit que explota un RCE en los foros SMF...
< >