jueves, 7 de abril de 2011

Web 2.0

Saludos Mundo Libre.

Para poder desfasar una web 2.0 como:

Facebook, Twitter, YouTube, LinkedIn, 4chan y Chatroulette.

Para que entendamos las tecnologías Web 2.0 en que se basan estos medios ofrecen muchos beneficios, pero también están expuestas a vulnerabilidades de seguridad específicas. La complejidad de las aplicaciones Web 2.0 puede, por ejemplo, conllevar código imperfecto que genera brechas de aplicaciones, una entrada especialmente útil para ataques de inyección SQL o de scripting de sitios cruzados (XSS)


Introducción

AJAX y servicios web interactivos forman la columna vertebral de la "web 2.0" aplicaciones. Esta transformación tecnológica trae nuevos desafíos para los profesionales de la seguridad.

Este artículo analiza algunos de los métodos, herramientas y trucos para diseccionar las aplicaciones web 2.0 (incluido el Ajax) y descubrir agujeros de seguridad con Firefox y sus extensiones. Los objetivos clave de aprendizaje de este artículo para entender el:

aplicación web 2.0 la arquitectura y su preocupación por la seguridad.
retos de hacking como descubrir las llamadas ocultas, las cuestiones de rastreo, y el descubrimiento Ajax lado de la lógica.
descubrimiento de XHR llamadas con la herramienta Firebug.
simulación de la automatización navegador evento con el plugin de Chickenfoot.
la depuración de aplicaciones, desde el punto de vista de seguridad, utilizando el depurador de Firebug.
enfoque metódico para la detección de la vulnerabilidad.

Aplicación Web 2.0 vista

El recién acuñado término "web 2.0"se refiere a la próxima generación de aplicaciones web, que lógicamente han evolucionado con la adopción de nuevos vectores tecnológicos. Servicios Web basadas en XML que se ejecutan en SOAP, XML-RPC y REST son empoderar a los componentes del lado del servidor. Las nuevas aplicaciones ofrecen potentes interfaces de usuario final mediante la utilización de Ajax y de aplicaciones de Internet ricas (Flash) componentes.

Este cambio tecnológico tiene un impacto en la estructura general de las aplicaciones web y el mecanismo de comunicación entre el cliente y el servidor. Al mismo tiempo, este cambio ha abierto nuevas preocupaciones de seguridad [ref 1] y desafíos.

Nuevos gusanos como Yamanner, Samy y Spaceflash están explotando "del lado del cliente" marcos de AJAX, ofreciendo nuevas vías de ataque y poner en peligro información confidencial.



Como se muestra en la Figura 1, el navegador de procesos de la izquierda se puede dividir en las siguientes capas:

capa de presentación - HTML / CSS proporciona la apariencia general de la aplicación en la ventana del navegador.
Lógica y Procesos - JavaScript que se ejecuta en el navegador permite a las aplicaciones para ejecutar la lógica de negocio y comunicación. componentes AJAX impulsado por residir en esta capa.
Transporte - XMLHttpRequest (XHR) [ref 2]. Este objeto permite a las capacidades de comunicación asíncrona y el mecanismo de intercambio XML entre el cliente y el servidor a través de HTTP (S).

Los componentes del lado del servidor a la derecha de la figura 1, que normalmente residen en la infraestructura corporativa detrás de un firewall puede incluir desplegado los servicios web, junto con los tradicionales recursos de aplicaciones web. Un recurso Ajax se ejecuta en el navegador puede hablar directamente a los servicios web basados ​​en XML y el intercambio de información sin actualizar la página. Esta comunicación todo está oculto a los usuarios finales, es decir, el usuario final no se "siente" todo vuelve a dirigir. El uso de una "actualización" y "vuelve a dirigir", fueron una parte integral de la primera generación de la lógica de aplicaciones web. En el marco de la web 2.0 que se reducen considerablemente mediante la aplicación de Ajax.
Web 2.0 retos evaluación

En este marco asincrónica, la aplicación no tiene muchas "actualiza" y "vuelve a dirigir". Como resultado, muchos recursos interesantes de servidor que puede ser aprovechado por un atacante se ocultan. Los siguientes son tres retos importantes para la gente de seguridad tratando de entender las aplicaciones web 2.0:



Descubrir las llamadas ocultas - Es imperativo que una identificar las llamadas XHR impulsado generados por la página cargada en el navegador. Se utiliza JavaScript a través de HTTP (S) para hacer estas llamadas a los servidores back-end.
desafíos rastreo - Las aplicaciones tradicionales de orugas no en dos frentes principales: uno, para replicar el comportamiento del navegador y dos, para identificar los principales recursos de servidor en el proceso. Si un recurso es alcanzado por un objeto XHR a través de JavaScript, entonces es más que probable que la aplicación de rastreo no puede recogerlo en absoluto.
descubrimiento de la lógica - las aplicaciones web de hoy se cargan con JavaScript y es difícil aislar la lógica de un evento en particular. Cada página HTML puede cargar tres o cuatro JavaScript recursos del servidor. Cada uno de estos archivos puede tener muchas funciones, pero el evento se puede utilizar sólo una parte muy pequeña de todos estos archivos para su lógica de ejecución.

Tenemos que investigar y determinar la metodología y las herramientas para superar estos obstáculos durante una evaluación de la aplicación web. A los efectos de este artículo, vamos a utilizar Firefox como nuestro navegador y tratar de aprovechar algunos de sus plugins para combatir los problemas mencionados.
Descubrir las llamadas ocultas

Aplicaciones Web 2.0 puede cargar una página desde el servidor, pero pueden hacer varias llamadas objeto XHR en la construcción de la página final. Estas llamadas pueden extraer contenido o JavaScript desde el servidor de forma asincrónica. En tal escenario, el desafío consiste en determinar todas las llamadas XHR y los recursos sacados del servidor. Esta es una información que podría ayudar en la identificación de todos los recursos posibles y las vulnerabilidades asociadas. Comencemos con un ejemplo sencillo.

Supongamos que se puede acceder a las noticias de negocios de hoy, visitando un portal de noticias simple se encuentra en:

http://example.com/news.aspx

La página en el navegador se asemejaría a la captura de pantalla se muestra a continuación en la Figura 2.



Al ser una aplicación web 2.0, las llamadas Ajax se realizan en el servidor mediante un objeto XHR. Podemos determinar estas llamadas utilizando una herramienta conocida como Firebug [ref 3]. Firebug es un plug-in para el navegador Firefox y tiene la capacidad de identificar las llamadas XHR objeto.

Antes de navegar por una página con el plugin, garantizar la posibilidad de interceptar llamadas XHR se ha seleccionado, como se muestra en la Figura 3.



Figura 3. Marco Firebug para interceptar llamadas XMLHttpRequest.

Con la opción de Firebug para interceptar llamadas XMLHttpRequest habilitado, que ver la misma página para descubrir todos los objetos XHR las llamadas realizadas por esta página en particular en el servidor. Este intercambio se muestra en la Figura 4.



Figura 4. La captura de llamadas Ajax.

Podemos ver varias peticiones hechas por el explorador mediante XHR. Se ha cargado el dojo marco de AJAX desde el servidor al mismo tiempo hacer una llamada a un recurso en el servidor para buscar los artículos de noticias.

getnews.aspx http://example.com/? fecha = 09262006

Si poniendo especial énfasis en el código, podemos ver la siguiente función en JavaScript:

function getNews() { var http; http = new XMLHttpRequest(); http.open("GET", " getnews.aspx?date=09262006", true); http.onreadystatechange = function() { if (http.readyState == 4) { var response = http.responseText; document.getElementById('result').innerHTML = response; } } http.send(null); }


El código anterior hace una llamada asincrónica al servidor web back-end y pide la getnews.aspx recursos? fecha = 09262006. El contenido de esta página se coloca en el lugar Identificación del "resultado" en la página HTML resultante. Esto es claramente una llamada Ajax utilizando el objeto XHR.

Mediante el análisis de la aplicación en este formato, podemos identificar vulnerables direcciones URL internas, cadenas de consulta y solicitudes POST así. Por ejemplo, utilizando de nuevo el caso anterior, el parámetro "fecha" es vulnerable a un ataque de inyección SQL.


Rastreo de retos y de simulación navegador

Una herramienta de reconocimiento importante a la hora de realizar la evaluación de la aplicación web es un rastreador web. Un web crawler rastrea todas las páginas y recoge todos los HREF (enlaces). Pero lo que si estos puntos HREF a una función JavaScript que hace llamadas Ajax con el objeto XHR? El rastreador web, puede pasar por alto esta información en conjunto.

En muchos casos se hace muy difícil de simular este entorno. Por ejemplo, aquí hay un conjunto de enlaces simples:


a href="#" onclick="getMe(); return false;">go1/a

a href="/hi.html">go2/a

a href="#" onclick="getMe(); return false;">go3/a


El "GO1" vínculo al hacer clic se ejecutará el getme () función. El código de getme () es como se muestra a continuación. Tenga en cuenta que esta función puede ser implementado en un archivo completamente independiente.

function getMe() { var http; http = new XMLHttpRequest(); http.open("GET", "hi.html", true); http.onreadystatechange = function() { if (http.readyState == 4) { var response = http.responseText; document.getElementById('result').innerHTML = response; } } http.send(null); }

El código anterior hace que una simple llamada Ajax al recurso hi.html en el servidor.

¿Es posible simular esta automatización, haga clic en el uso? ¡Sí! Aquí es un método mediante el plug-in de Firefox Chickenfoot [ref 4] que proporciona las API basados ​​en JavaScript y se extiende la interfaz programable para el navegador.

Al utilizar el plugin de Chickenfoot, puede escribir simple JavaScript para automatizar el comportamiento del navegador. Con esta metodología, las tareas simples, tales como páginas web, el rastreo se puede automatizar con facilidad. Por ejemplo, la secuencia de comandos simples siguiente ", haga clic en" todos los anclajes con los eventos onClick. La ventaja de este plug-in más de rastreadores web tradicionales es distinto: cada uno de estos eventos onClick hace backend llamadas AJAX XHR basado en que pueden ser ignorados por los rastreadores ya que los rastreadores intenta analizar JavaScript y recoger los posibles vínculos, pero no puede sustituir a los acontecimientos reales onClick.

l=find('link') for(i=0;i


Figura 5. Simulación de onClick llamada AJAX con Chickenfoot.

De esta manera, uno puede crear JavaScript y evaluar las aplicaciones basadas en AJAX desde el navegador Firefox. Hay varias llamadas a la API [ref 5] que se puede utilizar en el plugin de Chickenfoot. Uno muy útil es el "buscar" comando para crear una utilidad de rastreo.


Lógica de descubrimiento y aplicaciones de disección

Para analizar las solicitudes de cliente basado en Ajax, uno tiene que pasar por cada uno de los eventos con mucho cuidado a fin de determinar la lógica de proceso. Una forma de determinar la lógica de todo es caminar a través de cada línea de código. A menudo, cada uno de estos eventos llama proceso de unas pocas funciones a partir de archivos específicos. Por lo tanto, es necesario utilizar una técnica para recorrer el código en cuestión que se ejecuta en un navegador.

Hay algunos depuradores de gran alcance para JavaScript que se puede utilizar para alcanzar el citado objetivo. Firebug es una de ellas. Otra es Venkman [ref 6]. Vamos a usar Firebug de nuevo en nuestro ejemplo.

Tomemos un ejemplo sencillo de un proceso de inicio de sesión. La página login.html acepta un nombre de usuario y contraseña del usuario final, como se muestra en la Figura 6. Utilice la opción "inspeccionar " las características de Firebug para determinar la propiedad del formulario.


Después de la inspección de la propiedad de formulario, es evidente que se hace una llamada a la "autenticación" de funciones. Ahora podemos ir a la función de depuración de Firebug como se ilustra en la Figura 7 y aislar a la lógica interna de un evento en particular.




Figura 7. Depurar con Firebug.

Todas las dependencias de JavaScript de esta página en particular se puede ver. Las llamadas se realizan a la ajaxlib.js y scripts validation.js. Estas dos secuencias de comandos debe tener varias funciones. Se puede deducir que el proceso de inicio de sesión utiliza algunas de estas funciones. Podemos utilizar un "punto de ruptura" con el paso a través de toda la aplicación. Una vez que un punto de interrupción se establece, que la información puede credenciales de entrada, haga clic en el botón "Enviar" y controlar el proceso de ejecución. En nuestro ejemplo, hemos establecido un punto de ruptura en la "autenticación" la función como se muestra en la Figura 8.



Figura 8. Establecer un punto de interrupción y control de proceso de ejecución.

Ahora paso a paso el proceso de depuración, haga clic en el "paso" botón, que se destacó en la Figura 8. Se mueve la ejecución de JavaScript a otra función, userval, con domicilio en el archivo validation.js como se muestra en la Figura 9.



Figura 9. Mover a la página de guión validation.js.

La captura de pantalla anterior muestra el patrón de expresión regular utilizada para validar el campo nombre de usuario. Una vez que la validación se lleva a cabo la ejecución se mueve a otra función callGetMethod como se muestra en la Figura 10.



Figura 10. Hacer una llamada Ajax.

Por último, al final de la secuencia de ejecución, se puede observar la llamada a los servicios de back-end web hechas por el objeto XHR. Esto se muestra en la Figura 11.



Figura 11. Los servicios Web llamada en la consola de Firebug.

Aquí hemos identificado la ubicación de recursos para los servicios web back-end:

http://example.com/2/auth/ws/login.asmx/getSecurityToken?username=amish&password=amish

El recurso anterior es claramente algunos de los servicios Web que se ejecutan en el marco de. NET. Este proceso de disección de todo sacó a relucir un detalle interesante: hemos encontrado una rutina de validación de usuario que pueden ser anuladas fácilmente. Es una amenaza para la seguridad de la aplicación web.

Tomando nuestra nueva evaluación, que ahora pueden acceder al servicio web, y sus extremos mediante un archivo WSDL y fuerza bruta directamente el servicio. Podemos lanzar varios ataques de inyección diferentes - SQL o XPath - con herramientas como wsChess [ref 7].

En este caso particular, la aplicación es vulnerable a una inyección XPath. La metodología para la evaluación de los servicios web en general es diferente y está fuera del alcance de este artículo. Sin embargo esta técnica tutorial ayuda a identificar a varios ataques del lado del cliente como XSS, los ataques de manipulación de DOM, la seguridad del lado del cliente sin pasar por el control, la ejecución de código malicioso Ajax, y así sucesivamente.
Conclusión

Arquitectura orientada a servicios (SOA), el Ajax, Rich Internet Applications (RIA) y servicios web son componentes críticos a la siguiente generación de aplicaciones web. Para mantener el ritmo de estas tecnologías y luchar contra la próxima generación de desafíos de seguridad de aplicaciones, es necesario diseñar y desarrollar diferentes metodologías y herramientas. Una de las metodologías eficientes de evaluación de las solicitudes es de forma efectiva mediante un navegador.

En este artículo hemos visto tres técnicas para evaluar las aplicaciones web 2.0. Mediante el uso de estas metodologías es posible identificar y aislar varias vulnerabilidades relacionadas con el Ajax. Explorador de secuencias de comandos de automatización nos puede ayudar a perfilar web de activos y descubrimiento, que a su vez puede ayudar en la identificación de los recursos vulnerables del lado del servidor.

aplicaciones de la próxima generación de utilizar JavaScript ampliamente. herramientas de suave depuración son nuestros caballeros de brillante armadura. Las técnicas en general comprendidas en este artículo es un buen punto de partida para las evaluaciones de la web 2.0 con Firefox.
Referencias

[Ref 1] Ajax de seguridad,
http://www.securityfocus.com/infocus/1868
[Ref 2] XHR especificación de objetos, http://www.w3.org/TR/XMLHttpRequest/
[Ref 3] descargar Firebug, https: / / addons.mozilla.org/firefox/1843 /: el uso de Firebug, http://www.joehewitt.com/software/firebug/docs.php
[Ref 4] Chickenfoot de inicio rápido, http://groups.csail.mit.edu/uid/chickenfoot/quickstart.html
[Ref 5] Chickenfoot referencia de la API - http://groups.csail.mit.edu/uid/chickenfoot/api.html
[Ref 6] tutorial Venkman, http://www.mozilla.org/projects/venkman/venkman-walkthrough.html
[Ref 7] wsChess, http://net-square.com/wschess
Acerca del autor

Shreeraj Shah, BE, MSCS, MBA, es el fundador de la Red Square y lleva consultoría Red Square, la formación y las actividades de I + D. Anteriormente trabajó con Foundstone, Chase Manhattan Bank y de IBM. También es el autor de Hacking Web Services (Thomson) y co-autor de la Web Hacking: Ataques y Defensa (Addison-Wesley). Además, ha publicado varios avisos, herramientas y documentos técnicos, y ha presentado en numerosas conferencias como RSA, AusCERT, InfosecWorld (Misti), HackInTheBox, Blackhat, OSCON, Bellua, Syscan, etc Usted puede leer su blog en http: / / shreeraj.blogspot.com /.
Reimpresiones y traducciones

Las solicitudes de separatas o de traducción requieren la aprobación previa de SecurityFocus.

Traduccion Dellcom1a.

Saludos Mundo libre.

No hay comentarios:

Publicar un comentario