Curling | Hack The Box

En este tutorial voy a mostrar como obtuve la bandera root en la máquina Curling de Hack The Box. Esta propiedad se presenta como un desafío de nivel fácil.

Curling

7 de noviembre de 2024

Enumeración


En primer lugar voy a comenzar realizando un escaneo de puertos con nmap:

nmap

Los puertos que se encuentran abiertos son 22 y 80.

Voy a ingresar la ip en el navegador para ingresar en la página web:

web

Se trata de un sitio que utiliza Joomla! como CMS. Como datos interesantes para rescatar veo que hay una publicación firmada por "Floris".

Revisando el código fuente encontré que había un comentario "secret.txt", así que se me ocurrió ingresar en la ruta /secret.txt, lo cuál me devolvió una serie de caracteres: Q3VybGluZzIwMTgh, parece ser un bsae64, voy a intentar descifrarlo:

descifrando base64

Así obtengo "Curling2018!".

Voy a volver a la página para tratar de ingresar usando la contraseña "Curling2018!" y el usuario "Floris". Y así logre ingresar en el admin de la página.

Aclaración: Para obtener el acceso hay que ingresar desde superuser y no desde el login form.

Joomla

El paso siguiente es obtener acceso al sistema.

Explotación


Navegando un poco por el panel del admin encontré en la sección templates dentro del panel de configuración, que es posible ingresar código PHO libremente, así que voy a pasarle un código para lograr una reverse shell. El código que voy a usar es el que se encuentra en el siguiente repositorio:

https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

archive php

Una vez enviado el archivo tuve que hallar en que directorio se almacenaba para ingresarlo en la url y lograr la reverse shell, para eso me apoyé en gobuster:

gobuster

Así fue que encontré el directorio "templates", ahora para poder activar la reverse shell voy a ingresar la url junto con el nombre del template y el archivo malicioso creado: 10.10.10.150/templates/protestar/"nombre_archivo.php".

Importante previo a cargar la url abrir un puerto de escucha con netcat para poder obtener la devolución a la llamada:

reverse shell

Y asi logré ingresar al sistema.

Escalada de Privilegios


Para lograr escalar privilegios voy a navegar hasta el usuario Floris, en donde veo que se encuentra la bandera de usuario, pero lamentablemente no podemos acceder a ella tan fácilmente. También noté que hay un password_backup, al cuál si tengo acceso.

Al abrirlo me encuentro con que esta en formato hexadecimal, así que voy a usar el comando xxd -r para revertirlo y redirigir la salida a un nuevo archivo:

bzpi

Ahora voy a descomprimir el archivo usando bzip:

bzip

Pero este archivo que me muestra al usar el cat es algo extraño, así que use file para ver que tipo de archivo era, y resulta que es un gzip, el cual hay que descomprimir:

gunzip

Y me encuentro con que al descomprimirlo hay otro archivo comprimido nuevamente en bzpi2. Voy a descomprimir nuevamente:

ultimo bzip

Volví a usar el comando file para ver el tipo de archivo del documento y era un archivo tar, con lo cuál también hay que descomprimir:

tar

Y ahora si! Obtuve la contraseña, lo que voy a intentar ahora es ingresar mediante ssh con el usuario floris y la contraseña que encontré:

floris ssh

Una vez dentro fácilmente obtengo la bandera user.txt, simplemente listando los archivos.

También me pareció interesante la carpeta "admin-area", ya que es propiedad del usuario root:

admin area

Investigando un poco noté que el valor de report es un output del valor del input, con lo cual es posible que si logro cambiar el valor del input por el archivo donde se encuentra la bandera de root pueda ver su contenido en el archivo report:

escalada de privilegios

Y de esta manera finaliza la máquina! Espero que este tutorial te haya ayudado!