Plataforma de hosting cloud con feature de impersonacion de cuentas (Access Manager). Un Stored XSS en el nombre de las plantillas de email se activa al duplicarlas ("Copy of: PAYLOAD"). El XSS ejecuta en la sesion real de la victima (no impersonada), bypaseando las restricciones de permisos para modificar DNS records y lograr domain takeover.
Entorno seguro y aislado
Crea una cuenta y suscríbete para acceder a todos los labs. Practica en un entorno real y seguro.
Cuando resuelvas este lab desbloqueas este logro compartible
NexusHost es una plataforma de hosting cloud donde los usuarios gestionan servidores, dominios con DNS, y plantillas de email. La app incluye:
La pagina de plantillas renderiza los nombres con dangerouslySetInnerHTML (para soportar "nombres ricos"). Al duplicar una plantilla, el nombre se genera como Copy of: ${original.name} sin sanitizar.
Si el nombre original contiene HTML/JavaScript, al duplicar se crea una plantilla con XSS persistente que se ejecuta cada vez que alguien ve la lista de plantillas.
Los usuarios que impersonan una cuenta tienen permisos limitados:
El XSS se ejecuta en el contexto del navegador de la victima (sarah_wilson), que revisa sus plantillas cada 15 segundos. Como la victima NO esta impersonando (es su propia sesion), el XSS puede hacer fetch PUT /api/domains/:id/dns con exito, cambiando el destino DNS del dominio.
Cada 10 segundos, el servidor verifica los dominios enviando un POST con la flag al dns_target configurado. Cuando el atacante cambia el DNS a su propio servidor, recibe la flag.
1. Registrarse como atacante
2. Access Manager → Solicitar acceso a sarah_wilson → Auto-aceptado
3. Impersonar sarah_wilson
4. Intentar cambiar DNS directamente → 403 (bloqueado)
5. Crear plantilla con XSS en el nombre
6. Duplicar plantilla → "Copy of: <img src=x onerror=fetch(...)>"
7. Dejar de impersonar → Bot renderiza plantillas cada 15s
8. XSS ejecuta en sesion de sarah → cambia DNS a host.docker.internal:9999
9. Montar servidor HTTP en puerto 9999
10. DNS health check (10s) → POST /health-check con flag
SCREEEETTTTT
# Opcion 1: Python
python3 -m http.server 9999
# Opcion 2: Netcat
nc -lp 9999
# Recibiras un POST a /health-check con body:
Accede a /writeup dentro de la aplicacion para una guia paso a paso con botones que ejecutan cada peticion automaticamente.
Suscríbete para descargar