cubeEnvironment



Enumeración:


Entramos a ver la web:

  • A simple vista no podemos ver mucho.


Enumeración de rutas, archivos ocultos y recursos accesibles mediante herramientas de fuerza bruta como feroxbuster y dirsearch, con el objetivo de identificar superficies de ataque en aplicaciones web.

  • Se encontró un login:

Manipulación del entorno a través de parámetros GET en Laravel

  • Lo pasamos al Burp Suite:

  • Cambiamos el parametro remembe=true por false o puede ser cualquier valor

chevron-right¿Porqué pasa esto?hashtag

🎯 ¿Qué significa esto para ti (pentester o dev)?

  1. Solo funcionan los valores literales 'True' o 'False'

    • True (con T mayúscula)

    • False (con F mayúscula)

    • No sirven: true, false, 1, 0, yes, etc.

  2. ⚠️ Si envías cualquier otro valor (o no envías nada), $keep_loggedin no se define, y eso puede:

    • Romper la ejecución (error como el que ya viste: Undefined array key "remember")

    • Generar una lógica impredecible más adelante

    • Exponerte a un error o vulnerabilidad de flujo (lógica rota)

  3. 🧠 Como atacante, puedes usar eso para:

    • Provocar errores

    • Observar cómo el servidor reacciona a condiciones inesperadas

    • Inferir comportamientos internos por omisión de lógica de control


✅ Buenas prácticas (para desarrolladores):

Esto se solucionaría así:

// No hay un "else" para cualquier otro valor

Este código significa que en Laravel , si el entorno actual es "preprod"(entorno de preproducción), iniciará sesión automáticamente como user_id = 1usuario y saltará a la página de administración en segundo plano.


  • Buscamos un payload:

chevron-right📌 ¿Qué pasa si usas ?--env=preprod?hashtag

Laravel, al ser ejecutado con artisan o incluso con algunas malas configuraciones, podría interpretar ese parámetro como si fuera una opción CLI debido a cómo internamente usa Symfony Console y componentes relacionados.

Esto puede causar:

  • Que Laravel piense que está en modo preprod

  • Activar condiciones como esta:

Se puede acceder al usuario user_id=1:


Carga de archivos

Nuestro código:

chevron-right🔧 Cómo funciona:hashtag
  1. Nombre: shell.gif.php. (ese punto final evade validaciones que esperan .php como última extensión).

  2. Cabecera: Se añade GIF87a al inicio → Es la cabecera mágica de imágenes .gif, para engañar la detección MIME.

  3. Código PHP incluido después de la cabecera → se ejecuta normalmente si el servidor interpreta .php. como PH


Lo cargamos:

Subido con Exitó:

Para verificar entramos por la web a ver el archivo subido:

Enviar el comando de reverse shell desde el formulario

Listo:

Desencriptar archivos .gpg

Exploración de archivos sensibles en el home del usuario hish

Estando como www-data (shell web):

➡️ Encuentra un archivo keyvault.gpg, probablemente encriptado con GPG.


Copiar el directorio .gnupg del usuario hish

Ya que no tiene permisos para usar .gnupg directamente, lo copia a /tmp:

🔐 Este directorio contiene claves privadas necesarias para desencriptar archivos .gpg.

Verificar que existen claves privadas:

Desencriptar keyvault.gpg usando las claves copiadas

Esto genera un archivo message.txt con contraseñas almacenadas en texto plano.

La contraseña de hish para el sistema es marineSPm@ster!!

Privilege Escalation via BASH_ENV and env_keep in sudo

Y si tienes el permiso especial con BASH_ENV, usas el bypass para root:

¡Boom! Ahora eres root y puedes:


Last updated