domingo, 26 de agosto de 2018

What does the Fox say?

El título es un poco clickbait, ya que no es nada relativo a Firefox ni nada por el estilo, aunque sí que se basa en el navegador, ya que es ataque vía web, pues voy a hablar de algo que no he hablado mucho aún por el blog, que es el tema de CSRF, un ataque que a día de hoy sigue siendo muy efectivo.



Un ataque CSRF [Cross SIte Request Forgery] se basa en manipular una consulta aprovechando la ingeniería social para obtener una respuesta del servidor. Para este ataque tedremos siempre en cuenta que el usuario ya ha hecho login en el sitio web que vamos a atacar o auditar.

Por ejemplo, supongamos que estamos en un sitio web de un banco donde se realizan transferencias bancarias todos los días y que tenemos la siguiente URL:

https://mibanco.com/transacciones?beneficiario=Lucia&transferencia=1000

Como os imagináis, esto ocurre por utilizar el método GET, ya que el usuario, pongamos Jorge, rellena un formulario donde introduce el nombre del beneficiario y la cantidad a transferir, y esos datos en el <form action...> se envían bajo el método GET, por lo que acaban en la barra de búsqueda.

Como he dicho, suponemos que Jorge ya ha hecho login en el banco, y encima sabemos que las URLs al realizar una transferencia es siempre igual cambiando únicamente los datos, por lo que lo tenemos hecho. Cambiamos el beneficiario de Lucia a, por ejemplo, Manu; de tal forma que la URL nos quede de la siguiente forma.


https://mibanco.com/transacciones?beneficiario=Manu&transferencia=1000


Este enlace tan sólo tendremos que "camuflarlo" de una forma inteligente para que al usuario que se lo enviemos, por ejemplo Jorge, abra ese enlace creyendo que es otra cosa y que me haga la transferencia bancaria. Las formas de camuflarlo podrían ser estas 2 principalmente:
  • a href="https://mibanco.com/transacciones?beneficiario=Manu&transferencia=1000"
  • <img src="https://mibanco.com/transacciones?beneficiario=Manu&transferencia=1000" width="0" height="0" border="0">
La segunda opción es una de mis favoritas, ya que ese alto, ancho y borde de 0 hace que no vea la imagen pero aún así se ejecute el enlace. Jorge está logueado, por lo que el enlace se ejecuta desde dentro de su cuenta y la transferencia se realiza.
Como os imagináis, este ataque es mucho más efectivo con stios webs que utilicen en este tipo de acciones el método GET, pero el método POST no es infalible, también existe formas de atacarlo mediante CSRF. Una forma sería montar el siguiente código HTML

<html>
<body onload=document.TEST.submit()>
<form action='http://[objetivo]/Authenticate.jsp method="POST" name="TEST">
<input type="hidden" name="name" value="fucked">
<input type="hidden" name="password" value="fucked">
</form>
</body>
</html>

El segundo paso sería pasar este html a nuestro servidor malicioso y finalmente ese enlace a la víctima.

La pregunta ahora parece obvia, y es cómo nos podemos proteger ante ataques de este tipo. Muchas veces la solución es tan simple como generar un CSRF Token donde el value esté encodeado con un hash difícil de hacerle revering. Hay un ejemplo muy bueno en este artículo de OWASP donde se explica bien cómo prevenir este tipo de ataques.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...