Stored XSS in Post Body
Red social donde el cuerpo de los posts se renderiza con dangerouslySetInnerHTML, permitiendo XSS persistente que afecta a todos los usuarios que ven el post.
Aprende a encontrar este bug
Un reporte real de bug bounty, reproducido para que lo practiques.
Crea tu cuenta y practica bugs reales que se pagaron. Descarga el entorno, encuéntralo y aprende la técnica exacta — tu camino a tu primer bounty.
- hunters entrenando
- 650
- labs de reportes reales
- 50
- completaciones
- 380
- en bounties practicados
- $200.000
hunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Acceso a todos los labs · sin permanencia · cancela cuando quieras
Hunters que lo han resuelto· 8
Objetivos
Logro que recibirás
Cuando resuelvas este lab desbloqueas este logro compartible
Stored XSS in Post Body
Writeups de la comunidad
Despliegue
# Opcion 1: autodeploy
./autodeploy.sh
# Opcion 2: manual
docker compose up --build
# Acceder
http://localhost:1000
Compatible con macOS, Linux y Windows (Docker Desktop / WSL).
Para parar:
./autodeploy.sh destroy
# o: docker compose down -v
Contenido del Lab
La aplicacion
Chirp con posts que soportan HTML en el cuerpo.
La vulnerabilidad
El cuerpo del post se renderiza con dangerouslySetInnerHTML sin sanitizacion. Cualquier HTML/JavaScript inyectado se ejecuta para todos los usuarios.
Cadena de ataque
1. Crear post con body: <img src=x onerror=alert('XSS')>
2. Publicar
3. Todos los que ven el post → XSS ejecutado
Solucion interactiva
Accede a /writeup dentro de la aplicacion para una guia paso a paso con botones interactivos.
Flag
(XSS persistente ejecutado)
Remediacion
- Sanitizar HTML con DOMPurify antes de renderizar
- Usar textContent o React JSX nativo
- CSP estricto