Falla en el mod Seo4SMF para SMF

Iniciado por WHK, 9 Enero 2009, 09:47 AM

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

WHK

Bueno estas fallas ya fueron reportadas pero no parchadas  :xD aunque en este foro ya se parcharon asi que ayá va el post me peguen o me ahorquen jajaj..



Vamos a estudiar un poco este complemento para foros SMF, aprenderemos como repararlas y a testearlas.

Si solamente te interesa saber cuales son las fallas puedes ir directamente al final de este tema.

Primeramente tenemos que bajar su código fuente e instalarlo en un servidor local para poder entender las fallas e ir sacando conclusiones:
http://www.webmasterstalks.com/tpmod.html;dl=item48

No es de sorprenderse que no les interesa mucho la seguridad ya que en su propio foro utilizan una versión muy vieja de SMF con múltiples fallas ya avisadas y requete avisadas por simplemachines y sitios de advisories.

Bajamos SMF desde acá:
http://download.simplemachines.org/

Una ves ya instalado podemos comprobar algunas de las siguientes fallas.

SQL Inyección
Si no sabes que significa SQLi puedes visitar Google o Wikipedia.
http://www.google.cl/search?hl=es&q=inyecci%C3%B3n+sql&btnG=Buscar+con+Google&meta=
http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

Nos fijamos bién en el archivo seo4smf-redirect.php y podermos observar de plano las fallas:

Linea 7 al 13
Código (php) [Seleccionar]
$topic = $_GET['t'];
$board = $_GET['b'];
$other = $_GET['o'];
$user = $_GET['u'];
$tpage = $_GET['p'];
$action = $_GET['a'];
$param = $_GET['param'];



Luego el bug propiamente tal:

Linea 50 al 63
Código (php) [Seleccionar]
$query = db_query("
SELECT m.ID_TOPIC, m.subject ,b.ID_BOARD, b.name
FROM {$db_prefix}messages AS m, {$db_prefix}boards AS b
WHERE m.ID_TOPIC = $topic
AND m.ID_BOARD = b.ID_BOARD
IMIT 1", __FILE__, __LINE__);


Linea 105 al 108
Código (php) [Seleccionar]
$query = db_query("
SELECT name FROM {$db_prefix}boards AS b
WHERE ID_BOARD = $board
LIMIT 1", __FILE__, __LINE__);


Linea 125
Código (php) [Seleccionar]
$request = db_query("SELECT memberName FROM {$db_prefix}members where
ID_MEMBER=".$user." limit 1", __FILE__, __LINE__);


Linea 143
Código (php) [Seleccionar]
$request = db_query("SELECT subject FROM {$db_prefix}tp_articles where
id=".$tpage." limit 1", __FILE__, __LINE__);


Ahora como podemos ver estas variables no contienen ningún tipo de filtro asi que procedemos a verificar nuestra inyección sql:

http://localhost/smf/seo4smf-redirect.php?t=-1 union select 1,2,3...(numero de columnas)...,concat(username(),database()) –

y bualá, ahora nos podemos aprovechar un poco mas y consultar a la base de datos el hash delid del administrador mas su password asalt para crearnos nuestra cookie y autentificarnos como administrador para luego subir un módulo infectado con alguna webshell o un php con comandos arbitrarios y obtener el control total del sitio.

Inyección de Headers, XSS y Path Disclosure
Otra falla poco común que podemos ver está en la linea 106 y dice así:

Código (php) [Seleccionar]
if(!empty($url)){
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
exit;
}


En mi caso lo estuve testeando en un servidor con una versión vieja de PHP que me permite inyectar headers haciendo un salto de linea, normalmente las versiones de ahora te lanza un error diciendo que no puedes declarar mas de un header por función:

http://localhost/seo4smf-redirect.php?a=x%0DLocation:%20javascript:alert(document.cookie);

Nos queda algo así:



En unos casos puedes causar un ataque XSS y en otros casos un Path disclosure ya que cuando el seo4smf te arroje el error de PHP este te revelará el directorio exacto del script dando lugar a otros tipos de ataques como la averiguación del directorio de configuraciones de SMF para un futuro ataque de LFI o Remote arbitrary download file.

Disclosure en temas y nombre de foros
Otra falla es que al momento de redireccionar algún tema este lo hace en el formato host/nombre_del_foro/nombre_del_tema sin verificar si estás autentificado como para diferenciar entre foros privados o no, por ejemplo podrías ingresar en la variable t de topic un tema que no tengas acceso y en la url te devolverá el nombre del foro privado y el nombre del tema aun sin estar logueado, por ejemplo:

http://localhost/seo4smf-redirect.php?t=1.new/topicseen

donde 1 es el número del tema, si no es privado te mostrará el tema normalmente, si es privado te mostrará un mensaje de error diciendo que no tienes acceso o no existe, en el caso de seo4smf te mostrará empty si el tema no existe, ya con eso podemos sacar como conclusión de que podremos crear nuestra propia herramienta que nos rastree desde el topic 1 hasta el último del foro y en el caso de que nos debuelva una url válida pero el contenido diga que no existe o está fuera de tus límites entonces es un foro privado y muchas veces el título dicen tanto como el contenido.



Antes de pasar a la siguente vulnerabilidad les presentaré el software que hize para auditar esta falla y recuerden que es solamente de uso personal y para pruebas locales:



Está hecho claramente para Window$ pero puede hacerse en cualquier lenguaje que se requiera sin esfuerzo mental alguno, la descarga está acá:

http://www.jccharry.com/greencode/filemanager/index.php?wfm-ruta=%2FCreaciones+propias%2FOtros%2Fseo4smf_exploit.zip

Está con su código fuente y todo.

Cross Site Request Forgery e Inyección de código arbitrário
Ahora si pasamos a la siguiente falla que son múltiples CSRF (ver Google y/o Wiki
http://www.google.cl/search?hl=es&q=csrf&btnG=Buscar+con+Google&meta=
http://en.wikipedia.org/wiki/Cross-site_request_forgery) los cuales me permiten modificar todo tipo de dato en el panel de administración de Seo4SMF remotamente. Supongamos que yo atacante hago una web donde hay un formulario que se envía por si solo hasta la web del atacante, en ese casi si la visita el Administrador y este está logueado podremos modificar lo que sea enviando variables en los formularios.  El CSRF con mayor peligrosidad es poder modificar totalmente el archivo .htaccess de la raiz del directorio del foro teniendo la posibilidad de un desface total.Las configuraciones guardadas por este panel de Administración (http://localhost/seo4smfadmin.html) son puestas dentro de un archivo XML dando la posibilidad de inyectar parámetros o códigos arbitrarios al no existir ningún tipo de filtro, por ejemplo en una variable cualquiera puedes enviar "</xml><?php...." dejando un código PHP arbitrario que puede ser llamado posteriormente por una falla de tipo File Inclusión Local (LFI http://www.google.cl/search?hl=es&sa=X&oi=spell&resnum=1&ct=result&cd=1&q=local+file+inclusion&spell=1) ejecutando con éxito comandos arbitrarios de cualquier tipo sin que las configuraciones de un mod evasive o mod rewrite nos afecte ya que los datos viajan via POST y no via GET para que pueda ser procesada en %REQUEST_URI%.

Estas fueron solo algunas de las tantas fallas que incluye este sistema tán útil pero tán inseguro al mismo tiempo. Es dificil creer que los programadores de hoy todavía no les interese esto de la seguridad, después se quejan desgastandose en demandas cuando lo que tienen que hacer es leer y aprender de una buena ves por todas.

Fuente: http://www.jccharry.com/blog/2009/01/09/whk_fallas-criticas-en-seo4smf-para-foros-smf-simplemachines-forum.html

Esto solo son unas pocas fallas porque el sistema no contempla ningún tipo de filtro para nada asi que se puede encontrar de todo.

Nakp

muy bueno, te felicito

tantos arreglos que se le han hecho a ese mod que, quien lo arregle (creo que Sdc siempre CoAdm en nuestros corazones) debería adueñarse del proyecto xD
Ojo por ojo, y el mundo acabará ciego.

Leber

#2
Buenas  :), ante todo agradecer esta gran explicacion que, almenos a mi, me ha servido y gustado mucho, asi que he decido hacer unas pruebas en local.
------
Tenia un problema con el modulo pero parece ser que lo he arreglado jeje, cuestion de leer un poco. No indico la solucion porque solo era ir a la sección de admin subir el modulo e instalarlo.

Gracias y saludos
"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe

WHK

No Debes visualizar ningún archivo install.php, te explico.. instalas SMF eso supongo que ya lo tienes, después ingresas como Administrador y habrá una pestaña llamada Packages, desde ahí hay una parte donde dice Download Packages, ahora podrás ver una parte abajo donde te da la opción de subir un archivo, le das ese mod comprimido tal como viene de fábrica y le das en Upload , después te dirá si quieres instalarlo y bla bla bla y tu le das siguiente siguiente siguiente. Por último te vas a la sección donde dice Seo4SMF Admin y lo activas donde dice "Seo4SMF Enable".

Acá está un poco mas explicado:
http://www.simplemachines.org/community/index.php?topic=203647.0

дٳŦ٭

Pues lo mismo cabrón, felicidades y mis mas sinceras admiraciones ya que siempe has sido una persona que nunca se rinde y entre mas lo reten mas sobresale.

Felicidades WHK.


Con sangre andaluza :)


AlbertoBSD

Pues bien :D la verdad me gusto mucho el post :D, cabe mencionar que la apliaciones que realizaste desde VB, se ejecuta perfectamente desde un linux o en mi caso desde un FreeBSD usando wine.

Saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

berz3k

@WHK
--
No es de sorprenderse que no les interesa mucho la seguridad ya que en su propio foro utilizan una versión muy vieja de SMF con múltiples fallas ya avisadas y requete avisadas por simplemachines y sitios de advisories.
--

Si es para nosotros, siempre estamos interesados en la seguridad, por lo menos estamos al dia Anon, sdc y yo, pero en muchas ocasiones el trabajo, escuela y demas, no nos permite estar al 100% pendientes del Foro, aunque cabe mencionar que tu investigacion es buena WHK

@Anon, wine s0x XDD

-berz3k.



berz3k


Dacan

#8
Muy bueno man, pero no existe el directorio de descarga del binario o del source.

Edit: http://www.jccharry.com/greencode/filemanager/index.php?wfm-ruta=%2FCreaciones+propias%2FOtros%2Fseo4smf_exploit.rar

Saludos, Dacan   :D

WHK

CitarNo encontre el binario que decis, para ver el source code
aaah si, esque había actualizado un poco el código pero no me fijé que lo compromí en rar y no en zip  :P deja subir el mismo en zip y en rar.

Eso de que no se preocupan por la seguridad no me refería austedes porque se lo importante que es esto y que ustedes también lo saben, yo lo decía por el autor del script.