Cross-Site Request Forgery (CSRF)
El concepto de Cross-Site Request Forgery (CSRF)
También conocido como Ataque de Falsificación de Petición en Sitio Cruzado, presenta una brecha en la seguridad mediante la cual un agente malicioso manipula a un usuario legítimo, induciéndolo a ejecutar una acción indeseada en un sitio web, sin que el usuario lo perciba ni consienta.
En el contexto de un ataque CSRF, el atacante logra persuadir a la víctima para que interactúe con un enlace engañoso o acceda a una página web perniciosa. Dentro de esta página maligna, se ejecuta una solicitud HTTP que conlleva una operación no deseada en la plataforma web de la víctima.
Tomemos, por ejemplo, el escenario en el que un individuo ha iniciado sesión en su cuenta bancaria en línea y posteriormente visita un sitio web de apariencia inofensiva pero maquinada por un adversario. En dicha página fraudulenta, se dispone de un formulario que inicia una petición HTTP hacia la entidad bancaria, con el fin de transferir fondos desde la cuenta del usuario hacia la cuenta controlada por el atacante. Si el usuario oprime el botón de envío, sin percatarse de que está autorizando una transacción, el ataque CSRF resulta exitoso.
Este tipo de ataque puede ser empleado para ejecutar una amplia gama de acciones indeseables, como el desplazamiento de fondos, alteración de datos de la cuenta, eliminación de información, y diversas operaciones más.
Para contrarrestar los ataques CSRF, los programadores de aplicaciones web han de implementar medidas de seguridad eficaces, entre las cuales se incluye la incorporación de tokens CSRF en los formularios y las peticiones HTTP. Dichos tokens actúan como mecanismos de autenticación que permiten a la aplicación web validar el origen legítimo de la petición, verificando que emana del usuario genuino y no de un agente malicioso (aunque conviene tener en cuenta que estos tokens también son susceptibles de manipulación).
Captura de petición de cambio de nombre
Si capturamos la petición de cambio de nombre de nuestro usuario por GET cambiando con el botón derecho del ratón cambiando el nombre:
Y se lo enviamos a nuestro usuario víctima mediante una estructura en HTML ocultada en una imagen:
Pero si lo mandamos así aparecería como rota:
Así ponemos la palabra «imagen» y definimos el alto y el ancho para que ni siquiera aparezca:
No aparece nada y la víctima se cambia el nombre de usuario.
También se puede hacer mediante la url
Cambio de contraseña
Podría hacerse si en la página web no pidiesen la contraseña actual.
