Estoy probando un escenario con proxy Burp.
-
Estoy ubicado en un sitio web
https://website.com/web
-
Hay una opción allí para eliminar un elemento, al hacer clic en él, se envía una determinada solicitud POST (
XMLHttpRequest
, no se realiza ninguna actualización de la página) donde puedo insertar una etiqueta<script>
:POST /web/deleteItem HTTP/1.1 Host: website.com returnParameter=<script>alert('xss')</script>
-
El método
deleteItem
devuelve lo siguiente:HTTP/1.1 200 OK Date: Tue, 31 Jan 2017 22:18:54 GMT X-XSS-Protection: 1; mode=block Content-Type: application/json;charset=UTF-8 ... {"status":"SUCCESS","result":"<script>alert('xss')</script>"}
-
En un sitio web del paso # 1 hay funciones de JavaScript que analizan el JSON y muestran su valor de resultado en la pantalla
-
alert
se muestra enhttps://website.com/web
, por lo que el XSS reflejado se ejecutó con éxito.
Pero este escenario no es realista, ya que necesito atraer a un usuario al sitio web y ejecutar el XSS de alguna manera.
He intentado esto haciendo un formulario HTML POST simple y enviando los parámetros a https://website.com/web/deleteItem
. Digamos que usaría phishing y el usuario enviaría el formulario.
La acción fue ejecutada, pero solo recibí una respuesta JSON . No había ninguna página en el paso # 1, por lo que en realidad no se mostraba nada como XSS, porque el usuario no estaba ubicado en https://website.com/web
donde debería ejecutarse alert('XSS')
. No estoy seguro de que sea posible enviar al usuario a la página # 1 y enviarlo a este JSON con XSS de alguna manera.
¿Podría haber una manera de ejecutar este escenario en condiciones realistas?