SMF 1.1.6 multiples fallas

Iniciado por WHK, 6 Noviembre 2008, 09:00 AM

0 Miembros y 2 Visitantes están viendo este tema.

WHK

Simple Machines Forum (SMF) 1.1.6 Code Execution Exploit
http://milw0rm.com/exploits/6993

Simple Machines Forum <= 1.1.6 (LFI) Code Execution Exploit
http://milw0rm.com/exploits/7011

En ambos casos es posible causar la ejecución de códigos o subir directamente una shell como un r57 o un c99 aunque es necesario que el atacante pueda subir archivos adjunto en un post para poder ejecutar cualquiera de estos dos exploits donde uno se trata de un LFI y el otro de paquetes autoinstalables sin la verificación de un sesc.

En el primer exploit aparece lo siguiente:
Citar$this->url->package = '../attachments/' . $this->url->package;
SMF te devolverá un error ya que filtra si alguien intenta escapar del directorio de paquetes, modificamos por lo siguiente:
Citar$this->url->package = './../attachments/' . $this->url->package;
Solo verifica que los primeros tres carácteres no sean '../' asi que le anteponemos './' y ya.

También descubrí otro bypass que permite instalar paquetes sin verificar la extension del archivo, ahora dicen 'para que sirve?'... supongamos que nuestro foro objetivo solo deja subir archivos jpg, renombramos el paquete con la shell a *.jpg y listo, luego decimos las palabras mágicas..
http://127.0.0.1/foro/index.php?action=packages;sa=install2;package=... ...test.jpg
dentro de un xsrf ovbio hacia el admin y ya está instalado bypaseando el path antihacking  :P y la extensión del archivo.

Algo muy curioso es que después de tres dias nadie se haya dado cuenta, ni los de simplemachines ya que no hay parche ni post en la sección de bugs ni en ninguna otra comunidad.

No pierdan el tiempo, ya probé con foros amigos y no dejan subir nada  :P
El admin de este foro ya tomó las medidas necesarias para evitar catastrofes  :xD

Darioxhcx

" luego decimos las palabras mágicas.. "
jajajajjaja xD
muy bueno man esto
gran aporte x)

berz3k

Yep, me lo comento sirdarkcat, solo tomo medidas? XDD yo quiero divertirme con el  bug, sdc envianos algunos PoCs y details, a ver si Alex te permite hacer alguna probe y los suscriptors tengan mas details...

-berz3k.

WHK

Citarsdc envianos algunos PoCs y details, a ver si Alex te permite hacer alguna probe y los suscriptors tengan mas details...

Los PoCs están en milw0rm y lo unico que debes hacer es ejecutarlos, ambos están en perl, los puse arriba en el primer post.

Lo de explicar ¿creo que se entiende no? auqnue bueno, te lo explicaré..

http://milw0rm.com/exploits/6993:
http://translate.google.cl/translate?u=http%3A%2F%2Fmilw0rm.com%2Fexploits%2F6993&sl=en&tl=es&hl=es&ie=UTF-8

La primera falla consiste en que SMF no te pide la contraseña de administración verificadora , solo necesitas ser admin, si te fijas bién cuando quieres hacer alguna modificación como administrador siempre debes ingrear la contraseña aunque estés logueado a exepción del caso en que quieras instalar un paquete y ahí va la primera falla.

La segunda consiste en que puedes instalar cualquier paquete sin la necesidad de cofirmación ni código de seguridad (el típico sesc) asi que puedes ejecutar un XSRF o sea hacer que el administrador instale el paquete que tu quieras sin que el lo desee, además el paquete no necesariamente puede estar en el directorio /packages.

La tercera falla es que un archivo subido como adjunto no lleva ningún carácter al azar, o sea ese hash que se ponen a los archivos pueden ser descifrables y consiste de la siguiente manera:

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

La cuarta falla es una falla que ya se conoce de lejos para poder ejecutar un XSRF y es poner una imagen con una url que te redireccione aunque lo veo dificil que se animen a crear un sistema que verifique si la imagen es válida o no.


Con todo esto creo que ya te ha dado un poco la idea de lo que puedes hacer, subes un zip con un paquete que contenga un xml que desempaquete una shell como un c99 o un r57 en un directorio poco común y lo subes al servidor como archivo adjunto, ahora en algunos casos los foros no dejan subir este tipo de archivos pero descubrí que al momento de instalar un paquete el sistema le vale madre que extension tenga asi que le puedes poner *.pg, después calculas la ruta exacta del archio y te creas un post en la sección de reclamos y le mentas la madre al admin  :P pero moderadamente para que no te lo borren sino que te respondan y al ver el tema logueados harán que la imagen [img][/img] los redireccione hacia la instalación del paquete de la siguiente manera:
http://[website]/SMF/index.php?action=packages;sa=install2;package=./../attachaments/[filename]
y listo, la shell ha sido subida y ya puedes darle el susto de tu vida o desmadrarlo.


El segundo PoC http://milw0rm.com/exploits/7011:
http://translate.google.cl/translate?u=http%3A%2F%2Fmilw0rm.com%2Fexploits%2F7011&sl=en&tl=es&hl=es&ie=UTF-8

Se trata de un LFI donde el SMF hace un include con la variable "val" en esta petición:
Citar/index.php?action=jsoption;sesc=${sid};th=32;var=theme_dir;val=./attachments/avatar_${id}.gif%2500
Solo subes una imagen que contenga instrucciones php y listo, hasta puedes hacerlo desde un archivoa djunto y no desde el avatar como aparece en el exploit, da igual ya que lo que importa es el LFI.


¿Dudas?

sirdarckcat

#4
Si, cabe mencionar que WHK me aviso en cuanto se dio cuenta.

La vulnerabilidad en si no era explotable a menos que tuvieras un rango considerablemente alto (en la configuracion de este foro, en muchos otros probablemente no).. pero bueno, se tomaron medidas de todas formas.

SMF ya esta tomando medidas, no tengo idea de porque no han publicado el parche.

El parche temporal que recomendaria..

Para los LFI, pues.. simplemente no permitan subir archivos a sus usuarios, esto es muy importante, si permiten a cualquier persona subir archivos a su foro estan poniendose en peligro por muchas mas cosas que un LFI.. la regla debe ser jamas permitir subir archivos a sus usuarios.

El codigo se puede arreglar agregando un token contra CSRF  al procesar la peticion, de hecho la vulnerabilidad consiste en eso.. es un ataque de CSRF.. hay de estos muchos en muchos lugares solo es cuestion de buscarlos :P

El segundo que no requiere intervencion del administrador (es otro bug).. aplica la misma contramedida, no dejen subir a sus usuarios archivos!! aun podrian atacarlos con los logs de apache, pero bueno.

http://milw0rm.com/exploits/7011

Abstract: smf permite que modifiques cualquier variable de un tema, (para que pongas colores, o yo que se), y despues asigna a $settings el valor de las configuraciones del tema, por lo que puedes modificar cualquier configuracion de SMF (como el path de un theme).

Asi:

la opcion jsoption manda llamar a la funcion SetJavaScript en Sources/Themes.php

Linea 249 de index.php
Código (php) [Seleccionar]
'jsoption' => array('Themes.php', 'SetJavaScript')
Linea 1185 de Sources/Themes.php
Código (php) [Seleccionar]
function SetJavaScript()

Despues, esta funcion asigna en la tabla themes la variable que le mandaste.

Linea 1205 de Sources/Themes.php
Código (php) [Seleccionar]
db_query("
REPLACE INTO {$db_prefix}themes
(ID_THEME, ID_MEMBER, variable, value)
VALUES ($settings[theme_id], $ID_MEMBER, SUBSTRING('$_GET[var]', 1, 255), SUBSTRING('" . (is_array($_GET['val']) ? implode(',', $_GET['val']) : $_GET['val']) . "', 1, 65534))", __FILE__, __LINE__);


Despues, lee esa misma informacion de esa misma tabla.

Linea 853 de Sources/Themes.php
Código (php) [Seleccionar]
$request = db_query("
SELECT ID_THEME, variable, value
FROM {$db_prefix}themes
WHERE variable IN ('name', 'theme_url', 'theme_dir', 'images_url')" . (empty($modSettings['theme_default']) && !allowedTo('admin_forum') ? "
AND ID_THEME IN ('$knownThemes')
AND ID_THEME != 1" : '') . "
AND ID_THEME != 0
LIMIT " . count(explode(',', $modSettings['knownThemes'])) * 8, __FILE__, __LINE__);

Linea 861 de Sources/Themes.php
Código (php) [Seleccionar]
while ($row = mysql_fetch_assoc($request))

Y la guarda en $context['available_themes'][ID DEL TEMA]

Linea 869 de Sources/Themes.php
Código (php) [Seleccionar]
$context['available_themes'][$row['ID_THEME']][$row['variable']] = $row['value'];

Despues saca la informacion de cada tema:

Linea 904 de Sources/Themes.php
Código (php) [Seleccionar]
foreach ($context['available_themes'] as $ID_THEME => $theme_data)

Y asigna a settings el valor de las variables que acabamos de sacar de la base de datos.

Linea 910 de Sources/Themes.php
Código (php) [Seleccionar]
$settings = $theme_data;

Y al final, incluye un archivo usando un valor en $theme_dir

Linea 914 de Sources/Themes.php
Código (php) [Seleccionar]
include($settings['theme_dir'] . '/languages/Settings.' . $user_info['language'] . '.php')

Terrible no?

Para arreglar eso, simplemente asignen a settings theme_dir, default_theme_dir y base_theme_dir el valor correcto de forma estatica.. ;)

Puede ser que haya mas vulnerabilidades, pero para eso hay que esperar al parche.

El foro no seria explotable a este ataque, pero... si lo logran hacer de alguna forma porfavor avisenos.

Saludos!!

Eazy

Cita de: berz3k en  7 Noviembre 2008, 12:17 PM
Yep, me lo comento sirdarkcat, solo tomo medidas? XDD yo quiero divertirme con el  bug, sdc envianos algunos PoCs y details, a ver si Alex te permite hacer alguna probe y los suscriptors tengan mas details...

-berz3k.


Vamos sirdarckcar :) solo 1 o 2 =D
[/url]

WHK

CitarVamos sirdarckcar :) solo 1 o 2 =D
Juaz todavía no se lo que quieren si ya todo está requete explicado  :-\
El exploit en perl solo basta ejecutarlo y darle la url del foro y ya que mas.

si quieres probar ahi tienes foros:
http://www.google.cl/search?hl=es&q=Powered+by+SMF&btnG=Buscar&meta=
Solo busca alguno que te deje subir archivos y ya.

sirdarckcat

jajaja PoCs ya estan los exploits, los detalles ya los dije, no entiendo que mas quieres.

Dacan

#8
Muy buena informacion ya la pongo en practica si puedo.

Tengo una duda ya no salio en SMF 1.1.7

Edit:


CitarType     Action     Description
1.    Execute Modification    ./index.php    Test successful
2.    Execute Modification    ./SSI.php    Test successful
3.    Execute Modification    ./Sources/Help.php    Test successful
4.    Execute Modification    ./Sources/PackageGet.php    Test successful
5.    Execute Modification    ./Sources/Packages.php    Test successful

6.    Execute Modification    ./Sources/QueryString.php    Test successful
7.    Execute Modification    ./Sources/Subs-Graphics.php    Test successful
8.    Execute Modification    ./Sources/Themes.php    Test successful
9.    Execute Modification    ./Themes/default/Packages.template.php    Test successful

10.    Extract File    ./Packages/.htaccess    

Saludos, Dacan  :D

primaterecords

un gusto soy nuevo aqui tengo una pregunta, en mi foro no permito subir nada, pero si las imagenes como avatar para los usuarios, eso tambien afectaria_??? gracias