Time [MEDIUMπŸ”΅]

Dificultad: Medio

1- Reconocimiento y escaneo

1.1 Ping

Podemos notar que se trata de una maquina Linux, debido al TTL:

1.2 Nmap

Podemos ver los puertos 22(OpenSSH 8.2p1) correspondiente a un servidor SSH para control remoto mediante linea de comandos y el puerto 80(Apache 2.4.41) correspondiente a un servidor web

1.3 whatweb

Se pueden ver tecnologΓ­as webs como:

1.4 Fuzzing

2- ExplotaciΓ³n

2.1 SSRF - Server-Side Request Forgery

Dentro de la pagina web, encontre que se acontece una vulnerabilidad SSRF para ejecuciΓ³n remota de comandos(RCE), si nos vamos a la pagina web y cambiamos la lista de "Beautify" a "Validate" y ponemos un "hola":

Vemos que se acontece un error:

Podemos ver que esto se ejecuta con el lenguaje de programaciΓ³n en Java, tambien vemos algo interesante relacionado a una librerΓ­a de Java llamada "jackson", si investigamos sobre esta aplicaciΓ³n, podremos encontrar que se acontece un SSRF de una vulnerabilidad publica "CVE-2019-12384"

Podremos encontrar algΓΊn exploit en GitHub, en mi caso utilizare el siguiente repo:

CVE-2019-12384

En este repositorio tendremos la explicaciΓ³n tambien de como explotar la vulnerabilidad

Primeramente vamos a alojarnos un servidor web por el puerto 80 con Python en nuestro Kali:

Luego vamos a crear un archivo de extensiΓ³n SQL, correspondiente a instrucciones SQL que nos va a permitir ejecutar comandos remotamente:

En esta linea en concreto podremos ver el comando a ejecutar

Vamos a cambiarla para obtener una shell con netcat:

En mi caso:

De tal manera que el codigo SQL quedaria de la siguiente manera:

Lo guardamos:

Y ahora vamos a ponernos en escucha con netcat por el puerto 443:

Y por ultimo, vamos a irnos a la pagina web y dentro del campo donde pongamos el JSON, vamos a poner lo siguiente:

Recordemos que a este oneliner tenemos que especificarle nuestra IP de la VPN de Hack The Box:

Ahora si, vamos al sitio web, cambiamos a "Validate", lo pegamos y lo procesamos:

Volvemos a donde teniamos netcat en escucha por el puerto 443:

Y ya tendremos una reverse shell

2.2 Tratamiento de la TTY

Vamos a realizar el tratamiento de la TTY para obtener una shell como dios manda :)

"script /dev/null -c bash":

CTRL + Z:

Y vamos a ejecutar el siguiente comando:

Ejecutamos:

Y ahora ejecutamos:

Ejecutamos y nos va a devolver a la reverse shell que obtuvimos:

Ahora vamos a exportar XTERM como TERM y BASH como consola, como variables de entorno:

Para verificar que el tratamiento de la TTY se realizo correctamente, pondremos "echo $SHELL" o "echo $TERM":

Ahora vamos a ajustar el tamaΓ±o de la consola, primero vamos a verificar el tamaΓ±o de nuestra consola con "stty size"

En mi caso es de 39 filas y 182 columnas

A si que vamos a especificarlo en la reverse shell con el siguiente comando:

El tratamiento de la TTY corresponde hacerlo cuando debemos hacer muchas cosas con una reverse shell y necesitamos realizar algunas tareas como utilizar un editor de texto en consola, entre otras

2.3 ObtenciΓ³n de la flag user

La flag de user se encuentra dentro de la ruta absoluta "home/pericles/user.txt", vamos a visualizar la flag:

3- Escalado de privilegios

3.1 timer_backup.service

Luego de estar haciendo reconocimiento y enumeramiento de la maquina para escalar privilegios, me di cuenta que cada 10 segundos, se esta ejecutando un script llamado "timer_backup.sh", esto no es una tarea CRON, si no que es un servicio que esta ejecutandose por detras y que se encarga de ejecutar este script

Vamos a ver el servicio que se esta ejecutando con el comando "systemctl":

El servicio se llama "timer_backup.service"

Si realizamos una bΓΊsqueda desde la raΓ­z del equipo con archivos que contengan en el nombre "timer_backup" con cualquier extensiΓ³n, veremos lo siguiente:

Vemos un archivo llamado "timer_backup.sh"

Vamos a ver los permisos que tenemos sobre este archivo que se ejecuta automΓ‘ticamente cada 10 segundos mediante el servicio "timer_backup.service"

Tenemos permisos de escritura sobre el archivo, por lo que podrΓ­amos modificarlo para escalar privilegios, por lo que podrΓ­amos decirle al archivo que le de permisos SUID a la Bash, para nosotros ejecutar una bash como root desde este mismo usuario

Vamos a abrirlo con un editor de texto y veremos que contiene lo siguiente:

Nosotros vamos a reemplazar este cΓ³digo bash por lo siguiente:

Una vez modificado:

Vamos a ver los permisos que contiene Bash:

Tenemos la Bash con permisos SUID, por lo que quedaria ejecutar una Bash en modo privilegiado

3.2 ObtenciΓ³n de la flag root

La flag de root se encuentra dentro de la ruta absoluta "/root/root.txt", vamos a visualizar la flag:

Con esto, concluimos la maquina "Time" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización