WhiteRabbit HackTheBox (Insane)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-29 04:35 EDT
Nmap scan report for 10.10.11.63
Host is up (0.030s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 0f:b0:5e:9f:85:81:c6:ce:fa:f4:97:c2:99:c5:db:b3 (ECDSA)
|_ 256 a9:19:c3:55:fe:6a:9a:1b:83:8f:9d:21:0a:08:95:47 (ED25519)
80/tcp open http Caddy httpd
|_http-title: Did not follow redirect to http://whiterabbit.htb
|_http-server-header: Caddy
2222/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 c8:28:4c:7a:6f:25:7b:58:76:65:d8:2e:d1:eb:4a:26 (ECDSA)
|_ 256 ad:42:c0:28:77:dd:06:bd:19:62:d8:17:30:11:3c:87 (ED25519)
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 7.99 secondsVeremos que hay varios puertos, pero entre ellos el 80 que contiene una pagina web en la cual nos esta redirigiendo a un dominio llamado whiterabbit.htb el cual vamos añadir a nuestro archivo hosts.
Lo guardamos y si entramos de esta forma con dicho dominio:
Info:

Veremos que es una pagina de una empresa que se dedica a ofrecer servicios de pentesting, por lo que vamos a investigar un poco la web.
FFUF
Si realizamos un poco de fuzzing a nivel de subdominios veremos lo siguiente:
Info:
Veremos que nos encontro un subdominio llamado status, por lo que vamos añadirlo a nuestro archivo hosts.
Lo guardamos y entramos en dicho subdominio a ver que vemos:
Info:

Vemos un login de un software en concreto llamado Uptime Kuma, si buscamos alguna vulnerabilidad de dicho software o alguna version del mismo, veremos algunas pero no sabemos que version tiene, por lo que vamos a realizar un poco de fuzzing a nivel web.
Buscando mucho, si buscamos la estructura de la pagina web o le preguntamos a la IA nos saca varios directorios en los que mirar, entre ellos descubrimos un login de http-get llamado /metrics y otro directorio web llamado /status, si tiramos un gobuster a /status...
Gobuster
Info:
Veremos varias cosas interesantes, entre ellas si entramos a /temp veremos lo siguiente:
Info:

Vemos como una especie de panel de status a nivel web, pero si inspeccionamos el codigo veremos lo siguiente:
Vemos una ruta /api la cual es interesante, si vamos a dicha api pero sin entrar en el .json veremos lo siguiente:
Info:
Veremos la informacion de la API que en este caso expone 2 subdominios que son los siguientes:
Si los añadimos en nuestro archivo hosts.
Lo guardamos y si entramos al primero...
Info:

Veremos el software de Gophish que se utiliza para realizar campañas de Pishing, pero si entramos en el segundo:
Info:

Veremos otro software que se utiliza por asi decirlo como apuntes o foro a nivel de aprendizaje, si nos vamos a la seccion de GoPhish Webhooks veremos una explicacion del software gophish y si bajamos un poco veremos esto:

Vemos que nos podemos descargar un archivo que muestra lo siguiente:
Veremos una clave secreta "secret": "3CWVGMndgMvdVAzOjqBiTicmv7gxc6IS", pero si nos vamos a la captura anterior donde pone una peticion capturada por BurpSuite veremos que tiene acompañado un host que es el siguiente:
Vamos añadirlo a nuestro archivo hosts para ver que contiene:
Lo guardamos y entramos a dicho subdominio a ver que vemos:
Info:

Veremos que nada mas entrar nos esta pidiendo que actualicemos el software de n8n, por lo que nos esta dando una pista de que no esta actualizado.
SQLi
Pero no sera nada interesante, si volvemos a la pagina de Wiki.js en la seccion de http://a668910b5514e.whiterabbit.htb/en/gophish_webhooks leyendo un poco vemos que comprueba el usuario mediante la validacion de un correo electronico respecto a la pagina de GoPhish, por lo que puede que haya un SQLi.
Vamos a crear una firma rapida con nuestra peticion personalizada de esta forma con CyberChef:

Obtendremos algo asi:
Sabiendo que funciona eso, vamos hacer lo siguiente.
Nos vamos a crear un script que actue como proxy para sqlmap y asi que se generen las firmas de forma automatica por el script de proxy y que sqlmap las utilice para realizar un escaneo de vulnerabilidades a dicha pagina para obtener informacion, asi hacemos todo esto proceso mas eficiente en vez de que sqlmap las genere de forma automatica ya que seria mas lento el proceso.
proxy.py
Lo ejecutamos de esta forma:
Info:
Ahora en otra terminal ejecutamos este comando de sqlmap para que coja las firmas del servidor de proxy que tenemos a la escucha:
Info:
Esperando un rato veremos que ha funcionado y obtendremos el payload que ha funcionado para la inyeccion con estas vulnerabilidades:
Ahora vamos a enumerar las DDBBs que haya:
Info:
Vemos que nos saca algunas interesantes, por lo que vamos a explorar la de phishing y la de temp a ver que vemos.
Escalate user bob
DDBB phishing
Info:
Obtenemos la tabla victims, vamos a ver que informacion tiene:
Info:
Veremos varios correos de victimas, pero nada interesante por aqui.
DDBB temp
Info:
Veremos que tiene la tabla command_log, vamos a ver que informacion contiene.
Info:
Aqui ya vemos cosas mas interesantes, en concreto esta informacion es muy interesante:
Veremos que esta utilizando una herramienta llamada restic que se puede utilizar tambien para obtener backups a nivel de sistema de archivos creando un endpoint en tu maquina atacante para que realice la conexion y obtener dicho backup, pero tambien estamos viendo la contraseña del repo creado en restic, pero sobre todo un subdominio el cual vamos añadir a nuestro hosts.
Ahora si lo guardamos y entramos en dicho subdominio...
Info:
Tambien estamos viendo que tenemos a un usuario llamado neo, por lo que teniendo toda esta informacion podremos probar a realizar lo siguiente, sabiendo que tenemos unas credenciales hacia dicho servidor de restic podremos listar los backups que tiene dentro.
Info:
Veremos que ha funcionado, tiene un backup del ssh del usuario bob, por lo que se ve de forma aparente, vamos a descargarnoslo de esta forma:
Info:
Ahora si nos vamos a la ruta de ssh veremos lo siguiente:
Info:
Vemos que tenemos un comprimido, si lo descomprimimos de esta forma:
Info:
Veremos que nos pide una password, vamos a probar a crackear la contraseña del comprimido.
Info:
Veremos que ha funcionado, ahora vamos a probar dicha contraseña con el comprimido.
Metemos como contraseña 1q2w3e4r5t6y...
Veremos que ahora si lo descomprimio de forma correcta, vemos 3 archivos, que son los siguientes:
bob
bob.pub
config
Vemos varias cosas interesantes, vamos a probar esa clave PEM en el puerto 2222 del SSH con el usuario bob a ver si funciona.
SSH Docker (bob)
Info:
Con esto veremos que estaremos dentro, pero si vemos el hostname:
Vemos que estamos en un docker no estamos en la maquina real, por lo que vamos a investigar como escalar a la maquina real.
Escalate user morpheus (Maquina real)
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario restic como el usuario root, por lo que vamos a probar a lanzar un servidor de restic en nuestra maquina atacante y pasarnos el directorio de root entero a nuestra maquina del repo creado del atacante.
Maquina atacante
Vamos a establecer un endpoint como servidor en nuestra maquina con restic.
Info:
Echo esto vamos a crear nuestro repositorio de esta forma:
Info:
Establecemos una contraseña para el repositorio llamado test y echo eso estaria creado ya, ahora desde la maquina victima haremos esto.
Maquina victima
Metemos como contraseña la que establecimos en el repositorio test...
Veremos que se volco en nuestro repo atacante de forma correcta, ahora en la maquina atacante haremos esto:
Maquina atacante
Comprobamos que se haya pasado bien:
Info:
Ahora vamos a exportarlo a la carpeta /tmp de esta forma:
Info:
Con esto veremos que ha funcionado y si nos movemos a dicha carpeta veremos lo siguiente:
Info:
Vemos algo super interesante y es lo que parece la clave privada PEM del usuario morpheus por lo que parece, vamos a probarla haciendo esto:
Info:
Ahora si estaremos en la maquina real, por lo que leeremos la flag del usuario.
user.txt
Escalate user neo
Si nos vamos a la carpeta /opt veremos el siguiente directorio y archivo.
Vemos que esto genera una contraseña de forma aleatoria cada x tiempo al usuario neo por lo que parece, si nos llevamos el binario a nuestra maquina atacante abriendo un servidor de python3.
Ahora en la maquina atacante haremos esto:
Echo esto, si abrimos la herramienta ghidra e importamos el binario descargado, para que nos lo decompile y poderlo ver mejor por dentro en C# veremos estas 2 funciones:
main.c
generate_password.c
Veremos que hay una vulnerabilidad en la cual podriamos mediante el timestamp obtener la contraseña exacta que se genero en ese momento, si recordamos obtuvimos informacion de cuando se ejecuto el comando de generar la contraseña en el SQLi teniendo este timestamp:
Con esto podremos crearnos un script en python3 el cual nos va a generar 1000 contraseñas las cuales pueden ser.
generate.py
Ahora lo ejecutaremos de esta forma:
Info:
Echo esto nos dejara un archivo llamado neo_passwords.txt el cual vamos a utilizar para lanzar fuerza bruta por SSH con hydra con el usuario neo.
Info:
Veremos que ha funcionado, por lo que vamos a conectarnos por SSH de esta forma:
SSH (neo)
Metemos como contraseña WBSxhWgfnMiclrV4dqfj...
Y con esto veremos que estaremos dentro.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar como el usuario root, cualquier cosa por lo que haremos lo siguiente:
Info:
Con esto ya seremos root, por lo que leeremos la flag de root.
root.txt
Last updated