Time [MEDIUMπ΅]
Dificultad: Medio
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Linux, debido al TTL:
1.2 Nmap
1.2 NmapPodemos 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
1.3 whatwebSe pueden ver tecnologΓas webs como:

1.4 Fuzzing
1.4 Fuzzing2- ExplotaciΓ³n
2.1 SSRF - Server-Side Request Forgery
2.1 SSRF - Server-Side Request ForgeryDentro 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:
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
2.2 Tratamiento de la TTYVamos 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
2.3 ObtenciΓ³n de la flag userLa 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
3.1 timer_backup.serviceLuego 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
3.2 ObtenciΓ³n de la flag rootLa 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
