¿Acortador de enlace que virtualiza el enlace para XSS reflejado?

0

He estado aprendiendo sobre XSS recientemente, y luego estaba tratando de encontrar maneras de evitar los filtros anti-XSS en los navegadores. Pensé: "¡Tal vez si utilizas un acortador de enlaces que virtualice tu sitio!", Similar a cómo un sitio proxy virtualiza las páginas, o el Editor de prueba de W3Schools (excepto que no muestra el código). El concepto es que un acortador de enlaces usaría un enlace sospechoso y convertiría la página en un virtualizador.

Por ejemplo, Bob encuentra una vulnerabilidad XSS en un sitio y la acorta en un enlace acortado; cualquier enlace acortado menos sospechoso que https://vulnerable.com/<scRIPt>alert("XSSed!");</scriPT> . Bob usaría el acortador de URL virtualizador y colocaría el URL anterior como enlace y se virtualizaría en un <iframe> o algo así y no advertiría al usuario del código malicioso y luego se lo enviaría a alguien, quien luego haría clic en lo .

¿Esto funcionaría para eludir los filtros XSS? ¿Ya existe un sitio como este?

    
pregunta anonymous 28.04.2017 - 00:34
fuente

2 respuestas

0

Los separadores de URL ordinarios se utilizan comúnmente para ocultar la carga útil y hacer que los enlaces parezcan menos sospechosos. Sin embargo, no ayudan a los filtros XSS de los navegadores, ya que lo que hace un ajuste de URL ordinario es simplemente emitir un redireccionamiento.

Usted sugiere un enfoque para construir un separador de URL que omita los filtros XSS de los navegadores usando lo que se llama virtualización en lugar de redireccionamientos.

La forma de hacer esta virtualización sería usar un iframe. El único problema es que el filtro XSS de los navegadores (probablemente) estará protegiendo el iframe de la misma manera que lo está protegiendo cuando ingresa una URL en la barra de URL. Así que no ganas nada.

Y usar un iframe es la única forma en que puedo pensar en hacer "virtualización" sin tener que ejecutarme en el SOP. Así que no creo que este sea un concepto viable.

    
respondido por el Anders 28.04.2017 - 10:58
fuente
-1

Primero, el https://vulnerable.com/<scRIPt>alert("XSSed!");</scriPT> no es peligroso para usted, ya que está preguntando (preguntar no significa analizar y ejecutarlo localmente) acerca de un recurso / ruta (aquí está <scRIPt>alert("XSSed!");</scriPT> ).

De hecho, esto es XSSing el servidor por el cliente. Y realmente creo que tenemos un servidor tan malvado que realmente ejecuta la ruta solicitada como script localmente (en el servidor). A menos que un estudiante lo haga para investigar y aprender cosas (sí, asumamos el camino solicitado como un script y lo ejecutemos localmente, se ve muy impresionante).

A veces, el virtualizador que mencionaste lo hará peligroso para ti, considerando que hay una página html que tiene un script y analiza la ruta de la URL y coloca el valor dentro de algún div, por ejemplo, como sigue:
La ruta (URI) se parece a la siguiente

http(s)://noob_made.awesome/user={name_of_the_user}

Y ahora la parte del script dentro de la página

function a_student_did_this(){//on body load maybe!
 var user_name=...;//grab the user from url param user
 document.write('Hello '+user_name);//why?
 return true;//indeed
}

Y ahora, si asume que llama a la página como sigue

http(s)://noob_made.awesome/user=<scRIPt>alert("XSSed!");</scriPT>

su navegador (no probado) PODRÍA asumir que el usuario es un script y realmente ejecutarlo, muy peligroso.

Primero , nunca hagas eso realmente cuando crees que es posible obtener XSSed, especialmente cuando no es seguro (HTTP). Pero, de hecho, tanto HTTPS como HTTP funcionarán igual para usted en la virtualización que mencionó.

Segundo , incluso si no hay ninguna forma en el mundo y estás cansado de volver a buscar una alternativa, así que al menos arréglalo y hazlo de una manera que no sea XSSable, por ejemplo como sigue

function a_jounior_student_did_this(){//but still in worst way
 var user_name=...;//grab the user from url param user
 user_name=encode_the_string(username);//encode it first
 user_name='<!CDATA['+user_name+']]>';//not it's not parsable
 document.write('Hello '+user_name);//could be safer now
 return true;//hmm
}

Como el siguiente código ahora actúa como CDATA (* no * datos de caracteres), y el navegador (si el mismo alumno no codificó el navegador) se supone que solo debe obtener los datos dentro de CDATA en una cadena simple.

Sus preguntas: , de hecho, los sitios de virtualización que mencionó son tan inteligentes que nunca ejecutarán un script ellos mismos (actuarán más como un proxy para usted). ejecutado por el nodo de destino
Pero he visto servicios (es emulador de IE, creo que si tiene búsqueda) que toman la página que especificó, tomen una imagen de su renderización y responden a una imagen. pero, por supuesto, no puede obtener información sobre si es buena o mala con una imagen renderizada
Incluso si los servicios ejecutan el script, es casi imposible hacer un grave daño explícito al cliente objetivo. Pero debe culparse a sí mismo si la secuencia de comandos lo redirecciona para descargar algo y, peor aún, lo obtiene y lo ejecuta, o si una página le pide que pague alguna factura (¿por una buena razón?). La escuela W3 que mencionaste casi no hace nada especialmente por ti, sino que te facilita la codificación, lo mismo que con jsfiddle, etc.
Tampoco hay ninguna relación directa entre link shortener y XSS. Nuevamente, ya que finalmente necesita cargar e invocar los scripts en el cliente de destino.
Un acortador de enlaces solo mantiene el enlace asociado con algo, y para cualquier invocación para un enlace corto dado, el usuario es redirigido .

Dato 0 : si una página o un servidor es XSSable, entonces es culpa de usted (programador). Solo tómate un poco más de tiempo para estudiar y haz el trabajo bien. Al igual que la inyección SQL de la vieja escuela (¡que todavía vive en algunos sitios!), su hermano XSS también podría mantenerse.

Dato 1 : obviamente, PUEDES evitar el ataque XSS en tu servidor si lo haces correctamente. Ya que es casi posible para el cliente también (javascript), pero como mencioné, otra vez XSS en el cliente no tendrá problemas explícitos y peligrosos a menos que el usuario actúe realmente mal.

    
respondido por el user7859067 28.04.2017 - 02:30
fuente

Lea otras preguntas en las etiquetas