Identificar y Explotar Cross Site Request Forgery (CSRF) utilizando ZAP

  • Posted on: 5 August 2015
  • By: ReYDeS

Un ataque CSRF fuerza al usuario final a ejecutar acciones indeseables sobre una aplicación web en la cual está actualmente autenticado. Con un poco de ayuda de ingeniería social (como enviar un enlace mediante un correo electrónico o chat), un atacante puede forzar a los usuarios de una aplicación web a ejecutar acciones seleccionadas por el atacante. Una explotación satisfactoria de CSRF puede comprometer los datos y operaciones del usuario final, cuando tiene como objetivo un usuario normal. Si el usuario final objetivo es la cuenta de administrador, un ataque CSRF puede comprometer la aplicación web completa.

Para la siguiente demostración se utiliza la versión de la aplicación web de nombre “yazd” incluida en la máquina virtual OBWAP

Configurar Zed Attack Proxy en Firefox utilizando FoxyProxy, e ingresar en el formulario de registro de ingreso “Login” de la aplicación web, un usuario y contraseña válidos.

Ingresar a “User Account -> Manage your account”, para definir una nueva contraseña en los campos de nombre “Password” y “Confirm”.

En Zed Attack Proxy se analiza la petición realizada hacia la aplicación web. El método utilizado para enviar los datos es POST, y se expone en detalle todos los campos enviados en el formulario, incluyendo la nueva contraseña.

Hacer clic derecho sobre la petición y seleccionar la opción “Generate anti CSRF test FORM” en la nueva ventana desplegada.

Esta opción abrirá una URL la cual proporcionará un formulario generado para evaluar problemas de CSRF. Este solo estará habilitado para peticiones POST, si el API está habilitado y si Java soporta el abrir URLs en un navegador de la plataforma.

Este será el formulario el cual realizará las acciones maliciosas en la aplicación web definidas por el atacante. Los campos del formulario se pueden ocultar e incluir contenido “confiable”, como imágenes y texto de interés para la victima. Este formulario se almacenará en un servidor controlado por el atacante, y para maximizar la probabilidad de éxito se puede comprar un dominio similar a uno conocido y confiable.

Se define una nueva contraseña en los campos de nombre “Password” y “Confirm” del formulario, para luego hacer clic en el botón de nombre “Submit”.

Si la explotación es satisfactoria, la nueva contraseña habrá sido actualizada.

Para verificar esto se visualizan los datos enviados en el formulario utilizando Zed Attack Proxy.

Un CSRF es un ataque el cual engaña a la victima para enviar una petición maliciosa. Este hereda la identidad y privilegios de la victima para realizar funciones indeseables en nombre de la victima. Para la mayoría de sitios, las peticiones de los navegadores automáticamente incluyen cualquier credencial asociada con el sitio, como la cookie de sesión del usuario, dirección IP, credenciales de dominio de Windows, etc. Por lo tanto, si el usuario está actualmente autenticado hacia el sitio, el sitio no tendrá manera de distinguir entre la petición falsificada enviada por la victima y la petición legítima enviada por la victima.

Fuentes:

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29
https://www.owasp.org/index.php/Testing_for_CSRF_%28OTG-SESS-005%29
https://www.owasp.org/index.php/ZAP
https://github.com/zaproxy/zap-core-help/wiki/HelpUiTabsSites
http://sourceforge.net/p/owaspbwa/tickets/34/
http://resources.infosecinstitute.com/csrf-proof-of-concept-with-owasp-zap/
http://www.forumsoftware.ca/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/