Ajax y Mashups

  • Posted on: 18 January 2017
  • By: ReYDeS

Ajax es la tecnología utilizada para permitir comunicación asíncrona entre el navegador y el servidor web. En los sitios web antiguos, cuando se hacia clic, el cliente envía toda una petición hacia el servidor, el servidor procesa la petición y luego responde. Cuando el navegador obtiene toda la respuesta, nuevamente dibuja la pantalla completamente.

Con Ajax, JavaScript crea objetos XMLHTTP. Estos objetos pueden hacer peticiones y recibir respuestas de manera asíncrona, actualizando la pantalla conforme se recibe la respuesta. Por ejemplo, con Google maps. Cuando se busca por algo y desplaza el mapa, el navegador utiliza Ajax para hacer llamadas de ida y vuelta hacia el servidor para obtener las imágenes constituyendo el mapa. De esta manera el mapa cambia dinámicamente, pero lo restante de la página es estática y no necesita ser nuevamente dibujada con cada cambio.

Mashups

Una de las más populares funcionalidades de la sitios de la web 2.0 son los “mashups”. Este es donde una aplicación combina otros dos o más sitios dentro de un “widget” o funcionalidad de su sitio. La política del mismo origen causa problemas para este tipo de aplicaciones. Debido a esto, muchas aplicaciones “mashup” incluyen capacidades de proxy para eliminar esta restricción.

Mismo Origen

La política del mismo origen permanece en efecto para las aplicaciones Ajax. Esto significa JavaScript puede únicamente acceder a datos del mismo origen desde donde proviene el JavaScript original. Cuando es creado el objeto XMLHttpRequest, este puede únicamente hacer peticiones de vuelta hacia el servidor desde donde provino el script.

Funcionalidades del Proxy Mashup

Estas aplicaciones construirán las capacidades correctas del proxy dentro de la aplicación. Recibe las peticiones desde el código del cliente y obtiene el sitio requerido. Cuando el código del cliente desde ambos sitios son devueltos hacia el usuario, parece provenir desde la aplicación mashup permitiendo evadir las restricciones del mismo origen.

El principal problema es el control de esta URL siendo utilizada por el proxy. Si podemos cambiar el parámetro URL se puede hacer algo. Este parámetro es comúnmente parte de una petición GET o POST, y puede ser abusada ya sea navegando hacia otros sitios; posiblemente aplicaciones intranet no puedan acceder directamente; u obtener JavaScript malicioso para un ataque XSS.

Sitio Cruzado Vía la Etiqueta Script

Una segunda opción más segura luego del proxy en la aplicación es utilizar la etiqueta Script para cargar el contenido. Debido a la etiqueta script por si misma fue cargada como parte del documento fuente, el documento es accedible hacia el código del cliente. Muchos de las librerías más populares disponibles utilizan esta técnica.

La etiqueta script es parte del documento original, y como tal es considerado como parte del mismo origen. Esto significa los scripts del cliente cargados desde la página pueden acceder al contenido como es desde la misma página.

Esto requiere exista la etiqueta script en la página, pero como se está viendo un código existente y no un ataque XSS, esto usualmente no es un problema.

El funcionamiento es; el script ejecutándose en la página carga el contenido desde un servidor. Esto puede ser hecho mediante XMLHTTPRequest o solo haciendo el SRC del script apunte al recurso el cual retorne el dato requerido por el código. El script luego toma la entrada y la carga a través de la función eval(). Esto carga el contenido en memoria como código. Más comúnmente esta técnica es utilizad con objetivo JSON.

Fuentes:

http://www.w3schools.com/xml/ajax_intro.asp
https://www.safaribooksonline.com/library/view/ajax-the-definitive/97805...
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Webinar Informática Forense