lunes, 15 de junio de 2015

Un Poco Sobre Cross-site-scripting


figura 1 :portada del libro  oficial sobre xss

Cross-site-scripting es una vulnerabilidad  típica en aplicaciones  web  que  permite  inyectar  código malicioso al código  fuente de la pagina para su posterior ejecucion  en  script “java script, vbs script” evitando  las medidas de  control , dadas por el administrador del sito , en español se conoce como secuencia de ordenes en sitios cruzados.  

Los ataques por secuencia de ordenes en sitios cruzados entre páginas Web (también conocidos como XSS o CSS) son ataques dirigidos a los páginas Web que muestran de forma dinámica el contenido de los usuarios sin verificar ni codificar la información ingresada por ellos. Este tipo de ataque obliga a la página Web a mostrar el código HTML o los comandos ingresados por los usuarios. Por lo tanto, el código incluido (por lo general se usa el término "inyectado") en una página Web vulnerable se considera "malintencionado".




figura 2:  xss dom

Es común que las páginas Web muestren mensajes informativos directamente mediante el uso de un parámetro introducido por el usuario. El ejemplo más clásico es el de las "páginas de error 404". Algunas páginas Web modifican el comportamiento de la página Web de modo que pueda mostrar un mensaje de error personalizado cuando la página solicitada por el visitante no existe. En ciertas ocasiones, la página generada dinámicamente muestra el nombre de aquella que se solicita. A una página Web con dicho error la llamaremos http://paginaweb.vulnerabilidad. La solicitud de la dirección URL del página Web http://pagina web.vulnerable/paginainexistente correspondiente a una página que no existe genera un mensaje de error que indica que la "página inexistente" no existe. En consecuencia, es posible mostrar cualquier contenido desde el página Web remplazando "página inexistente" por cualquier otra cadena.




figura 3:forma de actuar de un atacante

De esta forma, si el contenido suministrado por el usuario no se verifica, es posible mostrar un código HTML arbitrario en una página Web para cambiar su apariencia, contenido o comportamiento.

Asimismo, la mayoría de los navegadores tienen la capacidad de interpretar las secuencias de comandos de las páginas Web, incluso en otros lenguajes, como JavaScript, VBScript, Java, ActiveX o Flash. Las siguientes etiquetas HTML permiten incorporar secuencias de comandos ejecutables en una página Web: <SCRIPT>, <OBJECT>, <APPLET> y <EMBED>.

Por lo tanto, un pirata informático puede inyectar un código arbitrario en la página para que se ejecute en el equipo del usuario cuando intenta garantizar la seguridad de la página Web vulnerable. Para ello, sólo debe remplazar el valor del texto que se mostrará con una secuencia de comandos de modo que aparezca en la página Web. Siempre y cuando el navegador del usuario esté configurado para ejecutar dichas secuencias de comandos, el código malintencionado tendrá acceso a todos los datos compartidos por la página Web y el servidor del usuario (cookies, campos de entrada, etc.)

PDF XSS

Es una vulnerabilidad ampliamente usada para afectar el Acrobat Reader de Adobe. En este caso, si se abusa de las características para abrir archivos en Acrobat, un sitio bien protegido se vuelve vulnerable a un ataque de tipo XSS si da alojamiento a documentos en formato PDF.

Esto afecta seriamente, a menos que se actualice el Reader o se cambie la forma en que el navegador maneja dichos documentos.

Una manera de combatirlo, si se cuenta con el servidor de aplicaciones web Apache, es llevar a cabo la correcta configuración de ModSecurity, ya que cuenta con directivas de protección para archivos en formato PDF.

 XSRF

Un ataque Cross-Site Request Forgery (XSRF ó también CSRF) explota la confianza que un usuario tiene hacia las entradas proporcionadas por un sitio.
Por ejemplo: un usuario se encuentra autenticado y navegando en un sitio, en ese momento un atacante obtiene el control de su navegador, con él realiza una solicitud a una tarea de una URL válida del sitio, por lo que el atacante tendrá acceso como si fuera el usuario previamente registrado.

Distintivamente, un atacante intercalará código HTML o JavaScript malicioso en un correo o en una tarea específica accesible desde una URL, que se ejecuta ya sea directamente o empleando un error de tipo XSS. También, es posible realizar inyección a través de lenguajes como el BBCode. Este tipo de ataques son difíciles de detectar.

Muchas de las funcionalidades de un sitio web son susceptibles de uso durante un ataque XSRF. Esto incluye información enviada tanto por GET como por POST.

También puede usarse como vector para explotar vulnerabilidades de tipo XSS en una aplicación. Ejemplos de ello son: una vulnerabilidad de tipo XSS en un foro donde un atacante puede obligar al usuario a publicar –sin que éste se dé cuenta- un gusano informático. Un atacante puede también usar XSRF para transmitir un ataque a algún sitio de su elección, así como realizar un DDos.

Sin embargo, las formas más comunes de realizar este tipo de ataque consisten en usar la etiqueta HTML o el objeto JavaScript empleados para imágenes. Distintivamente, el atacante infiltrará un email o sitio web en ellos, así cuando el usuario cargue la página o el correo electrónico, también estará realizando la petición a la URL que haya colocado el atacante.

Un atacante puede instalar su script dentro de un documento de Word, un archivo de flash, un clip de video, redifusión web RSS o Atom, o algún otro tipo de formato que pueda alojar el script.
Si un sitio web permite ejecutar sus funciones empleando una URL estática o peticiones POST, es posible que sea vulnerable, si la función se lleva a cabo mediante la petición GET, el riesgo es mayor. Si se realizan las mismas funciones,  de la misma forma repetidamente, entonces la aplicación puede ser vulnerable.

Un ataque XSRF no puede evitarse mediante la verificación del referer de las cabeceras de la petición realizada, ya que puede “limpiarse” o modificarse mediante algún tipo de filtro. Las cabeceras pueden falsearse usando XMLHTTP, por ejemplo.

Una de las soluciones más conocidas, consiste en adjuntar un token no predecible y cambiante a cada petición. Es importante que el estado de éste vaya asociado con la sesión del usuario, de otra manera un atacante puede adjuntar su propio token válido y emplearlo en su beneficio. Adicionalmente, al ligarlo a la sesión del usuario es importante limitar el periodo durante el cual será válido.


aqui les dejo el nombre de uno de los libros  especializados sobre el tema




hasta pronto ...

No hay comentarios:

Tu Comentario Es Importante