viernes, 14 de diciembre de 2012

Ataques de Inyeccion (Parte 2)


 Ataques XSS

 1   ¿Qué son?

XSS es la abreviatura de “Cross Site Scripting”, típicamente escrito como XSS para no confundirlo con CSS que son las hojas de estilos en cascada de las páginas web.
Las vulnerabilidades de tipo XSS tratan de ejecutar código de scripts como Java o VBScript en un sitio web a través de formularios cuyos textos de entrada no han sido bien formateados y permiten la entrada de caracteres especiales como por ejemplo: < o >.

2   Tipos de ataques XSS

Los ataques XSS se dividen en dos tipos: XSS indirecto (no persistente) y XSS directo (o persistente)


            2.1 Indirecto (no persistente)

Consiste en modificar valores que el código de la web utiliza para pasarse a sí misma variables entre sus páginas. Al modificar el código de las mismas se puede alterar el funcionamiento de ella.
A continuación se presenta un ejemplo para su mejor entendimiento..
Supongamos que existe una web cuyo fichero index.php tiene el siguiente contenido:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <title>Bienvenidos a <?php echo $_GET['title']; ?></title>
  6. </head>
  7.  
  8. <body>
  9. </body>
  10. </html>
 
Como se puede comprobar, se trata de  un código muy sencillo que incluye únicamente el comando:
<?php echo $_GET['title']; ?> y donde se recoge una variable llamada title que se  inserta en el título de la web, un código habitual y sencillo.
A partir de estos datos, si alguien quisiera  desprestigiar el sitio web haciendo creer a los usuarios que es un sitio peligroso podría dejar  enlaces web en los buscadores y otras webs para que los usuarios accedieran a nuestro sitio pero a través de la siguiente dirección (se muestra solo la porción final):
     index.php?title=</title><script>alert("¡Este Sitio es un peligro!")</script>

El código anterior ha utilizado la funcionalidad existente de la etiqueta de la web:
<?php echo $_GET['title']; ?> para introducir un nuevo código que consiste en la cadena:
<script>alert("¡Este Sitio es un peligro!")</script>

Realmente esta alteración de la funcionalidad no genera ningún daño directo ya que lo único que ocurre  es que aparecerá ante el usuario la ventana mostrada en la Figura 17:



Hasta que el usuario no pulse sobre el botón Aceptar,  no podrá acceder al sitio web y tras haber leído semejante aviso lo más probable es que no lo  haga. Por lo tanto,  una línea sencilla de código podrá crear  una campaña muy negativa sobre el sitio web.
Este es un ejemplo con una alerta simple pero XSS tiene mucho potencial y podría insertarse un script malicioso en una etiqueta de título simple que por ejemplo enviara  archivos al un servidor transmitiendo  código malicioso a los usuarios legítimos desde el  sitio web atacando a su equipo y su navegador.

             2.2  XSS Directo (persistente)
Consiste en introducir código script en los formularios HTML que no formatean el texto introducido correctamente. Este tipo de ataques son los más difíciles de lograr ya que las medidas de prevención son relativamente sencillas. Sin embargo, hay que tener en cuenta que estos ataques son los más dañinos funcionando en sitios dinámicos donde se puede introducir contenido libremente, por ejemplo, comentarios en blogs, un post en foros, etc.
El ataque consiste en que en vez de escribir un comentario “inocente” se introduce en su lugar código con etiquetas como <iframe> o <script>.
Para ilustrar su funcionamiento se presenta un ejemplo: supongamos que en un sitio web se insertara  la siguiente líneas de código, muy similar al ejemplo del apartado anterior :
<SCRIPT language='JavaScript'>        alert('Este sitio es un peligro¡');</SCRIPT>


La diferencia con el anterior método de ataque es que ahora siempre que un usuario entre en el post recibirá la alerta de la Figura 17. El código malicioso se queda permanentemente insertado en la base de datos y provoca daño permanente hasta que el administrador del sitio web elimine el comentario.
Como ya se ha comentado éstos ataques son muy peligrosos ya que en foros con gran afluencia de gente se puede insertar código malicioso que provoque, de forma transparente a los usuarios, daño en el software, descargar archivos, carga de archivos maliciosos o todo tipo de ataques debido a la potencia y versatilidad de los scripts.

3  Solución

Una vez más la solución pasa por hacer un correcto tratamiento de los textos que los usuarios envían a tu sitio web como ya se hamos visto en el SQL Inyection

No hay comentarios:

Publicar un comentario

Esperando tu comentario...