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
No hay comentarios:
Publicar un comentario