Enumeración y explotación de recursos internos mediante Javascript/AJAX (y II)

viernes, 14 de noviembre de 2014

Veamos la segunda parte de la entrada anterior en la que se describirán nuevos escenarios de explotación y un escenario de ataque. En ella, observamos que es factible identificar recursos internos en una red corporativa o doméstica si un usuario visita una página web determinada. El navegador de la víctima enviará la información detectada al atacante, típicamente vía JavaScript/AJAX. En resumen, enumeramos recursos internos desde el exterior saltando las medidas de seguridad perimetral, toda la información se fuga vía protocolo HTTP desde un usuario legítimo de una organización.

Explotación y escenario de ataque

Esta técnica tiene un gran potencial, no solo por el hecho de permitir la enumeración, sino sobre todo, por aprovechar la propia enumeración para realizar ataques de explotación desde el exterior utilizando el navegador web de la víctima que visita la página web "maliciosa". Existen muchos tipos de ataques posibles. A continuación se expone un ataque diferente al expuesto en la NoConName y que muestra la flexibilidad a la hora de atacar sistemas.

Un usuario (víctima1) que utiliza navegador web Chrome (WebRTC) actualizado en su última versión, visita una página web (atacante). Este hecho desencadena la enumeración de direcciones IP vivas y la identificación de productos vulnerables a través de la identificación de rutas conocidas:

  • Wordpress: wp-admin/images/w-logo-blue.png
  • Moodle: /theme/standardwhite/favicon.ico

Se identificará en la red un CMS (víctima2) vulnerable a una inyección SQL. El atacante utilizará a la víctima1 para inyectar el "exploit" en la víctima2 y conseguir extraer las credenciales de la base de datos al exterior. La víctima2 comunicará la información a la víctima1 y esta al atacante (otras configuraciones son posibles).

Esquema de ataque
El exploit creado es muy sencillo. Consiste en la introducción en la página web visitada de un iframe con la inyección SQL y además una etiqueta HTML concreta que se concatenara con los resultados obtenidos de la base datos. Estos datos son leídos de la tabla "test" de una base de datos MySQL, que es accesible a través de una aplicación vulnerable a SQL y que simplificará la comunicación de estos datos al exterior.

Ejemplo de exploit


Nótese que se codifica en hexadecimal la etiqueta:


Una vez ejecutada la inyección en la víctima2, la víctima1 tendrá en su iframe una etiqueta de tipo img por cada credencial (name, passwd) extraída de la base de datos. La ejecución de estas etiquetas permitirá el envío de las credenciales al atacante.


Detalle del código JavaScript del exploit


Conclusiones

La técnica de enumeración basada en el comportamiento temporal o de carga de un navegador web cuando localiza recursos, puede ser utilizada en la actualidad con gran provecho. Especialmente reseñable es su funcionamiento en cualquier navegador actual en su última versión y la posibilidad de utilizar el propio navegador web como si de una herramienta más de pentesting se tratará, identificando recursos internos y facilitando la explotación de vulnerabilidades, como puede deducirse evitando medidas de seguridad perimetral clásicas.

Hoy, el único remedio contra estos ataques es buscar mitigaciones en la configuración de los navegadores web (por defecto deshabilitadas), limitando la ejecución de código JavaScript/AJAX o definiendo políticas que limiten la acción de contenido cargado desde Internet.

Enumeración y explotación de recursos internos mediante Javascript/AJAX (I)


Dr. Alfonso Muñoz
alfonso.munoz@11paths.com
@mindcrypt

Ricardo Martín

No hay comentarios:

Publicar un comentario