sábado, 30 de marzo de 2019

HTB Machine Walkthrough: Curling


Autor: 1v4n a.k.a. @1r0Dm48O

{0x0} Introducción


Curling es una máquina ubicada en HackTheBox que debemos vulnerar para conseguir las flags
de usuario (user.txt) y root (root.txt) creada por L4mpje basada en Linux OS, os mostraremos los
pasos que hemos dado.





{0x1} Reconocimiento


Antes de empezar ifconfig a nuestra máquina de pentesting Kali Linux comprobando la conexión
con la VPN privada a través de openvpn --config 1v4n.ovpn asignándose la IP 10.10.13.140.


Y comenzamos, descubrimos nuestra dirección IP.




Y comprobamos que hay conexión con la máquina a vulnerar lanzado un ping:




{0x2} Escaneo


Realizamos un escaneo de puertos para comprobar los servicios que están abiertos y corriendo
en la máquina a vulnerar con nmap -A 10.10.10.150



Observamos puertos abiertos con los correspondientes servicios como el 22 (ssh) y 80 (http).
Vemos las posibles vulnerabilidades de cada puerto con nmap -sS -sV -p xx 10.10.10.150 --script vuln




Ejecutando joomscan -u http://10.10.10.150 nos revela que está hospedado un posible de gestor
de contenido Joomla v. 3.8.8 donde no se identifican vulnerabilidades CVE.


Pasamos a configurar /etc/hosts añadiendo la linea 10.10.10.150 curling.htb


{0x3} Enumeración


Lanzamos gobuster -e -u http://curling.htb/ -w /usr/share/wordlists/dirb/common.txt sobre el servicio
web en el dominio curling.htb




Detectamos que es accesible http://10.10.10.150/index.php y con la herramienta http sobre
el index.php obtenemos pista al final de código.



Obtenemos una posible clave Curling2018! para el acceso:


curl http://curling.htb/secret.txt > Q3VybGluZzIwMTgh | base64 -d | Curling2018!

Pasamos a explorar el Joomla y nos encontramos con su primer post que nos desvela un posible
usuario en la URL http://curling.htb/index.php/2-uncategorised/1-first-post-of-curling2018






Conseguimos en la captura un posible nombre de usuario que se identifica como Floris.
Pasamos a comprobar que las credenciales Floris:Curling2018! son válidas en el panel de
administración de Joomla en http://curling.htb/administrator


{0x4} Acceso


Accedemos con éxito a la administración del Joomla para subir nuestra webshell que intentaremos
alojarla en un directorio no llamativo como es /templates




Navegamos por el menú de administrador Extensions> Templates > Templates > protostar
y seleccionamos crear nuevo archivo que en este caso tendrá el código de nuestra webshell
(https://github.com/k4mpr3t/b4tm4n)




Ya podemos acceder a la webshell en la siguiente URL




Por defecto la webshell posee las credenciales k4mpr3t:k4mpr3t que pasaremos a modificar
en el menú Account. Pasamos a explorar directorios aunque no podemos acceder a user.txt ya
que pertenecemos todavía al grupo de floris.



Nos encontramos con password_backup en el directorio /home/floris/ con el Hexdump de una
posible clave para poder avanzar. Procedemos a descargarlo en nuestro Kali y hacemos reversing
obteniendo 5d<wdCbdZu)|hChXll






Conectamos por ssh con el usuario floris y la password 5d<wdCbdZu)|hChXll




Y conseguimos tener acceso a user.txt > 65dd1df0713b40d88ead98cf11b8530b




{0x5} – Escalada de Privilegios (privesc)


Accedemos al directorio /tmp donde utilizaremos un scanner de vulnerabilidades de Linux
(https://github.com/mzet-/linux-exploit-suggester) que nos facilitará nuestro privesc.




Investigamos sobre la vulnerabilidad CVE-2019-7304  y el exploit correspodiente en el repositorio
https://github.com/initstring/dirty_sock . Pasamos a ejecutar el exploit en el directorio /tmp






Abrimos una nueva sesión de ssh con las credenciales dirty_sock:dirty_sock y hacemos
sudo su




Y ahí está root.txt > 82c198ab6fc5365fdc6da2ee5c26064a


Otro método de privesc:


Intentamos ver los cambios a través de diff en los procesos usando el comando
ps -ef > start.txt y ps -ef > end.txt




Observamos en los procesos lo que hace CRON y encontramos los comandos de la ejecución continua de la tarea programada


Pasamos a ver que contiene el archivo input que es invocado por curl -k . Observamos que archivo
input poseé una entrada url = "127.0.0.1" y es guardando continuamente en report la salida
de bash curl -k /home/floris/admin-area/input


Editamos input para que nuestro sistema a través de la tarea programada sea capaz de leer el
contenido de /root/root.txt de la siguiente forma url = "file:///root/root.txt"




Y de nuevo ahí está root.txt > 82c198ab6fc5365fdc6da2ee5c26064a






Twitter: https://twitter.com/1r0Dm48O

No hay comentarios:

Publicar un comentario