Nuevos labs cada semana — Accede a todos desde 7,99€/mes
Ver labs →Labs de CSRF
Cross-Site Request Forgery (CSRF)
¿Qué es CSRF?
El CSRF fuerza a un usuario autenticado a ejecutar acciones no deseadas en una aplicación web en la que está autenticado. Puede cambiar contraseñas, transferir fondos o modificar configuraciones sin el consentimiento del usuario.
¿Por qué practicar CSRF?
Aunque muchos frameworks modernos incluyen protección CSRF, las implementaciones incorrectas son comunes. Los bugs CSRF en operaciones críticas (cambio de email, transferencias, permisos) suelen pagar bounties altos por su impacto directo y porque permiten chains de account takeover.
¿Qué aprenderás con los labs de CSRF?
Aprenderás a detectar la ausencia o reuso de tokens, técnicas de bypass de SameSite=Lax (subdominios, top-level navigation), CSRF en endpoints JSON con Content-Type permisivo, fijación de método HTTP y cómo encadenar CSRF con XSS para roo total.
Tipos de CSRF que cubrimos
- Token missing/reusable
El endpoint sensible no exige token, o acepta cualquier token válido del mismo usuario. El más fácil de explotar.
- SameSite bypass
Lax permite GET top-level. Si el endpoint sensible acepta GET (cambio de email vía link), bypass directo.
- JSON CSRF
Endpoints que aceptan `Content-Type: text/plain` pueden recibir un POST cross-origin con JSON en el body.
- Method override
Apps que permiten `_method=PUT` en POST formularios pueden ser CSRF'eadas para acciones idempotentes.
¿Cómo encontrar y explotar CSRF?
Playbook práctico — del recon a la prueba de concepto.
- 1
Localizar una acción sensible
Cambio de email, de contraseña, transferencia o cambio de rol. Captura la petición y mira si lleva token anti-CSRF.
POST /account/email body: email=victima@target.com - 2
Probar a quitar/reusar el token
Elimina el parámetro CSRF o reusa el de otra sesión. Si el servidor sigue aceptando la petición, es vulnerable.
POST /account/email (sin csrf_token) → 200 OK = vulnerable - 3
Montar el PoC auto-submit
Una página HTML que envía el form al cargarse. Cuando la víctima la visita autenticada, ejecuta la acción.
<form action="https://target/account/email" method=POST><input name=email value=atk@evil.com></form><script>document.forms[0].submit()</script> - 4
Bypassear SameSite=Lax
Lax aún permite navegación top-level con GET. Si la acción acepta GET, un simple enlace/redirect dispara el CSRF.
<img src="https://target/account/email?email=atk@evil.com"> (si acepta GET) - 5
CSRF en endpoints JSON
Si el endpoint acepta text/plain, manda el JSON cross-origin con un form normal o fetch sin preflight.
fetch('https://target/api/email',{method:'POST',credentials:'include',headers:{'Content-Type':'text/plain'},body:'{"email":"atk@evil.com"}'})
Aprende la teoría
Academy: Authentication & Sessions
Cargando labs...
Ver en catálogo completo →Preguntas frecuentes
¿Qué es un CSRF?
Cross-Site Request Forgery es un ataque que engaña al navegador de una víctima autenticada para que ejecute una petición no deseada (cambiar email, contraseña, transferir dinero) aprovechando que las cookies de sesión se envían automáticamente.
¿Cómo se explota un CSRF?
Se crea una web maliciosa con un formulario o petición que apunta a la acción sensible del objetivo. Cuando la víctima, con su sesión activa, visita la página, el navegador envía la petición con sus cookies y la acción se ejecuta en su nombre.
¿Cómo encontrar CSRF en bug bounty?
Captura las acciones que cambian estado y comprueba si llevan token anti-CSRF, si ese token se valida y si se puede quitar o reusar. Revisa también si la acción acepta GET o Content-Type permisivos (text/plain) que faciliten el cross-origin.
¿Cómo prevenir el CSRF?
Usa tokens anti-CSRF por sesión y por petición, marca las cookies como SameSite=Strict o Lax, verifica los headers Origin/Referer en acciones sensibles y exige re-autenticación para operaciones críticas.
¿Diferencia entre CSRF y XSS?
El XSS ejecuta código del atacante en el navegador de la víctima (puede leer datos y la respuesta). El CSRF no ejecuta código ni lee respuestas: solo fuerza a la víctima a enviar una petición a ciegas. Un XSS rompe cualquier defensa CSRF porque corre dentro del propio origen.
Otras categorías relacionadas
Empieza con labs de CSRF
Practica Cross-Site Request Forgery (CSRF) con labs basados en reportes reales. En español. Desde 7,99€/mes.
Empieza con el primer lab de CSRF