H1RD SECURITY

Ataque por Cross Site Request Forgery (CSRF)

El ataque por CSRF o XSRF, consiste en forzar al usuario a ejecutar peticiones no deseadas en una web, en la que estan autentificados, si que este se de cuenta. En este tipo de ataque es necesaria la utilización de ingenieria social para engañar a la victima y que ejecute la petición falsa, sea mediante un email, o un link de una red social.

Según la Open Web Application Security Project (Owasp), el Cross Site Request Forgery forma parte de su top diez.

Como funciona este ataque

Lo principal para ejecutar este ataque, es que el usuario este autentificado en la pagina web a la que se va a atacar, y mediante ingenieria social la pagina web maliciosa simplemente reprodouce un request valido y correcto para la pagina web atacada.

Estamos aburridos en el trabajo y nos ponemos a mirar nuestro banco de total confianza Banco Vulnerable, hemos visto que nos han descontado más dinero de lo normal en un credito, luego llamaremos, como seguimos aburridos, vamos a ver nuestro facebook, y alli vemos un post de ¿Que eras en tu vida anterior?, Adivinalo y lo pinchamos. La proxima vez que vayamos a ver nuestro gran banco, El Banco vulnerable, nos faltaran 1000€ y eso??…

Por ejemplo:

HTML para web que explota el CSRF
1
2
3
4
5
6
<form action="http://bancoVulnerable.com" method="post" target="csrfFrame">
    <input type="hidden" name="AccountDest" value="00000-303232"/>
    <input type="hidden" name="Money" value="1000"/>
    <input type="submit" value="win" onclick="alert('En tu vida anterior fuistes un caballero de la mesa redonda')"/>
</form>
<iframe name="csrfFrame" style="visibility: hidden"></iframe>

Que paso?

en la linea 1, vemos que es un formulario que hara un post a bancovulnerable con los campos que necesita, es un request totalmente valido y nosotros ya estabamos autentificados, ademas en la linea 6, el resultado del formulario sea correcto o no, se nos oculta.

¿Como protegerse?

Los ataques CSRF funcionan porque son predecibles, simplemente es reconstruir un request, para evitar esto, se añade un factor aleatorio mediante un CSRF token, que consiste en un string aleatorio entre la pagina legitima y el navegador via cookie. Con esto, el ataque anterior no hubiese funcionado ya que no hubiera tenido el token correcto.

Video de un ataque CSRF

Este video es la prueba de concepto que realizo el ponente Eduardo Sánchez en la Hack & Beers de Madrid