XSS

From FdIwiki ELP
Jump to: navigation, search

¿De qué se trata?

XSS,Cross Site Scripting (ejecución de comandos en sitios cruzados) consiste en el aprovechamiento de vulnerabilidades en paginas web,por parte de terceras personas, para robar información. Consiste en introducir código malicioso dentro de una pagina web en un hipervínculo. Esto conduce a la víctima a otra pagina web del mismo dominio, la cual envía los datos ingresados por el usuario a otro sitio.

XSS directo o persistente

Esta práctica consiste en la inserción de código HTML en puntos débiles de páginas web. Con esto el atacante puede publicar contenidos diversos o ejecutar código malicioso. Lo normal es que el atacante lo hace mediante etiquetas <script> o <frame> donde este permitido. Otra opción que usan, es la utilización de tags que por constumbre siempre estan permitidas pero que la gente desconoce la capacidad de ejecitar código. Un ejemplo sería el siguiente

<script>alert("Hacked!!!")</script>
<input type=”text” name=”search” value=”/>
<script>var search="[busqueda]"</script>

XSS indirecto

Consiste en la modificación del código de la pagina web para pasar variables entre dos páginas con el objetivo de que el script recopile las cookies del usuario para así luego la persona ajena, poder ejecutar acciones sin necesitar la contraseña del usuario gracias a los permisos obtenidos. Una froma de realizarlo de forma local, consiste en modificar el DOM (Modelo de Objetos del Documento, para representar la pagina web) con JavaScript, modificando la pagina web antes de que sea interpretada por el navegador, para que se comporte de tal manera que la carga maliciosa se haga completamente en la máquina del cliente y no en el servidor. Por lo tanto la protección del servidor se ve incapacitada para dar con esta vulnerabilidad al ser local la modificación.

javascript:void prompt("...:",document.cookie).replace(/[^;]+/g,function(_){document.cookie=_;});

Otro tipo de práctica, sería mediante el uso de Phishing. Esto trata de que la víctima cree que esta en una dominio x en la barra de direcciones pero en realidad esta en tra página. Entonces cuando el usuario introduce sus dato personales o contraseñas.., estas se envían al atacante.

¿Cómo prevenir?. Consejos

-Debemos aplicar un bien diseño de página para tenerlo todo organizado y controlado.

-Hay que usar siempre frameworks o librerías o verificadas tales como Apache wicket o librerias anti-XSS.

-Todas las validaciones de los datos de entrada han de pasar por el servidor ya que sino una tercera persona puede aprovechar para hacerla de forma local como hemos explicado antes.

-Por otra parte debemos validar los datos de entrada, y que cumplan con las especificaciones que marquemos para evitar cualquier vulnerabilidad: longitud máxima y mínima, rango de valores que pueden adoptar los datos...

-Podemos emplear estándares de programación para separar los datos del código fuente. Con esto conseguimos mas claridad en el código a la hora de programar y revisar el mismo.

-Una de las cosas fundamentales consiste en identificar áreas donde una posible entrada provoque el acceso al software: cookies, resultados de consultas, emails, bases de datos, peticiones en las cabeceras...

-Para mitigar ataques cuyo fin sea la recopilación de cookies, debemos especificar que el formato utilizado es: HttpOnly

-Es recomendable el uso de firewalls para cuando el código se genere dinámicamente.

-Por último resaltar que debemos realizar todo tipo de pruebas de seguridad para detectar cualquier fallo o agujeros de seguridad.

Referencias

Enlaces de interés