¿Cómo redireccionar cualquier respuesta a una ubicación arbitraria en el editor de solicitudes de OWASP ZAP?

0

Estoy intentando encontrar XSS almacenado en una aplicación. Afortunadamente, la aplicación me permite insertar y editar la descripción de mí mismo que se muestra a cualquiera que visite mi perfil.

La ubicación donde edito mi descripción: enlace

Página donde se muestra la descripción editada: enlace

En cuanto a mi problema, ¿cómo puedo configurar el editor de solicitudes de zap de tal manera que cuando envío una solicitud en el enlace , ¿Se muestra la respuesta para enlace ?

NOTA: Una cosa posible en la que pensé era incluir Location: http://example/edit_dec?content=test como encabezado de cada respuesta, pero descubrí que no hay forma de hacerlo en el Request editor .

    
pregunta Then008 20.07.2018 - 18:25
fuente

1 respuesta

1

editar: solución de trabajo a continuación!

Me gustaría crear un script de regla de proxy para verificar la ruta de la URL a la que se llama, y luego realizar una llamada a la ruta de "respuesta".

Ejemplos: enlace

Aquí está la plantilla de ejemplo para scripts de proxy: enlace y la documentación correspondiente para el objeto HTTPMessage que manejarías: enlace

solución simple

No trabajo con javascript (en su mayoría, un tipo de Python), pero veamos si podemos trabajar con un script básico:

Aquí está la plantilla de script proxy JS de ejemplo vinculada anteriormente:

/**
 * This function allows interaction with proxy responses (i.e.: 
inbound from the server to the browser/client).
 * 
 * @param msg - the HTTP response being proxied. This is an HttpMessage object.
 */
function proxyResponse(msg) {
// Debugging can be done using print like this
    print('proxyResponse called for url=' + 
msg.getRequestHeader().getURI().toString())
    return true
}

Entonces, si queremos ir a otro lugar, podemos probar un 307 (redireccionamiento temporal) así:

function proxyRequest(msg) {
return true
}

function proxyResponse(msg){
    print(msg.getRequestHeader().getURI().toString());
    if (msg.getRequestHeader().getURI().toString().contains("edit_desc?content=")) {
        print("Found the URL!");
        var uri = msg.getRequestHeader().getURI().toString()
        var username = uri.match(/content=(.*)/)[1];
        var redirUrl = "http://example.com/"+username;
        msg.getResponseHeader().setStatusCode(307);
        msg.getResponseHeader().setHeader("Location", redirUrl)
    return true;
    }
}

Si lanzas eso en un nuevo script proxy (si tienes problemas con él para no permitirte crear un nuevo script, duplicar otro y reemplazarlo todo), habilítalo y listo, redirige cualquier solicitud con 'edit_desc?content='user a 'http://example.com/user' después de enviar la solicitud al servidor.

script en acción

script habilitado:

solicitudenlahistoria:

vistaderespuesta:

estadodelnavegador:

    
respondido por el Angelo Schilling 20.07.2018 - 21:52
fuente

Lea otras preguntas en las etiquetas