Bueno estas fallas ya fueron reportadas pero no parchadas
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=item48No 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ónSi 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_SQLNos fijamos bién en el archivo
seo4smf-redirect.php y podermos observar de plano las fallas:
Linea 7 al 13
$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
$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
$query = db_query("
SELECT name FROM {$db_prefix}boards AS b
WHERE ID_BOARD = $board
LIMIT 1", __FILE__, __LINE__);
Linea 125
$request = db_query("SELECT memberName FROM {$db_prefix}members where
ID_MEMBER=".$user." limit 1", __FILE__, __LINE__);
Linea 143
$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 DisclosureOtra falla poco común que podemos ver está en la linea 106 y dice así:
header('HTTP/1.1 301 Moved Permanently'); }
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 forosOtra 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/topicseendonde 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.zipEstá con su código fuente y todo.
Cross Site Request Forgery e Inyección de código arbitrárioAhora 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.htmlEsto solo son unas pocas fallas porque el sistema no contempla ningún tipo de filtro para nada asi que se puede encontrar de todo.