En este writeup vamos a ver cómo resolver la máquina Nibbles de la plataforma de Hack the Box.
Conexión
Conectar nuestra máquina de ataque a la VPN:
$ openvpn gorkamu-htb.ovpn
Enumeración
Si ponemos la IP en el navegador web veremos únicamente lo siguiente:
Vamos a hacer un escaneo de puertos a ver que aparece…
Puerto 22 (ssh) y 80 (http) abiertos.
En el código fuente de la web se puede ver esto:
Y efectivamente si nos dirigimos a http://10.10.10.75/nibbleblog nos encontramos con el blog.
Si pasamos gobuster al blog podemos ver lo siguiente:
$ gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u 10.10.10.75/nibbleblog
En el fichero README podemos encontrar la versión del CMS (Nibbleblog 4.03) y buscando en Google encontramos que existe una vulnerabilidad que permite subir una shell en esa versión.
Si hacemos un análisis con dirbuster al directorio /nibbleblog sin hacer bruteforce attack de los ficheros (sin especificar extensión) podremos ver la siguiente estructura:
Ahí bajo el directorio /nibbleblog/content/private encontramos el fichero users.xml
En este archivo vemos que existe un usuario “admin” y una blacklist con IPs.
Vamos a generarnos un diccionario con al herramienta cewl (se le pasa una url y saca las palabras más relevantes para generarlo)
$ cewl --lowercase http://10.10.10.75/nibbleblog -w pw_dict.txt
Con hydra y este diccionario personalizado intentamos hacer bruteforce:
$ hydra -l admin -P pw_dict.txt 10.10.10.75 http-post-form "/nibbleblog/admin.php:username=^USER^&password=^PASS^:Incorrect username or password."
Esto nos da cuatro posibles contraseñas:
En el navegador nos vamos a http://10.10.10.75/nibbleblog/admin.php y nos logueamos con las siguientes credenciales:
- user: admin
- password: nibbles
Nos vamos a la sección de plugins y seleccionamos el plugin de My Image:
Subimos php-reverse-shell.php e ignoramos los warnings.
Abrimos una nueva terminal con netcat a la escucha y nos dirigimos a la url
http://10.10.10.75/nibbleblog/content/private/plugins/my_image y ahí pinchamos en el fichero image.php.
Automáticamente tendremos conexión inversa con el servidor:
Capturar la User Flag
Nos dirigimos al directorio /home/nibble y ahí tendremos el fichero user.txt con la USER Flag.
Capturar la Root Flag
Si ejecutamos el comando sudo -l vemos que el usuario nibbler puede ejecutar un bash como sudo sin tener que autenticarse:
Si nos dirigimos a esa ruta veremos que no existe por lo que tendremos que crearla junto con el fichero:
$ cd /home/nibbler
$ mkdir -p personal/stuff && echo "/bin/bash" > monitor.sh
$ chmod +x monitor.sh
$ sudo ./monitor.sh
Con esto ya seremos root. Si nos dirigimos a /root/root.txt podremos ver la ROOT Flag