💣Joomla - Ataques
Última actualización
Última actualización
Ahora sabemos que estamos tratando con un sitio de comercio electrónico de Joomla. Si podemos obtener acceso, podremos acceder al entorno interno del cliente y comenzar a enumerar el entorno de dominio interno. Al igual que WordPress y Drupal, Joomla ha tenido su cuota de vulnerabilidades contra la aplicación principal y extensiones vulnerables. Además, al igual que los demás, es posible obtener ejecución de código remoto si podemos iniciar sesión en el backend de administración.
Durante la fase de enumeración de Joomla y la búsqueda general de datos de la empresa, podemos encontrarnos con credenciales filtradas que podemos usar para nuestros fines. Con las credenciales que obtuvimos en los ejemplos de la última sección, admin:admin
, iniciemos sesión en el backend de destino en http://dev.inlanefreight.local/administrator
. Una vez que hayamos iniciado sesión, podemos ver muchas opciones disponibles. Para nuestros fines, nos gustaría agregar un fragmento de código PHP para obtener RCE. Podemos hacer esto personalizando una plantilla.
Desde aquí, podemos hacer clic en Templates
en la parte inferior izquierda debajo de Configuration
para que aparezca el menú de plantillas:
A continuación, podemos hacer clic en el nombre de una plantilla. Elijamos protostar
debajo del encabezado de la columna Template
. Esto nos llevará a la página Templates: Customise
.
Por último, podemos hacer clic en una página para obtener el código fuente de la misma. Es una buena idea adquirir el hábito de utilizar nombres de archivo y parámetros no estándar para nuestras webshells, de modo que no sean fácilmente accesibles para un atacante "intruso" durante la evaluación. También podemos protegerlos con contraseña e incluso limitar el acceso a nuestra dirección IP de origen. Además, siempre debemos recordar limpiar los webshells tan pronto como terminemos con ellos, pero aún así incluir el nombre de archivo, el hash del archivo y la ubicación en nuestro informe final para el cliente.
Seleccionemos la página error.php
. Agregaremos un código PHP de una sola línea para ejecutar el código de la siguiente manera.
Una vez dentro, haga clic en Save & Close
en la parte superior y confirme la ejecución del código usando cURL
:
Desde aquí, podemos actualizar a un shell inverso interactivo y comenzar a buscar vectores de escalada de privilegios locales o centrarnos en el movimiento lateral dentro de la red corporativa. Debemos asegurarnos, una vez más, de anotar este cambio en los apéndices de nuestro informe y hacer todo lo posible para eliminar el fragmento de código PHP de la página error.php
.
En el momento de escribir este artículo, se han detectado 426 vulnerabilidades relacionadas con Joomla que han recibido una CVE. Sin embargo, el hecho de que una vulnerabilidad haya sido divulgada y haya recibido una CVE no significa que sea explotable o que exista un exploit PoC público disponible. Al igual que con WordPress, las vulnerabilidades críticas (como las de ejecución remota de código) que afectan al núcleo de Joomla son poco frecuentes. Si buscamos en un sitio como exploit-db
se muestran más de 1400 entradas para Joomla, y la gran mayoría son para extensiones de Joomla.
Analicemos una vulnerabilidad del núcleo de Joomla que afecta a la versión 3.9.4
, que se encontró en nuestro objetivo http://dev.inlanefreight.local/
durante nuestra enumeración. Al consultar la página de descargas de Joomla , podemos ver que la versión 3.9.4
se lanzó en marzo de 2019. Aunque está desactualizada, ya que estamos en Joomla 4.0.3
desde septiembre de 2021, es totalmente posible encontrarse con esta versión durante una evaluación, especialmente en una gran empresa que puede no mantener un inventario de aplicaciones adecuado y desconoce su existencia.
Investigando un poco, encontramos que esta versión de Joomla probablemente sea vulnerable a CVE-2019-10945 , que es una vulnerabilidad de eliminación de archivos autenticados y de Path Traversal. Podemos usar este script de explotación para aprovechar la vulnerabilidad y enumerar el contenido del directorio raíz web y otros directorios. La versión python3 de este mismo script se puede encontrar aquí .
También podemos usarlo para eliminar archivos (no recomendado). Esto podría llevar al acceso a archivos confidenciales, como un archivo de configuración o un script que contenga credenciales, si luego podemos acceder a él a través de la URL de la aplicación. Un atacante también podría causar daños al eliminar archivos necesarios si el usuario del servidor web tiene los permisos adecuados.
Podemos ejecutar el script especificando los indicadores --url
, --username
, --password
y --dir
. Como pentesters, esto solo nos resultará útil si el portal de inicio de sesión de administrador no es accesible desde el exterior, ya que, armados con credenciales de administrador, podemos obtener ejecución de código remoto, como vimos anteriormente.
Aproveche la vulnerabilidad Directory Traversal para encontrar una flag en el web root de la aplicación Joomla http://dev.inlanefreight.local/
Encontramos las credenciales admin:admin
Accedemos al panel de login en:
La web está rota y no podemos acceder al gestor de archivos, por lo que vamos a probar la vulnerabiilidad de Directory Traversal con el script del módulo:
Encontramos la flag: flag_6470e394cbf6dab6a91682cc8585059b.txt
Al intentar leer la flag con curl no podemos directamente, ya que necesitamos una cookie de sesión. Capturamos una petición de login con BurpSuite y obtenemos datos relevantes:
Vamos a intentar loguearnos con curl de la siguiente manera:
Eso nos genera un archivo cookies .txt:
La cookie generada sugiere que el login fue exitoso porque ahora tenemos una sesión activa con el valor b3832796fcc06a2991b186374e8f3acf = 6lmna21i1ieca6pah95nvltchp
. Ahora podemos utilizar esta cookie para realizar solicitudes autenticadas.
El servidor podría requerir cabeceras adicionales para autenticar la solicitud
Obtenemos de esta manera el contenido de la flag!