flagPrevious HackTheBox (Intermediate)

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-24 09:38 EDT
Nmap scan report for 10.10.11.83
Host is up (0.035s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_  256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://previous.htb/
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 8.06 seconds

Veremos que hay varios puertos, pero nos centraremos en el puerto 80, vemos de ante mano que nos redirige a un dominio llamado previous.htb, por lo que vamos añadirlo a nuestro archivo hosts.

Lo guardamos y entraremos por dicho dominio de esta forma:

Info:

Veremos una pagina web normal, sin nada interesante, pero si bajamos abajo del todo, veremos que hay un contacto, que si investigamos a donde redirige, veremos lo siguiente:

Vemos que ya tenemos un contacto llamado jeremy, despues de un rato buscando me funciono un pequeño NoSQLi, pero nada interesante, si utilzamos una extension llamada Wappalyzer veremos que hay una dependencia en la pagina que se esta utilizando con una version en concreto.

Vemos que hay un Next.js con la version 15.2.2, si buscamos vulnerabilidades de dicha version, veremos que si la hay en concreto con el CVE-2025-29927 (Next.js) - Authorization Bypass por lo que vemos se puede realizar un bypass del login con esta vulnerabilidad.

Investigando un poco encontramos este repositorio donde podemos obtener informacion de como aprovecharla.

URL = CVE-2025-29927 Exploit PoCarrow-up-right

Vamos a preparar nuestro entorno para que funcione.

Instalado todo, vamos a probarlo de esta forma:

Info:

Pero veremos que esta fallando y es por que no estamos encontrando la URL del parametro especifico que es vulnerable a esta inyeccion.

Si seguimos investigando un poco y probamos en vez de la URL normal, la de la /api que vemos que esta solicitando todo el rato...

Info:

Veremos que funciona, por lo que vamos a probar varios parametros de endpoint de la API a ver cual puede existir ya que estamos bypasseando el login.

urlBypass.sh

Lo ejecutaremos de esta forma:

Info:

Por lo que vemos aqui nos pide un archivo como parametro, por lo que esta funcionando, vamos a probar a realizar lo siguiente:

FFUF

Info:

Veremos que ha funcionado, hay un parametro llamado example que puede leer archivos del sistema, un LFI, vamos a verlo con un curl.

Info:

Vemos que esta funcionando de forma correcta, por lo que podemos deducir que este servicio esta corriendo con el usuario node o bajo algun usuario en alguna carpeta, por lo que vamos a salirnos desde la ruta donde estemos ejecutando ese download y hacer un ../ hasta que nos muestre informacion de algun archivo.

Escalate user jeremy

Si hacemos esto:

Info:

Vemos que esta funcionando, si buscamos un poco la estructura de archivos que puede tener este directorio para ir probando archivos veremos algo parecido a esto:

Si probamos con la mayoria de archivos algunos iran y otros no, pero si probamos con .env veremos esto:

Info:

Vemos que es un hash en MD5, pero no podremos hacer de momento con el nada mas interesante, con ayuda de la IA si le pedimos que nos diga una estructura de archivos comunes de .next veremos que nos funcionan estos archivos:

Si las probamos la mas importante que podemos ver es esta:

Info:

Info:

Sabiendo esto podremos analizar la siguiente ruta bastante interesante:

Info:

Veremos que nos esta mostrando un usuario y contraseña, por lo que vamos a probarlas por SSH a ver si funciona.

SSH

Metemos como contraseña MyNameIsJeremyAndILovePancakes...

Con esto veremos que estaremos dentro, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Veremos que podemos ejecutar el binario terraform junto con sus parametro como el usuario root, por lo que vamos analizar que hacer dicho binario.

Si investigamos un poco veremos que hay una vulnerabilidad en la que podremos crear un provider malicioso que ejecuta reverse shell, para ello tendremos que crearlo y compilarlo de esta forma:

Ahora lo compilaremos.

Vamos a configurar el dev_overrides para usar nuestro provider.

Ahora nos pondremos a la escucha desde la maquina atacante:

Si ejecutamos el comando estando a la escucha y configurandolo con la variable de entorno...

Info:

Ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que ha funcionado y seremos root, por lo que leeremos la flag de root.

root.txt

Last updated