it-swarm-es.com

¿Es posible bajar un sitio utilizando JavaScript en la barra URL?

Si un sitio está escrito lo suficientemente mal, ¿es posible derribarlo o desordenarse con él usando solo JavaScript en la barra URL?

2
Moshe

Sí, en teoría, un sitio podría tener una función de JavaScript que iniciará una AJAX para destruir el sitio. Luego, podría entrar:

javascript:destroySite();

No puedo pensar en por qué un sitio tendría una función destroySite, pero es teóricamente posible. Es más probable que sea algún tipo de función de búsqueda, que es vulnerable a la inyección de SQL:

javascript:search("'; drop table users; --");

Debería agregar que estos vectores de ataque se basan en las vulnerabilidades del lado del servidor, y debe acorralar su código del lado del servidor para proteger contra la inyección de SQL y asegúrese de que usted autentique cualquier otra AJAX Solicitudes que deben Requerir autenticación, antes de permitirles cambiar cualquier cosa en el servidor.

Esencialmente, la línea de fondo es: nunca confía en la entrada del usuario y AJAX Solicitudes son Entrada de usuario

9
pkaeding

El JavaScript: Esquema ejecuta la (s) declaración (s) de JavaScript en el contexto de la página actual. Podría lograr el mismo efecto escribiendo o pegando los fragmentos de JavaScript en la consola de Firebug. Por lo tanto, si el sitio puede ser "derribado" por algún JavaScript que se ejecuta en el contexto de la página actual, es posible (ya sea a través de JavaScript: en la ventana del navegador, con Firebug u otra consola web).

Pero JavaScript: (y datos :) Los esquemas de URL plantean problemas especiales con ataques de scripts cruzados, a menudo es posible "derribar" (compromiso) al usuario. Si el sitio permite la inyección de los datos del usuario en URL y no valida correctamente los datos entrantes, puede crear un agujero de scripting de sitio transversal. Por ejemplo, considere una página que toma un parámetro CGI Fast Page, filtra todas las etiquetas y cotizaciones de la entrada, y se hace eco de la entrada filtrada dentro de la etiqueta: "> Haga clic aquí para volver

Si el atacante hace que un usuario haga clic en la URL donde el parámetro CGI de salida FastPage es: Last Page = JavaScript: alerta (Document.Cookie) El sitio podría terminar con: Haga clic aquí para retroceder (tenga en cuenta que no hay etiquetas ni cotizaciones en los datos inyectados). Cuando el usuario haga clic en el enlace, se ejecuta el JavaScript inyectado (en algún momento llamado "Clic XSS", ya que a menudo requiere la interacción del usuario para la ejecución), por supuesto, en el ataque real, no hará una alerta, sino que en su lugar funcionaría un Script que envía las cookies robadas al sitio del atacante, o hace algo igualmente desagradable).

Lo correcto que debe hacer es recordar dónde se utilizará la entrada en la página la entrada filtrada (en cuyo contexto, en este, la URL) y ajustar el filtrado en consecuencia, por ejemplo, verifique que el esquema esté limitado solo a http:// o https: //.

El filtrado de las URL y evite el JavaScript: los ataques de inyección no están (todavía) reflejados en la hoja de trucos de prevención de OWASP XSS https://www.owasp.org/index.php/xss_ (cross_site_scripting) _prevention_cheat_sheet

0
dmitris