Devvortex
Devvortex es una máquina Linux de dificultad fácil que cuenta con un CMS Joomla que es vulnerable a la divulgación de información. Acceder al archivo de configuración del servicio revela credenciales de texto simple que conducen al acceso administrativo a la instancia de Joomla. Con acceso administrativo, la plantilla de Joomla se modifica para incluir código PHP malicioso y obtener un shell. Después de obtener un shell y enumerar el contenido de la base de datos, se obtienen credenciales en formato hash, que se descifran y conducen al acceso SSH a la máquina. La enumeración posterior a la explotación revela que el usuario tiene permiso para ejecutar apport-cli como root, lo que se aprovecha para obtener un shell root.

Reconnaissance
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Devvortex. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentra expuesta una página web de Nginx y el servicio SSH.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Añadiremos en nuestro archivo /etc/hosts la siguiente entrada.
Web Enumeration
Realizaremos una enumeración básica de las tecnologías que utiliza el sitio web a través de la herramienta de whatweb.
Al acceder a http://devvortex.htb, verificamos que se trata de una página en la cual a simple vista no logramos ver más páginas ni ningún tipo de información relevante.

Realizaremos una enumeración de directorios y páginas, no logramos visualizar algún contenido que nos pueda servir de utilidad.
Subdomain Enumeration
Tratando de realizar una enumeración de subdominios de la página web, nos encontramos con el subdominio dev.
Añadiremos esta nueva entrada en nuestro archivo /etc/hosts.
Al acceder a http://dev.devvortex.htb nos encontramos con una página similar a la anterior.

Realizando una enumeración de directorios y páginas web del nuevo subdominio, nos encontramos con diferentes directorios y páginas que podremos investigar más adelante.
Initial Foothold
Abusing Joomla to get version with joomla.xml file
Accediendo a http://dev.devvortex.htb/administrator/ nos encontramos con un panel de inicio de sesión del CMS de Joomla.

Podemos hacer uso de la herramienta de Joomscan para tratar de verificar la versión de Joomla que se encuentra instalada, pero en este caso, decidimos optar por revisarlo manualmente si era posible.
Nos encontramos con el siguiente blog, en el cual nos mencionan cómo podemos intentar verificar la versión de Joomla a través de HTTP.
Ralizamos la siguiente petición concURL y visualizamos la versión que está utilizando Joomla.
Joomla Exploitation - Sensitive Data Disclosure (CVE-2023-23752)
Revisando posibles vulnerabilidades de esta versión de Joomla, nos encontramos con el siguiente CVE-2023-23752.
Se descubrió un problema en Joomla! 4.0.0 a 4.2.7. Una comprobación de acceso incorrecta permite el acceso no autorizado a los puntos finales del servicio web.
Buscando más información por Internet, nos encontramos con el siguiente blog en el cual nos menciona la vulnerabilidad y diferentes opciones para probar de intentar aprovecharnos.
En este caso, a través de la siguiente petición con cURL, nos encontramos con unas credenciales en texto plano expuestas en el EndPoint.
Realizando la siguiente consulta, verificamos los usuarios que que se encuentran públicos. Logramos verificar que existe un usuario administrador lewis y un usuario registrado llamado logan.
Probaremos de verificar si podemos acceder al panel de Administración de Joomla a través de las credenciales obtenidas y de los usuarios que disponemos.

Customizing administration templante to achive RCE
Verificaremos que hemos logrado acceder con el usuario Administrador de Joomla lewis.
Dado que somos los administradores de Joomla, podemos intentar verificar diferentes campos para tratar de obtener acceso al sistema.
Lo primero que se nos ocurrió, fue en intentar modificar alguna plantilla de la web para inyectar algún comando y lograr obtener un RCE. Para ello, deberemos de ingresar a (System < Templates)

Al acceder a las plantillas que dispone el sitio web, tratamos de modificar la plantilla del archivo index.php indicándole que nos muestre un nuevo meta tag para verificar en el código fuente que se haya modificado correctamente. En este caso, al intentar guardar los cambios, se nos indicaba que no disponíamos de los permisos necesarios para escribir en el archivo.

Por lo que decidimos probar en el archivo error.php, con lo cual verificamos que este archivo se trataba de una página en PHP, añadimos una nueva cadena para que nos imprima el valor gzzcoo. Al intentar guardar la plantilla modificada, verificamos que en este caso si nos permitió guardarla.

Al tratar de acceder a una ruta que no existe, por ejemplo http://dev.devvortex.htb/gzzcoo, verificamos que se nos muestra la plantilla de error.php y se nos visualiza el comando que hemos inyectado en la plantilla.

Volvimos de nuevo para editar el archivo error.php, para que esta vez a través de la función system de PHP intente ejecutar el comando whoami.

Al tratar de acceder de nuevo a una página inexistente para que nos cargue el error.php, verificamos que se ha logrado ejecutar el comando whoami sin problemas, por lo tanto, parece ser que hemos logrado obtener una potencial vía para lograr un RCE y ejeuctar comandos arbitrarios en el servidor.

Editamos nuevamente la plantilla de error.php para que nos incluya la siguiente función que lo que realizará es una webshell para lograr ejecutar comandos a través del parámetro gzzcoo para así no tener que ir editando cada vez la plantilla.

Revisaremos desde consola, a través de la herramienta cURL de si la webshell creada funciona correctamente. En este caso, haremos una petición a una página inexistente para que nos salte la plantilla de error.php e indicaremos el parámetro configurado y el comando a ejecutar. Logramos tener una webshell a través de una plantilla modificada de Joomla.
El siguiente paso será lograr obtener acceso remoto al sistema. Por lo tanto, nos pondremos en escucha con nc.
Ejecutaremos la Reverse Shell a través de la webshell que disponemos.
Verificamos que logramos acceder al sistema y nos encontramos como usuario www-data.
Initial Access
Database Enumeration
Dado que disponemos de un usuario con privilegios limitados, visualizaremos posibles usuarios en los cuáles nos interesaría pivotar. En este caso, verificamos que los únicos usuarios que disponen de una bash son los usuarios root y logan.
Revisando los archivos que disponemos en el dierctorio actual, verificamos que hay uno que nos llama bastante la atención, el archivo que miraremos su contenid es el de configuration.php.
Al visualizar el contenido de este archivo, logramos obtener las credenciales en texto plano del acceso al MySQL.
Verificaremos que disponemos de MySQL instalado en el equipo, al comprobar esto, nos conectaremos con las credenciales obtenidas.
Al acceder al MySQL, visualizamos las bases de datos existentes, trataremos de investigar la tabla joomla.
Al visualizar las tablas que disponía esta BBDD, nos llama la atención la tabla nombrada como sd4fg_users.
Al revisar los valores de esta tabla, logramos obtener el hash de la contraseña del usuario logan el cual no disponíamos de acceso a él y si bien recordamos, disponía de bash para acceder al sistema.
Verificamos que el hash se trata de un hash tipo Blowfish, intentamos crackear este hash a través de hashcat y verificamos que logramos obtener la contraseña en texto plano.
Intentaremos acceder con estas nuevas credenciales mediante SSH, logramos el acceso y visualizar la flag de user.txt.
Privilege Escalation
Abusing sudoers privilege (apport-cli)
Al revisar si el usuario actual logan disponía de algún permiso de sudoers, nos encontramos que puede ejecutar como usuario sudo el binario /usr/bin/apport-cli
Revisando por Internet posibles maneras de escalar nuestros privilegios a través de este privilegio sobre el binario, nos encontramos con el siguiente PoC.
La idea principal de esta escalada de privilegios, es realizar un reporte random y en el último paso cuando se genere el reporte, ingresar la opción V para acceder a un modo de visualización (similar al comando less) y salir de este modo a través de !bash y convertirnos en usuario root.
Verificamos que logramos disponer de una bash de root y visualizar la flag de root.txt.
Última actualización
¿Te fue útil?