Anular el filtro XSS

5
<script>
Something.execute("injectionpoint");  }, true);
</script>

Estoy intentando omitir un filtro XSS pero no funciona, ya que " se filtra como \" o ;\" dependiendo de donde se coloca " . / se filtra como \/ . // presente en la carga útil se elimina

Otros caracteres, como ( ) , < , > , -- no se filtran

Aquí hay un ejemplo con +alert(1)<!-- como carga útil

Something.execute("+alert(1)<!--"); }, true);

    
pregunta user2650277 25.04.2015 - 17:57
fuente

2 respuestas

9

Omitir comillas dobles escapadas

Según su descripción, esto debería funcionar:

\");alert("xss

El " se escapará como \" , dando como resultado \" , que escapa al \ , pero no al " .

Para evitar esto, como mínimo deberías escapar también de \ como \ .

Omitir doble comillas y doble barra diagonal inversa a una sola barra invertida

Según su comentario, asumo las partes relevantes reales del trabajo de filtrado de esta manera:

  1. " - > %código%
  2. \" - > %código%

Esto tampoco es seguro. Una inyección podría tener este aspecto:

\\");alert(1

\ se escapará como \ en el paso 1, lo que nos lleva a " , que luego se transforma a \" en el paso 2. No puede usar comillas dobles en la cadena inyectada, pero eso es no es un problema, ya que XSS con comillas simples o completamente sin comillas es perfectamente posible.

Para asegurar esto, la doble barra invertida tendría que escaparse, no transformarse en una sola, lo que nos daría \\" con la inyección descrita anteriormente, lo cual es seguro.

    
respondido por el tim 25.04.2015 - 18:33
fuente
0

Suena como un PHP magic_quotes_gpc modificado. "Cuando magic_quotes están activados, todos '(comillas simples)," (comillas dobles), \ (barra invertida) y NUL se escapan con una barra invertida automáticamente. "

Esto no siempre funciona pero aquí hay algunos desvíos:

  1. Use el método "String.fromCharCode ()". Por ejemplo alerta ('Ogglas'); sería: String.fromCharCode (97, 108, 101, 114, 116, 40, 39, 79, 103, 103, 108, 97, 115, 39, 41, 59). Puede usar el complemento Firefox Hackbar para generar estas cadenas. Nota: no he revisado el código del complemento, así que utilícelo bajo su propio riesgo.

  2. Intente pasar valores HEX codificados en URL. También puedes probar una URL doble codificada. Dependiendo de la implementación, el primer proceso de decodificación se realiza mediante el protocolo HTTP y la URL codificada resultante omitirá el filtro XSS, ya que no tiene mecanismos para mejorar la detección. Ejemplo:

    • Char - > '- > Valor codificado hexadecimal - > % 27

    • Codificación hexadecimal% - > % 25

    • Doble codificación - > % 2527

respondido por el Ogglas 14.09.2016 - 18:52
fuente

Lea otras preguntas en las etiquetas