Sea

Publicado: 12 de Mayo de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Easy
๐ Descripciรณn
Sea es una mรกquina vulnerable de Hack The Box que presenta varios desafรญos de seguridad web e infraestructura. La mรกquina involucra:
Enumeraciรณn de servicios web
Explotaciรณn de una vulnerabilidad de Cross-Site Scripting (XSS) en WonderCMS
Escalada de privilegios mediante tรฉcnicas de enumeraciรณn y abuso de servicios internos
๐ Metodologรญa
๐ญ Reconocimiento
Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.
Escaneo de puertos
Enumeraciรณn de servicios
๐ Enumeraciรณn Web
80 HTTP (sea.htb)


โ ๏ธ Importante: Al intentar acceder a la secciรณn de contacto, vemos que la peticiciรณn se dirige a un vhost sea.htb que deberemos aรฑadir a nuestro fichero /etc/hosts para su resoluciรณn:

Activamos el interceptor de Burp y capturamos la peticiรณn del formulario:

Probamos algunas inyecciones XSS sin resultado.
๐ท๏ธFuzzing de directorios
Haciendo fuzzing de directorios de forma recursiva con la herramienta ferxobuster encontramos un par de archivos que puede que nos aporten mรกs informaciรณn sobre algรบn posible vector de ataque:



Revisando el cรณdigo fuente del proyecto en el repositorio oficial de github vemos que tambiรฉn existe un fichero README.md

http://sea.htb/themes/bike/README.md

Este fichero nos aporta informaciรณn relevante sobre que estamos ante CMS llamado WonderCMS v.3.2.0 a v.3.4.2 permite a un atacante remoto ejecutar cรณdigo arbitrario a travรฉs de un script manipulado y cargado en el componente installModule mediante una vulnerabilidad de Cross Site Scripting.
https://nvd.nist.gov/vuln/detail/CVE-2023-41425
๐ป Explotaciรณn
๐ CVE-2023-41425
Existen varios exploits pรบblicos que permiten explotar esta vulnerabilidad:
https://github.com/duck-sec/CVE-2023-41425
Esta exploit abusa de la vulnerabilidad XSS del campo loginURL del CMS:


El script nos genera la peticiรณn que deberemos proporcionar al administrador del sitio para robar su cookie de sesiรณn y realizar la inyecciรณn:
Para ello nos vamos a servir del campo Website del formulario, el cual generarรก un hipervรญnculo y confiaremos en que el administrador que lo reciba haga click en รฉl.

En pocos segundos veremos como se realiza la peticiรณn al recurso malicioso:

Y recibimos la reverse shell en nuestro host de ataque:

Mejorando la shell
En nuestro host de ataque
En el host comprometido
FootHold
Enumeramos el sistema y vemos que existen 2 usuarios en el directorio /home, pero no podemos leer la primera flag en el directorio del usuario amay:
Encontramos un archivo llamado database.js en /var/www/sea/data que contiene un hash.
Nota: Aquรญ es importante revisar que se estรกn usando caracteres para escapar la /, por lo que esto hay que tenerlo en cuenta ya que el hash tal como estรก no podemos intentar crackearlo, debemos eliminar previamente los caracteres ""

Ahora verificamos si estรก llevando a cabo la mala praxis de reutilizaciรณn de contraseรฑas para alguno de los usuarios que hemos enumerado anteriormente (amay o geo):
Logramos autenticarnos como amay para obtener la primera flag:

๐ Escalada de privilegios
Comprobamos si el usuario amay puede ejecutar algรบn comando como sudo:
Verificamos que la contraseรฑa anterior tampoco es vรกlida para el usuario geo:
No vemos que el usuario tenga ningรบn grupo interesante o que nos permita un posible vector para la escalada
Vemos si hay algรบn binario con privilegios SUID que pueda resultar interesante pero tampoco vemos nada:
Enumeramos la versiรณn del sistema operativo pero nada interesante tampoco
Vemos si hay alguna capability interesante pero tampoco vemos nada:
Enumeramos servicios en ejecuciรณn y vemos un servicio ejecutรกndose en el puerto 8080. Este servicio parece estar ejecutรกndose de forma local ya que anteriormente en nuestra enumeraciรณn de puertos y servicios vimos que habรญa รบnicamente dos servicios, 22 y 80.

Dado que tenemos la contraseรฑa del usuario amay, podemos verificar si podemos conectarnos vรญa ssh con estas credenciales y vemos que sรญ:

En este punto se me ocurre que podemos realizar port forwading del puerto 8080 a nuestro host de ataque usando para ello el puerto ssh:
A continuaciรณn desde nuestro host de ataque accedemos a este servicio y encontramos un panel de autenticaciรณn HTTP bรกsica. Al probar con las credenciales amay:mychemicalromance logramos acceder:
)
Explotaciรณn
No hallamos nada relevante a priori, pero sรญ que hay un combo que permite seleccionar el archivo del cuรกl quieres leer el log, vamos a revisar cรณmo se estรก realizando la peticiรณn interceptรกndola con Burp Suite y comprobamos que el parรกmetro log_file no estรก debidamente sanitizado y que es vulnerable a path traversal:

Sin embargo no podemos leer otros archivos, parece que se estรก aplicando algรบn tipo de filtrado. Podemos usar el carรกcter ; en combinaciรณn con # para evadir estos filtros de la siguiente forma:

De esta forma vemos que ademรกs de listar el contenido del fichero /etc/passwd tambiรฉn se ejecuta el comando whoami.
Podrรญamos aprovechar esto para ganar una reverse shell de la siguiente forma:
Aunque necesitaremos codificarla como URL
Iniciamos el listener y a continuaciรณn lanzamos la peticiรณn:

Opciรณn alternativa, sin usar reverse shell
Como alternativa, podemos generar un par de claves ssh usando la herraienta ssh-keygen sin definir contraseรฑa:
A continuaciรณn, disponibilizamos el archivo de clave pรบblica id_rsa.pub en un servidor web con python en nuestro host de ataque:
A continuaciรณn usando curl o wget, descargarmos el archivo .pub en el directorio /root/.ssh/authorized_keys

Si todo ha ido bien, deberรญamos poder conectarnos como root al host vรญctima sin indicar contraseรฑa:

Last updated