En el trabajo, sospechamos que una aplicación GWT (que aún no está en producción) que poseemos es vulnerable a CSRF. Tenemos que verlo desde un punto de vista de caja negra antes de que se realice una auditoría de seguridad de terceros.
Debido a que todas las llamadas en la aplicación se realizan a través de AJAX (con el método POST), simplemente no es posible replicar una llamada Ajax de manera maliciosa gracias a la política del mismo origen. De hecho, sabemos que no hay protección csrf, pero dado que solo los cuerpos de solicitud ("carga útil" en la pestaña de red de Chrome) son leídos por el servidor, a primera vista parece que la vulnerabilidad no puede ser explotada.
¿Hay una manera de forjar una solicitud similar a través de un navegador con un formulario clásico? Mi problema es que no puedo replicar el cuerpo de la llamada Ajax a través de un formulario: la aplicación lee el cuerpo de las solicitudes: enviar un formulario de clasificación requiere entradas con pares clave / valor que el servidor no tendrá en cuenta.
En otras palabras, ¿es posible, con un formulario html, enviar una solicitud que solo contenga texto en un cuerpo, en lugar de pares clave-valor en el cuerpo? ¿O hay otro ángulo de ataque para tales casos?
Editar (información adicional):
Los clics en los botones de la aplicación generan solicitudes que usan text/x-gwt-rpc; charset=UTF-8
como content-type
que, supongo, es lo que esperan los manejadores de llamadas RPC de GWT, y no se pueden "falsificar" con un navegador normal (por supuesto, tal solicitud podría forjarse sin un navegador, pero está bien, ya que solo estoy tratando de explotar un CSRF potencial).
Lo que más me molesta es el hecho de que sé que no hay tokens CSRF en las solicitudes y que podría existir una manera difícil de falsificar las solicitudes maliciosas, pero no veo cómo.