Page cover

🟠Environment

En esta ocasión vamos a hacer el writeup de la máquina Environment de Hack the Box, una máquina Linux de dificultad medium.

Información General

  • Nombre de la máquina: Environment

  • IP: 10.10.11.67

  • Sistema operativo: Linux

  • Dificultad: 🟡 Media

  • Fecha: 17/06/2025


Primer acceso

Añadimos la IP 10.10.11.67 a nuestro /etc/hosts y accedemos través del navegador.

Parece una web relacionada con el medio ambiente. La única funcionalidad que encontramos es la de añadir un email a la lista de espera, que da un fallo al poner un email inválido. Lo testamos pero no encontramos nada relevante.

Escaneo de puertos

Solo encontramos 2 puertos abiertos, el 22 y el 80, los típicos.

Fuzzing

Encontramos algunos directorios interesantes:

  • login - página de login

  • upload - página de subida de archivos

  • storage - posible directorio de almacenamiento de archivos subidos

Login

Al acceder a /login accedemos a un panel de login, que al poner unas credenciales incorrectas nos da el mensaje "Invalid credentials". Probamos un bruteforce del login con hydra sin éxito

Al capturar un request del login con BurpSuite encontramos que se pasa un XSRF-TOKEN y un laravel_session:

Vemos que se envía de la siguiente manera:

Upload

Al acceder a /upload nos encontramos un Method Not Allowed y algo aún más interesante, la versión de PHP 8.2.28 y Laravel 11.30.0 con lo que podríamos buscar exploits públicos.

Enumeración de cabeceras

  1. Tecnologías identificadas:

    • Nginx 1.22.1 (Servidor web).

    • Laravel (Framework PHP, versión 11.30.0).

    • PHP 8.2.28 (Versión expuesta en el endpoint /upload).

  2. Cookies de sesión:

    • XSRF-TOKEN: Token CSRF (usado para protección contra ataques Cross-Site Request Forgery).

    • laravel_session: Cookie de sesión autogestionada por Laravel (encriptada).

  3. Cabeceras de seguridad:

    • X-Frame-Options: SAMEORIGIN: Protección contra clickjacking.

    • X-Content-Type-Options: nosniff: Evita MIME-sniffing.

Env Bypass

Analizando web.php en /upload encontramos que en la lógica, no hay ninguna situación else escrita:

Así que intenta asignarle un valor aleatorio.

Y como vemos en la imagen anterior, significa que en Laravel , si el entorno actual es "preprod"(entorno de pre-producción), iniciará sesión automáticamente como user_id = 1 y saltará a la página de administración en segundo plano.

Buscaremos una manera de explotarlo:

Simplemente le pasamos los parámetros para hacer el bypass de env:

Enviamos el request con BurpSuite y accedemos al panel de administración:

Encontramos varios usuarios, pero la funcionalidad más interesante es que podemos subir una imagen de perfil, por lo que podríamos probar a subir una reverse shell:

Generamos reverse shell

Al intentar subirla vemos que nos da un error, ya que no permite el tipo de archivo php:

Bypass de subida de archivos php

Modificamos con BurpSuite la extensión del archivo a phtml, cambiamos el Content-Type a image/jpg y añadimos el MYME Type GIF89a, y nos deja subir la shell!

Eso nos guarda la shel en la ruta:

Sin embargo, al acceder a la URL, solo se descarga el archivo. Aquí, debemos añadir un punto al final para evitarlo.

Además descubrimos que no hace falta cambiar la extensión a phtml, sino que con añadir el . al final de php también hace el bypass.

Houston, tenemos una shell!

User Flag

Escalada de privilegios

En contramos un directorio backup muy interesante con un archivo keyvault.gpg:

Extraer keyvault.gpg

Dado que el usuario actual www-data no puede crear archivos en el directorio /var/www:

Le especificamos el directorio /tmp:

Y leemos el message.txt en /tmp:

Tenemos una contraseña en texto plano para el entorno de environment.htb! Cambiamos al usuario hish y ganamos una shell como este usuario:

Permisos de ejecución

Se puede ver que las dos variables de entorno env_keep y ENVBASH_ENV se conservan y se pueden utilizar para escalar privilegios.

Root flag

Búsqueda de exploits

Buscando exploits de Laravel encontramos que es vulnerable al CVE-2024-21546, que permite a un atacante no autenticado subir una reverse shell y ganar RCE en el objetivo:

Este script tiene como objetivo un Laravel File Manager vulnerable creado por UniSharp, que permite a usuarios no autenticados eludir restricciones de archivos y subir archivos maliciosos. Esto puede llevar a la ejecución remota de código (RCE) cuando se activa el payload subido.

El exploit realiza lo siguiente:

  • Valida la laravel_session proporcionada por el usuario

  • Extrae el CSRF token mediante expresiones regulares

  • Sube un archivo PNG fake que contiene un payload de reverse shell en PHP

  • Activa el payload subido

Explotación

Abrimos un listener de Netcat:

Ejecutamos el exploit de la siguiente manera:

Conexión a base de datos

User flag

Escalada de privilegios

Última actualización

¿Te fue útil?