¿Creación de secuencias de comandos entre sitios en el método HTTP?

2

Últimamente, he notado que muchas configuraciones de servidores web reflejan el método de una solicitud HTTP enviada con un método no implementado en el cuerpo de la respuesta del servidor.

Por ejemplo, una solicitud enviada con el método GETTT será respondida con un código de respuesta 501 "método no implementado", mientras que el cuerpo de la respuesta anuncia que el método "GETTT" no es compatible. Por lo que entiendo, esto significa que si el método enviado al servidor web no se valida correctamente, puede ser vulnerable a un ataque XSS reflejado.

Mi pregunta es, ¿cómo puede un atacante aprovechar este tipo de situación para crear un enlace que hará que se emita una solicitud HTTP con un método arbitrario que contenga una carga útil XSS? En teoría, las solicitudes jquery $ ajax deberían poder manejar este tipo de problema, como también se indica en la siguiente discusión: enlace

Pude enviar este tipo de solicitudes hace varios meses (en Internet Explorer), pero por alguna razón, jquery $ ajax ya hace el truco por mí.

Estoy seguro de que este es un problema solucionable y solo es cuestión de encontrar la carga útil correcta. ¿Alguien tiene alguna sugerencia?

    
pregunta user3074662 30.12.2013 - 08:27
fuente

1 respuesta

1

Respuesta simple: No explotable

Aunque es posible inyectar código de script con un verbo HTTP mal formado, a este vector de ataque le falta el componente "sitio cruzado", lo que hace que la vulnerabilidad sea útil para un atacante. Entonces, ¿por qué una inyección como esta sería inútil para un atacante?

Primero que todo, ¿cómo envía un atacante una solicitud de "sitio cruzado"? Hay un par de variantes, pero la más común es la siguiente.

<form id="CSRF" method="POST"  action="http://victim/search" >
<type=hidden name=search value="<script>alert(1)</script>">
</form>
<script>
document.getElementById("CSRF").submit()
</script>

El HTML anterior enviará automáticamente una solicitud POST cuando la víctima presente el HTML. La página http://victim/search refleja la solicitud POST de búsqueda en la página, por lo que ejecuta la carga XSS en el navegador de la víctima en el contexto de http://victim/search , independientemente de dónde se originó la solicitud.

Es posible controlar algunos de los encabezados HTTP usando flash, así que escribí un marco de explotación de flash para aprovechar CSRF inusual / XSS . Lamentablemente, en la actualidad, solo se permiten los verbos GET y POST , PUT y DELETE donde se permite de una vez, pero ya no.

    
respondido por el rook 30.12.2013 - 17:16
fuente

Lea otras preguntas en las etiquetas