Autor: BIBI
Siempre que pensamos en piratas informáticos, un pirata informático suele ser así: una persona solitaria que ingresa silenciosamente a los servidores de otras personas para destruir o robar información secreta de otras personas. Tal vez cambie nuestra página de inicio o incluso robe los números de tarjetas de crédito y contraseñas de los clientes. Además, los piratas informáticos pueden atacar a los clientes que visitan nuestro sitio web. Al mismo tiempo, nuestro servidor también se convirtió en su cómplice. Microsoft llama a este ataque un ataque de "scripting entre sitios". La mayoría de estos ataques ocurren cuando el sitio web genera páginas web dinámicamente, pero el objetivo del pirata informático no es su sitio web, sino los clientes que navegan por él.
Descripción de los ataques de secuencias de comandos entre sitios
En una revista llamada <<ADVISORY CA--2000-02>>, CERT advierte a todos: si el servidor no verifica de manera efectiva la entrada del cliente, el pirata informático ingresará algún código HTML malicioso, cuando estos HTML La entrada de código se utiliza en los programas SCRIPT, pueden usarlo para causar daños, como insertar algunas imágenes o sonidos desagradables, etc., y al mismo tiempo, también puede interferir con la correcta navegación de la página web por parte de los clientes.
Sabemos que algunos amigos han sido inducidos a visitar algunos sitios web gratuitos sospechosos y lo único que obtuvieron fueron de 10 a 20 ventanas pequeñas. Estas ventanas suelen ir acompañadas de botones no válidos generados por JAVA o JAVASCRIPT. Cerrar estas ventanas es en vano. Cada vez que cerramos una ventana, aparecerán 10 ventanas más. Esta situación suele ocurrir cuando el administrador no está disponible. Los incidentes con el mouse son un ejemplo típico de piratas informáticos que utilizan métodos SCRIPT entre sitios para atacar a los clientes.
Las etiquetas y scripts maliciosos no son sólo bromas, sino que incluso pueden robar datos y corromper sistemas. Un hacker inteligente o incluso no tan inteligente puede utilizar SCRIPT para interferir o alterar la entrada de datos al servidor. Los códigos SCRIPT también se pueden utilizar para atacar los sistemas de los clientes y dañar completamente su disco duro. ¡Y debes saber que mientras usas el servidor, el SCRIPT del hacker también se ejecuta en un lugar seguro de tu servidor! Si los clientes confían en su servidor, también confiarán en el código SCRIPT malicioso. Incluso este código proviene del servidor del hacker en forma de <SCRIPT> u <OBJECT>.
Incluso el uso de un firewall (SSL) no puede evitar ataques SCRIPT entre sitios. Esto se debe a que si el dispositivo que generó el código SCRIPT malicioso también usa SSL, el SSL de nuestro servidor no podrá identificar el código. ¿Vamos a entregar a los piratas informáticos el sitio web en el que nuestros clientes alguna vez confiaron tanto? Y la existencia de este tipo de destrucción dañará por completo la reputación de su sitio web.
1. Ejemplo de ataque SCRIPT entre sitios:
según la información del CERT, la entrada dinámica generalmente tiene las siguientes formas: parámetros de URL, elementos de tabla, COOKISE y solicitudes de datos. Analicemos este sitio web con solo dos páginas, el nombre del sitio web es: MYNICESITE.COM. La primera página utiliza un formulario o COOKIE para obtener el nombre de usuario:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Página de inicio</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORM método="post" action="page2.asp">
Ingrese su nombre de usuario de MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" nombre= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
La segunda página devuelve el nombre de usuario para dar la bienvenida:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Entonces
strUserName = Request.QueryString("userName")
De locontrario
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
Finalizar si %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hola: <%= strUserName %> </H3>
</BODY>
</HTML>
Cuando normalmente Cuándo escribiendo texto, todo funciona bien. Si ingresa el código de secuencia de comandos: <SCRIPT>alert('Hello.';</script>, aparecerá la etiqueta de advertencia de JavaScript:
la próxima vez que visite, esta etiqueta de advertencia también aparecerá; esto se debe a que el código de secuencia de comandos es Ya está en la cookie cuando lo visita por primera vez. Este es un ejemplo simple de un ataque entre sitios.
Si cree que se trata de un caso especial, también puede buscar en otra parte de Internet y probarlo usted mismo.
Grandes sitios web gubernamentales, sitios web educativos y sitios web comerciales, y algunos de ellos tienen la situación anterior,incluso
descubrí que el sitio web donde uso tarjetas de crédito no filtra la entrada, es realmente aterrador pensar en ello.
En el caso de los piratas informáticos, un pirata informático suele ser así: una persona solitaria que ingresa silenciosamente a los servidores de otras personas para destruir o robar la información secreta de otras personas. Tal vez cambie nuestra página de inicio o incluso robe los números de tarjetas de crédito y las contraseñas de los clientes. Los piratas informáticos también atacan a los clientes que visitan nuestro sitio web. Microsoft llama a este ataque un ataque de "script entre sitios". La mayoría de estos ataques ocurren cuando el sitio web genera páginas web dinámicamente, pero el objetivo del pirata informático no es su sitio web, sino los clientes. que navegan por el sitio web
La descripción de los ataques de secuencias de comandos entre sitios
se encuentra en un libro llamado <<ADVISORY CA --2000-02>>En la revista, CERT advirtió a todos: si el servidor no verifica eficazmente la entrada del cliente, los piratas informáticos. ingresarán algunos códigos HTML maliciosos. Cuando estas entradas de código HTML se usan en programas SCRIPT, pueden usarlo para causar daños, como insertar algunas imágenes o sonidos desagradables, etc., y al mismo tiempo, también pueden interferir con los clientes. ' Navegación correcta en la web
Sabemos que algunos amigos han sido inducidos a algunos sitios web gratuitos sospechosos, y lo que obtuvieron fueron solo 10. De 20 ventanas pequeñas, estas ventanas suelen ir acompañadas de botones no válidos generados por JAVA o JAVASCRIPT. Se llama trampa del mouse. Cerrar estas ventanas es en vano. Cada vez que cerramos una ventana, aparecerán 10 ventanas emergentes. Esta situación ocurre a menudo cuando el administrador no está presente. Los métodos SCRIPT entre sitios para atacar a los clientes
Las etiquetas maliciosas y SCRIPT no son simples bromas, incluso pueden robar datos y destruir el sistema. Un hacker inteligente o incluso no inteligente puede usar SCRIPT para interferir o cambiar la entrada de datos del servidor. El uso de código SCRIPT también puede atacar el sistema cliente, y usted debe saber que mientras usa el servidor, el SCRIPT del hacker también se ejecuta en un lugar seguro en su servidor. Si los clientes confían mucho en su servidor, también lo harán. Confíe en esos códigos SCRIPT maliciosos, incluso si el código comienza con <SCRIPT> o <OBJECT>. El formulario proviene del servidor del hacker.
Incluso el uso de un firewall (SSL) no previene los ataques SCRIPT entre sitios. Esto se debe a que si el dispositivo que generó el código SCRIPT malicioso también usa SSL, el SSL de nuestro servidor no podrá identificar el código. ¿Vamos a entregar a los piratas informáticos el sitio web en el que nuestros clientes alguna vez confiaron tanto? Y la existencia de este tipo de destrucción dañará por completo la reputación de su sitio web.
1. Ejemplo de ataque SCRIPT entre sitios:
según la información del CERT, la entrada dinámica generalmente tiene las siguientes formas: parámetros de URL, elementos de tabla, COOKISE y solicitudes de datos. Analicemos este sitio web con solo dos páginas, el nombre del sitio web es: MYNICESITE.COM. La primera página utiliza un formulario o COOKIE para obtener el nombre de usuario:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Página de inicio</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORM método="post" action="page2.asp">
Ingrese su nombre de usuario de MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" nombre= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
La segunda página devuelve el nombre de usuario para dar la bienvenida:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Entonces
strUserName = Request.QueryString("userName")
De locontrario
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
Finalizar si %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hola: <%= strUserName %> </H3>
</BODY>
</HTML>
Cuando normalmente Cuándo escribiendo texto, todo funciona bien. Si ingresa el código de secuencia de comandos: <SCRIPT>alert('Hello.';</script>, aparecerá la etiqueta de advertencia de JavaScript:
la próxima vez que visite, esta etiqueta de advertencia también aparecerá; esto se debe a que el código de secuencia de comandos es Ya está en la cookie cuando lo visita por primera vez. Este es un ejemplo simple de un ataque entre sitios.
Si cree que se trata de un caso especial, también puede buscar en otra parte de Internet y probarlo usted mismo.
Grandes sitios web gubernamentales, sitios web educativos y sitios web comerciales, y algunos de ellos tienen la situación anterior, incluso descubríque
el sitio web donde uso tarjetas de crédito no filtra la entrada, es realmente aterrador pensar en ello.
: Prevención de ataques de scripts entre sitios.
1. Cómo evitar que los servidores sean atacados por scripts entre sitios.
Afortunadamente, la tecnología para prevenir ataques de scripts entre sitios es cada vez más perfecta. Actualmente, se pueden adoptar varios métodos para prevenir ataques de script entre sitios:
1. Codificar los caracteres de la página generada dinámicamente.
Lo primero que debe hacer es codificar los caracteres de la página generada dinámicamente. De lo contrario, debe hacerlo. Los piratas informáticos serán muy vulnerables. Es posible cambiar la configuración de tu personaje para superar fácilmente tus defensas. Si nuestro sitio web es un sitio web en inglés, entonces solo necesitamos configurar la codificación de caracteres en caracteres latinos ISO-8859-1. La situación específica es la siguiente:
<META http-equiv="Content-Type" content="text/html. ;charset= ISO-8859-1">
2. Filtre y limite todos los datos de entrada.
Este es el segundo método para evitar ataques de secuencias de comandos entre sitios. Al iniciar sesión, no permita que se ingresen esos caracteres especiales. Por lo tanto, podemos agregar el programa JAVASCRIPT al método ONSUBMIT para completar esta función. En este ejemplo limitamos la entrada a 15 caracteres. Esto evita la entrada de scripts más largos.
En el libro <<Artículo de la base de conocimientos QA252985>>Microsoft proporciona un breve programa Javascript para completar el filtrado de los datos de entrada. También introdujimos este código para nuestro ejemplo de acuerdo con la situación específica, como por ejemplo:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.valuereturn true
);
;
}
//Función
CÓDIGO DE MICROSOFT
RemoveBad(strTemp) {strTemp = strTemp.replace(/</>/"/'/%/;/(/)/&/+/- /g ,"");
return strTemp;
}
Con este método, puede filtrar estos caracteres contenidos en la entrada:
% < > [ ] { } & + - " '( )
3. Utilice la codificación HTML y URL
a pesar de utilizar lo anterior. El método mencionado anteriormente para filtrar y restringir la entrada es un método defensivo muy importante, pero sigue siendo impotente contra mi ataque basado en correo electrónico. Porque puse los parámetros de URL directamente en el correo electrónico. En respuesta a esta situación tenemos que tomar una medida de seguridad más poderosa. Si usamos ASP, será relativamente más fácil de resolver. Sólo HTML y URL codifican las páginas web generadas dinámicamente. Para la situación de nuestro ejemplo, realizamos los siguientes cambios en la URL de redireccionamiento en la primera página de entrada:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
En la página de ejecución, agregamos:
strUserName = server .HTMLEncode(Request.QueryString("userName"))
y
strUserName =server.HTMLEncode(Request.Form("userName"))
Microsoft recomienda que todas las entradas y salidas de páginas dinámicas estén codificadas. Esto debería ser cierto incluso al almacenar y recuperar datos de la base de datos. De esta manera, puede evitar en gran medida los ataques de scripts entre sitios.
Para hacer esto, agregue en Page1.asp:
<%@ Idioma=VBScript %>
<% Si Solicitud.Cookies("nombredeusuario") <> "" Entonces
'redireccionar si detecta la cookie
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
De lo contrario %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE>Página de inicio de MyNiceSite.com</TITLE>
</ HEAD>
<script LANGUAGE="javascript">
<!--
función checkForm() {
document.forms[0].userName.value =
RemoveBad(document.forms[0].userName.value
devuelve verdadero
)
;
//************************************************ ******
//Programador: CÓDIGO NO ORIGINAL - VIENE DE MICROSOFT
//Fuente del código: Artículo Q25z985 de Microsoft Knowledge Base
//Descripción: Elimina caracteres incorrectos
//************* ***** *******************************************
function RemoveBad(strTemp) {
strTemp =strTemp.replace(/</>/"/'/%/;/(/)/&/+/-/g, "");
retorno strTemp;
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM método="post"action="page2.asp" onsubmit="return checkForm ();">
Ingrese su nombre de usuario de MyNiceSite.com:
<INPUT type="text"name="userName" width="10" maxwidth="10">
<INPUT type="submit"name="submit" value=" enviar">
</FORM>
</BODY>
</HTML>
<% end if %>
Agregue lo siguiente a Page2.asp:
<%@ Language=VBScript %>
<% Dim strUserName
Si Request.QueryString("userName")<>"" Entonces
strUserName =server.HTMLEncode(Request.QueryString("userName"))
De lo contrario
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/ html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">Hola: <%= strUserName %></H3>
</BODY>
</HTML>
Ahora, debido a esto El ataque fue efectivamente impedido. Una vez codificadas esas etiquetas y scripts maliciosos, se muestran en forma de texto, como se muestra a continuación:
También podemos agregar un componente IIS para filtrar todos los caracteres especiales de la entrada dinámica. Para aquellos sitios web que ya se han desarrollado, es muy fácil utilizar este método para evitar ataques de scripts entre sitios. Nuestro control puede interceptar el objetivo REQUEST de la página ASP y puede detectar el contenido de tablas, cookies, cadenas de solicitud y programas:
También podemos agregar datos estadísticos a este componente escribiendo archivos de registro. Cada vez que un cliente ingresa un carácter ilegal, este componente registra su dirección IP y la hora. Para obtener más información, consulte el artículo <<Roll your Own IIS Application de Doug Dean en ASPToday>>.
Solo necesitamos tomar algunos pasos simples para prevenir eficazmente los ataques de scripts entre sitios. Además de los tres métodos mencionados anteriormente, Microsoft y CERT también recomiendan encarecidamente el uso de un método que denominan "verificación de idoneidad". Por ejemplo, si hay una ventana de entrada que solo permite la entrada de números, la limitaremos para permitir solo la entrada de números del 0 al 9. El método utilizado por Microsoft y CERT para limitar los caracteres de entrada es mucho mejor que filtrar únicamente los caracteres especiales. Si sigue estos pasos, podrá proteger a los clientes que visitan su sitio web mientras están allí.
2. Cómo proteger tu navegador de ataques de hackers:
¿Cómo evitar ser atacado cuando estás en roaming en Internet? Microsoft y CERT desaconsejan jugar en línea. En respuesta a esta situación, el autor de una columna en PC Magazine llamado John Dvorack dio una respuesta interesante. Cree que se trata de un acto premeditado de Microsoft: asustar a los internautas para que naveguen en sitios seguros como America Online y MSN.com.
En nuestro ejemplo, incluso si no navegas por Internet, no puedes evitar ser atacado por piratas informáticos en línea. Irónicamente, la mayoría de los peligros provienen de los sitios web en los que más confiamos. Si desea que su sitio web esté libre de problemas, no debe descargar ningún contenido dinámico ni cookies. Para obtener más información, consulte la información relevante de su navegador.
Microsoft también le advierte que configure el Active Script de su navegador en un estado severamente restringido y su correo electrónico en un modo de recepción severamente restringido. Tenga cuidado al hacer clic en enlaces en correos electrónicos. Para obtener más información, consulte un libro llamado <<Artículo Q253117 de la base de conocimientos de Microsoft>>. Por las dudas, será mejor que tengas más experiencia online y tengas cuidado en todo momento.
Conclusión
Si usted es un antiguo programador de UNIX, es posible que no sepa qué significa cross-site scripting. Usted sabe que el nombre de usuario y la contraseña para que los administradores de muchos sitios inicien sesión son root y root respectivamente. De manera similar, el nombre y la contraseña de muchos administradores de bases de datos son sa y contraseña respectivamente. También conoce Webzine (como Phrack y Alt2600). Los métodos que proporcionan pueden permitirle conocer las debilidades de un determinado servidor paso a paso. En este tipo de hardware, también sabe que muchos servidores de bases de datos de sitios web y servidores web no se protegen a sí mismos. Una vez que se encuentre con un hacker, la máquina quedará paralizada.
Aunque es fácil tomar medidas para proteger nuestros sistemas de los piratas informáticos, nuestros sistemas siempre están expuestos a los piratas informáticos. Hay muchas razones para creer que durante el próximo año surgirán nuevas vulnerabilidades de seguridad. Un documento elaborado bajo la dirección del Sr. John Howard de la empresa CERT menciona: "Según las investigaciones actuales, cada sitio web con un nombre de dominio en Internet es atacado por piratas informáticos al menos una vez al año en promedio,
incluso uno solo de estos servidores
".El ataque es insoportable. Los ataques de secuencias de comandos entre sitios son otro método que pueden emplear los piratas informáticos. Pero podemos evitar que se produzca esta forma de ataque siempre que llevemos a cabo algún procesamiento simple mencionado anteriormente.