Hace poco Conocí realmente como funcionaba un ataque de CSRF, Pero todo en la vida Cada día aprendes algo nuevo. Y no sé si soy el único pero en esto me eh encontrado con situación realmente llamémosla «Interesante».
Este post es para para compartir con ustedes, mi experiencias. Quizás le ayude a alguien más. Que este empezando a juguetear con esta vulnerabilidad Web.
Bueno empecemos Que es Ataque CSRF:
Un ataque CSRF fuerza al navegador web validado de una víctima a enviar una petición a una aplicación web vulnerable, la cual entonces realiza la acción elegida a través de la víctima. Al contrario que en los ataques XSS, los cuales explotan la confianza que un usuario tiene en un sitio en particular, el cross site request forgery explota la confianza que un sitio tiene en un usuario en particular.
Ahora bien contare lo que hasta el momento me eh encontrado.
Básicamente me eh topado con 3 Tipos CSRF.
Tipo 1:
Este básicamente es más elemental de todos, es el Formulario que no tiene token. La cual está confiado en que la petición del usuario es realmente de él, y no es una petición forzada.
Ejemplo:
[Captura de Imagen de Live HTTP Header; Plugin de Firefox que Uso para Editar Cabeceras y detectar CSRF]
Ahora Bien este es el más fácil de todos por que tan solo resta armar la PoC [Prueba de Concepto] y Bang! CSRF.
Tipo 2:
Ahora pasamos al que yo denomino tipo 2, Este CSRF Que aun teniendo protección no sirve para nada, solo de “ lujo “ una prueba de Ello: Twitter, Hace unas semana encontré un hueco de seguridad que sin el uso de token las peticiones se iban. La cual permitía que yo armara un HTML y lo enviase a un víctima y este lo abriera y yo tomar el control de su cuenta, todo esto de manera oculta para él. Una Gran Brecha de seguridad, y pensar que este fallo ya lo eh visto el múltiples Aplicativos Web. Algunos ya eh reportado y otros apenas iré a reportar, de todas maneras es un fallo, no verificar los tokens enviados por el usuario, y dejar sin verificación los tokens. ( Hackeando Twitter Con Un Click )
[Exploit CSRF De Twitter – Captura de la HTML De Prueba de Concepto]
Tipo 3:
Este Tipo de CSRF es muy Extraño, la verdad eh buscado información al respecto y no encuentro alguna, igual quiero presentárselas acá y si tienen alguna duda, Ps esto lo que tengo al respecto.
Este CSRF Se basa en autentificar el token en las cabeceras, si bien debes modificar la cookie para obtener la prueba de concepto opino que no es imposible de realizar, y estoy en desarrollo de su PoC.
Le daré un ejemplo para que entiendan mejor:
[CSRF Con Token Modificable]
Ahora si Yo modificase Token de seguridad, Que se encontrase en header y lo pongo de igual manera formulario que estoy enviando, la petición se realiza de manera exitosa.
Pero si el token del header que está en cookie, lo modifico y el token que está en formulario no le realizo ningún cambio. Efectivamente la petición es rechazada por el servidor.
Y esto es debido que la comprobación de token la compara desde el servidor sino desde las mismas cabeceras y esto representa un riesgo. 1. Por qué no debes dejar que el token sea un valor modificable, si el usuario lo modifica lo que debería pasar es rechazarlo, 2. Porque la comprobación de token la estas dejando a vista del usuario.
Ahora como explique arriba es muy complejo armar la PoC, pero no imposible 3:)
** Actualizacion: https://apigee.com/console/
**Permite por medio de la consola editar parametros de cabezera, tocara juguetear un poco.
Bueno ya con esto concluyo este post, la verdad fue un placer compartir esta información con todos.
Y bueno cabe aclarar que lo escrito de manera anterior es mi punto de vista de ver los ataques de CSRF, y los dividos de esa manera. Espero que le haya gustado!
By Dylan Irzi
Security Researcher.
WebSecurityDev