🔎Joomla - Enumeración
Introducción
Joomla , lanzado en agosto de 2005, es otro CMS gratuito y de código abierto que se utiliza para foros de debate, galerías de fotos, comercio electrónico, comunidades de usuarios y más. Está escrito en PHP y utiliza MySQL en el backend. Al igual que WordPress, Joomla se puede mejorar con más de 7000 extensiones y más de 1000 plantillas. Hay hasta 2,5 millones de sitios en Internet que utilizan Joomla. A continuación, se muestran algunas estadísticas interesantes sobre Joomla:
Joomla representa el 3,5% de la cuota de mercado de CMS
Joomla es 100% gratuito y significa "todos juntos" en suajili (escritura fonética de "Jumla").
La comunidad Joomla tiene cerca de 700.000 miembros en sus foros en línea.
Joomla impulsa el 3% de todos los sitios web en Internet, casi 25.000 del millón de sitios más importantes del mundo (solo el 10% del alcance de WordPress)
Algunas organizaciones notables que utilizan Joomla incluyen eBay, Yamaha, la Universidad de Harvard y el gobierno del Reino Unido.
A lo largo de los años, 770 desarrolladores diferentes han contribuido a Joomla.
Joomla recopila algunas estadísticas de uso anónimas , como el desglose de las versiones de Joomla, PHP y de la base de datos y los sistemas operativos del servidor que se utilizan en las instalaciones de Joomla. Estos datos se pueden consultar a través de su API pública .
¡Al consultar esta API, podemos ver más de 2,7 millones de instalaciones de Joomla!
afsh4ck@kali$ curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
{
"data": {
"cms_version": {
"3.0": 0,
"3.1": 0,
"3.10": 3.49,
"3.2": 0.01,
"3.3": 0.02,
"3.4": 0.05,
"3.5": 13,
"3.6": 24.29,
"3.7": 8.5,
"3.8": 18.84,
"3.9": 30.28,
"4.0": 1.52,
"4.1": 0
},
"total": 2776276
}
}Discovery / Footprinting
Supongamos que nos topamos con un ecommerce durante una prueba de penetración externa. A primera vista, no estamos seguros exactamente de qué se está ejecutando, pero no parece que esté totalmente personalizado. Si podemos identificar qué se está ejecutando en el sitio, es posible que podamos descubrir vulnerabilidades o configuraciones incorrectas. Con base en la información limitada, asumimos que el sitio está ejecutando Joomla, pero debemos confirmar ese hecho y luego averiguar el número de versión y otra información, como temas y complementos instalados.
A menudo podemos identificar a Joomla mirando el código fuente de la página, lo que nos indica que estamos tratando con un sitio Joomla.
El archivo robots.txt de un sitio Joomla generalmente se verá así:
También podemos ver a menudo el favicon de Joomla (pero no siempre). Podemos identificar la versión de Joomla si el archivo README.txt está presente.
En ciertas instalaciones de Joomla, es posible que podamos obtener la huella digital de la versión a partir de los archivos JavaScript en el directorio media/system/js/ o navegando a administrator/manifests/files/joomla.xml.
El archivo cache.xml puede ayudarnos a obtener la versión aproximada. Se encuentra en plugins/system/cache/cache.xml.
Enumeración
Droopescan
Probemos droopescan , un escáner basado en complemento que funciona para SilverStripe, WordPress y Drupal con funcionalidad limitada para Joomla y Moodle.
Podemos clonar el repositorio Git e instalarlo manualmente o instalarlo mediante pip.
Podemos acceder a un menú de ayuda más detallado escribiendo droopescan scan --help.
Ejecutemos un escaneo y veamos qué encontramos:
Como podemos ver, no se ha obtenido mucha información aparte del posible número de versión.
Joomscan
Podemos usar este programa para enumerar de forma efectiva un host joomla. Lo podemos instalar en kali con apt:
Joomlascan
También podemos probar JoomlaScan , que es una herramienta de Python inspirada en la herramienta Joomscan de OWASP. Está un poco desactualizada y requiere Python 2.7 para ejecutarse. Podemos ponerla en funcionamiento asegurándonos primero de que estén instaladas algunas dependencias.
Aunque está un poco desactualizado, puede ser útil para nuestra enumeración. Hagamos un análisis.
Si bien no es tan valiosa como droopescan, esta herramienta puede ayudarnos a encontrar directorios y archivos accesibles y puede ayudarnos a identificar las extensiones instaladas. En este punto, sabemos que estamos tratando con Joomla 3.9.4. El portal de inicio de sesión del administrador se encuentra en http://dev.inlanefreight.local/administrator/index.php. Los intentos de enumeración de usuarios devuelven un mensaje de error genérico.
Bruteforce de Joomla
La cuenta de administrador predeterminada en las instalaciones de Joomla es admin, pero la contraseña se establece en el momento de la instalación, por lo que la única forma en que podemos esperar ingresar al back-end de administración es si la cuenta está configurada con una contraseña muy débil/común y podemos ingresar con algunas conjeturas o con un ataque de fuerza bruta leve.
Podemos usar este script para intentar forzar el inicio de sesión.
Y nos encontramos con un problema con las credenciales admin:admin. ¡Alguien no ha seguido las mejores prácticas!
Caso práctico
Ejercicio 1
Enumera la versión de Joomla en uso en
http://app.inlanefreight.local
Obtenemos la versión 3.10.0
Ejercicio 2
Encuentra la contraseña del usuario administrador en
http://app.inlanefreight.local
Vamos a usar el script de joomla-bruteforce:
Bingo! Obtenemos las credenciales del usuario adminstrador.
Última actualización
¿Te fue útil?
