XSS en la solicitud GET no descodificada en el backend

1

Así que estoy bastante seguro de saber la respuesta a esta pregunta, pero quiero estar 100% seguro, así que estoy buscando información aquí. Se informó de una vulnerabilidad en un sitio mío que se parece a esto:

GET mysite.com/page<script>alert('XSS');</script>

Si utiliza curl, puede ver la carga útil en la respuesta, del mismo modo, si intercepta una solicitud del navegador con un proxy y la edita a la carga útil anterior que ejecutará.

Sin embargo, el backend no está decodificando la URL. Si este enlace se publica en algún foro y se hace clic en él, el navegador codificará la URL y la respuesta se verá así:

.... mysite.com/page%3Cscript%3Ealert(%27XSS%27)%3B%3C%2Fscript%3E ....

Esto obviamente no se ejecuta. Para mí, esto no representa ninguna amenaza en absoluto porque la única forma de ejecutarlo con éxito es con un ataque MITM. Si hay alguien sentado en la red que puede ver el tráfico y editarlo, no tendría sentido explotar XSS porque tiene todo lo que quiere de todos modos.

¿Es este un análisis correcto? ¿Hay alguna forma de hacer que un usuario haga clic en un enlace o publique algún formulario que no codifique la URL que no conozco?

    
pregunta user3632719 31.03.2016 - 21:03
fuente

2 respuestas

2

Su análisis es incorrecto.

No todos los navegadores hacen eso, ya que algunos google escupe una publicación excesiva en el blog que parece relevante.

La publicación del blog es antigua e IE es antigua, pero esto debería ser una prueba suficiente de que no todos los navegadores codifican esto, como esperas.

Entonces: es una vulnerabilidad real , representa un hilo para sus usuarios .

    
respondido por el Tobi Nary 31.03.2016 - 21:27
fuente
-1

Confunde qué es XSS y qué hace, le sugiero que lea lo siguiente . El XSS se está ejecutando en el sistema del espectador, no en el servidor. El objetivo es aprovechar su servidor para desvincular a quien lo visita. Explicemos con un ejemplo: un atacante inyecta código malicioso para explotar, por ejemplo IE8. Cuando alguien visita su servidor, o un foro, o es engañado para abrir el enlace (si confían en su sitio / visita su sitio), se ejecutará un código en su sistema, y si su navegador es vulnerable, ahora pueden ser explotados debido a su sitio.

Ahora, refinemos aún más esto para armarlo, para que no necesites que alguien haga clic en un enlace. Las versiones anteriores de Macromedia Flash tenían un comando llamado "getURL" que obligaría a un navegador a abrir un período de página. A diferencia de java / javascript, no te advertía que se abriría una página. Qué significa eso? Si su sitio web permite, por ejemplo, incrustación de flash animado, un atacante podría desencadenar esto fácilmente sin la intervención del usuario.

El ataque (XSS) no está dirigido a su servidor, está dirigido a alguien que está visitando su servidor.

    
respondido por el munkeyoto 31.03.2016 - 21:25
fuente

Lea otras preguntas en las etiquetas