Hace ya unas semanas, se comentó en Hacktimes algunos de los aspectos relativos a la seguridad de Wordpress, uno de los programas de gestión de contenidos Web CMS más utilizados actualmente. Hoy es el turno de otra de esas aplicaciones: Joomla (http://www.joomla.org/). Desde el año 2005, Joomla es otro sistema CMS también muy extendido que tiene licencia GPL y que está desarrollado en PHP y MySQL como motor de bases de datos. La última versión disponible, publicada el pasado mes de abril, es la 1.6.3. que corrige algunos bugs y varios problemas de seguridad.
En lo que se refiere a seguridad, y como se exponía en el artículo sobre el caso de Wordpress (http://www.hacktimes.com/jugando_con_wordpress/), Joomla también ha tenido sus inconvenientes. Según Secunia, se han detectado 34 vulnerabilidades en Joomla desde su primera versión en septiembre de 2005, ninguna de ellas críticas y todas explotables de forma remota:
Fig 1. Listado de las vulnerabilidades encontradas en Joomla
Fig 2. Clasificación de las vulnerabilidades de Joomla
Para analizar la seguridad de cualquier página Web con Joomla, lo primero es confirmar que se trata efectivamente de Joomla, y no de otro CMS, e identificar la versión. Encontrando alguno de los siguientes ficheros y directorios en la página Web se puede comprobar que efectivamente se trata de Joomla:
/joomla
/joomla/administrator
/media/system/js/caption.js
/language/en-GB/en-GB.ini
/includes/js/dtree/dtree.js
/includes/js/joomla.javascript.js
/htaccess.txt
/robots.txt
/CHANGELOG.php
Para buscar por internet páginas con Joomla es suficiente con poner en Google intitle:"Joomla - Web Installer" o también "site:*.*.es/joomla". Además de obtener el archivo de instalación de Joomla, se obtiene la versión instalada en el banner superior donde aparece el mensaje "Joomla! Installation". Este método es válido para cualquier versión, incluso para las más recientes.

Fig 3. Captura de una web con Joomla versión 1.5.9

Fig 4. Captura de una web con Joomla versión 1.5.23
Todas las versiones 1.5.x incluyen el fichero joomla.javascript.js accesible de forma pública. Las versiones más recientes 1.6.x no disponen de este archivo por lo que es relativamente sencillo descartar si se está ante una Web con Joomla 1.5.x ó 1.6.x.
Otra forma alternativa es buscar el archivo htaccess.txt (en aquellas páginas donde no haya sido modificado por descuido del administrador), ver las fechas que aparecen en el mismo y compararlas con las fechas de publicación de las versiones de Joomla que son consultables vía web (http://www.joomlaspanish.org/), por ejemplo:
http://www.hacktimes.com/joomla/htaccess.txt
##
# @version $Id: htaccess.txt 21064 2011-04-03 22:12:19Z dextercowley $
# @package Joomla
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##
Este fichero corresponde a la versión 1.5.23 que se publicó con fecha de abril de 2011.
##
# @version $Id: htaccess.txt 13415 2009-11-03 15:53:25Z ian $
# @package Joomla
# @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPLv
# Joomla! is Free Software
##
Este archivo en cambio corresponde a la versión 1.5.15 publicada en noviembre de 2009.
El fichero htaccess.txt de Joomla es un archivo que se incluye en todas las versiones y que es necesario renombrar para que funcione como cualquier otro fichero .htaccess en un servidor Web Apache. La finalidad del mismo es la de proporcionar mensajes de error personalizados, bloquear el acceso público vía Web a determinados ficheros, etc.
Otra forma de concretar aún más la identificación de la versión es utilizando alguna de las herramientas que se comentaron en el artículo sobre "Fingerprinting de aplicaciones Web": Whatweb, Blind Elephant (https://community.qualys.com/community/blindelephant), Sucuri Security, etc.
Una vez identificada la versión ya es posible buscar vulnerabilidades de forma más específica. El proceso de búsqueda de vulnerabilidades se puede incluso automatizar utilizando alguna de las herramientas que ya existen, como por ejemplo:
- Owasp Joomla Vulnerability Scanner Project (https://www.owasp.org/index.php/Category:OWASP_Joomla_Vulnerability_Scanner_Project): aunque algo desfasada es un
proyecto de Owasp del año 2009 que para versiones inferiores a la 1.5.15 es más que válido y comprueba todo tipo de vulnerabilidades como Denegación de Servicio (DoS), XSS, ejecución de comandos, etc.
Usage: joomscan.pl -u -x proxy:port
-u = joomla Url
==Optional==
-x = proXy to tunnel
-c = cookie (name=value;)
-g "" = desired useraGent string within "
-nv = No Version fingerprinting check
-nf = No Firewall detection check
-nvf/-nfv = No version+firewall check
-pe = Poking version only
(and Exit the scanner)
-ot = Output to Text file (target-joexploit.txt)
-oh = Output to Html file (target-joexploit.htm)
-vu = Verbose (output every Url scan)
-sp = Show completed Percentage - Joomla Scan (http://blog.pepelux.org/2010/09/02/joomla-scan-v1-2/): el compañero Pepelux retomó el proyecto de Owasp y lo amplió manteniéndolo actualizado con los últimos advisories que se van publicando en Security Focus. Esta es una aplicación que funciona bajo Windows y que, cada vez que se inicia, comprueba que exista una versión más actualizada y la descarga.

Fig 5. Captura de pantalla del uso de la herramienta de Pepelux
También de forma manual se puede comprobar la existencia de alguna vulnerabilidad. Por ejemplo, en versiones inferiores a la 1.5.10 existe una vulnerabilidad que permite cambiar la contraseña de administrador de Joomla de la siguiente forma:
http://www.hacktimes.com/joomla/index.php?option=com_user&view=reset&layout=confirm
mediante la sentencia "index.php?option=com_user&view=reset&layout=confirm" se obtiene una página donde introducir una clave o token (según el idioma en el que esté instalado Joomla) y donde se introducirá el comando "'" (comilla simple ', sin las comillas). Esto generará otra página en donde se podrá introducir una nueva contraseña para el usuario admin.
Las extensiones de Joomla también presentan vulnerabilidades, un ejemplo es la que permite una inyección de códgo SQL a través de "IDoBlog". Por ejemplo:
http://www.hacktimes.com/index.php?option=com_idoblog&task=profile&Itemid=1337&userid=62+union+select+1,2,concat%28username,0x3a,password,0x3a,email%29,4,5,6,7,8,9,10,11,12,13,14,15,16+from+jos_users--Otras vulnerabilidades existentes en las diversas versiones de Joomla se pueden ver en Secunia, en Security Focus, en Inj3ct0r o en Exploit Database.


Comentarios
Chema Alonso habla hoy en su blog sobre las contraseñas de joomla y la tabla de usuarios: http://www.elladodelmal.com/2011/06/los-backups-de-joomla-y-las-passwords.html
Añadir comentario