Amenazas en la red - XSS injection

La red es un lugar muy amplio donde podemos compartir y obtener información, sin embargo estas transacciones al igual que en el mundo real, no se encuentran excentas de amenazas o actividades maliciosas.

Existen un gran número de amenazas diferentes que pueden comprometer nuestra seguridad y nuestra privacidad al conectarnos a una red e incluso frente a usuarios no autorizados que tengan acceso físico al ordenador.

Malware 

El término Malware es utilizado para referirse a una variedad de software hostil, intrusivo o molesto. Los tipos más conocidos de malware, virus y gusanos, se distinguen por la manera en que se propagan, más que por otro comportamiento particular.


Para que un software malicioso pueda completar sus objetivos, es esencial que permanezca oculto al usuario. Dentro de esta categoría tenemos a:
  • Backdoors
  • Drive by Downloads
  • Rootkits
  • Troyanos 
Existen varios factores que hacen a un sistema más vulnerable al malware:
  • Homogeneidad.
  • Errores de software.
  • Código sin confirmar.
  • Sobre-privilegios de usuario.
  • Sobre-privilegios de código.
En cuanto a las vulnerabilidades mas directas al hacer uso de la red, tenemos a la inyección de código.

Code Injection 

Es una explotación de un bug generado por el procesamiento de data invalida. La inyección es usada por un atacante para introducir o inyectar código en un programa vulnerable y cambiar el curso de ejecución.

Los ataques de inyección usan un medio de entrada para hacer algo que el desarrollador no esperaba. La vulnerabilidad más común en las aplicaciones es la validación de datos de entrada. Existen diferentes tipos de ataques de inyección y vulnerabilidades. Cada ataque tiene diferentes formas de probar la vulnerabilidad.
  • CRLF Injection
  • LDAP Injection
  • SQL Injection
  • XSS Injection
  • Javascript Injection
En adelante nos enfocaremos en el XSS injection o cross-site scripting.

Cross Site Scripting

También conocidas como vulnerabilidades XSS o CSS, aunque XSS es la preferida por los atacantes.
Es una vulnerabilidad muy peligrosa debido a la basta cantidad de aplicaciones, ya que en su mayoria usan contenido dinámico.

Hay que tener en cuenta que con esta vulnerabilidad, los atacantes explotan la confianza que un usuario tiene en un sitio en particular, y esto nos da una dimensión del impacto que puede tener.

Este tipo de vulnerabilidad puede ser explotada de dos maneras:

Reflejada: Consiste en modificar valores que la aplicación web usa para pasar variables entre dos páginas. Un clásico ejemplo de esto es hacer que a través de un buscador se ejecute un mensaje de alerta en JavaScript. Con XSS reflejado, el atacante podría robar las cookies para luego robar la identidad, pero para esto, debe lograr que su víctima ejecute un determinado comando dentro de su dirección web.

Almacenada: Consiste en insertar código HTML en sitios que lo permitan volviéndose visible a los usuarios que ingresen a el sitio modificado.
Si un sitio web contiene esta vulnerabilidad, un atacante puede realizar diversos tipos de ataques basándose en la confianza que inspira la plataforma en el usuario. Desde redirigir a otro sitio para robar información mediante phishing, hasta hacer que se descargue alguna amenaza y se ejecute en el sistema.

Sobre éste tipo realizaremos una prueba sencilla.

Prueba de XSS Injection por almacenamiento

Dentro de las páginas familiares, podemos verificar si en la url de alguna sección de la página, exista alguna variable o nombre que sea usado en la vista. Por ejemplo podemos comprobar con un sitio universitario:


Observamos que en la url existe la palabra "CIENCIA%", "COMPUTACI%" y debajo, donde dice "ESPECIALIDAD", a continuación dice "CIENCIA DE LA COMPUTACIÓN". Esto nos dá un indicio de variables que se pasan desde la url a la vista en pantalla.

Podemos comprobar si esto es realmente así, cambiando un "CIENCIA" por "INGENIERIA". Con ello obtenemos lo siguiente:


Comprobamos que los nombres en la entrada eran variables. Esto deja la puerta abierta al uso de código html y formas más elaboradas...


En este caso, agregamos un pequeño formulario con el fin de mostrar las posibilidades, muy favorables para el phising.

Fuente:
https://es.wikipedia.org/wiki/Malware#Vulnerabilidades_usadas_por_el_malware
http://www.testingsecurity.com/how-to-test/injection-vulnerabilities/XSS-Injection
https://www.welivesecurity.com/la-es/2015/04/29/vulnerabilidad-xss-cross-site-scripting-sitios-web/

Comentarios