SAWDB MSI Actividad SanchezCruzDamianAugusto
SAWDB MSI Actividad SanchezCruzDamianAugusto
SAWDB MSI Actividad SanchezCruzDamianAugusto
La correspondencia relacionada con este trabajo debe ser dirigida a Damián Augusto
Sánchez Cruz,
Contacto: [email protected]
Encabezado: SEGURIDAD EN AJAX
2
Índice General
Introduccion .........................................................................................................................................3
Desarrollo .............................................................................................................................................4
Introducción
El término AJAX se presentó por primera vez en el artículo "Ajax: A New Approach to Web
Applications" publicado por Jesse James Garrett el 18 de Febrero de 2005.
Ajax realiza la carga de una página Web con los scripts que se comunican de manera asíncrona
con el servidor para adquirir los datos y poblar la pagina sin tener que cargar nuevamente la
página.
Los beneficios de la tecnología Ajax es la rapidez en carga de paginas web, interfaces de usuario
gráficamente ricas, menor consumo de ancho de banda, asi como muchas otras tecnologías
presenta también desafíos de seguridad en este trabajo abordaremos algunos y la forma de
mitigarlos.
Encabezado: SEGURIDAD EN AJAX
4
Arquitectura AJAX
AJAX es una mezcla de 4 tecnologías, Java Script, XML, el objeto xmlHttpRequest y el Modelo de
Objetos de Documento (DOM) en la cual su fortaleza reside en que cuando se realiza una petición
al servidor web Ajax se realiza procesamiento local por medio de la implementación de un
pequeño motor, en el medio del cliente y el servidor (el lado del cliente (side-client) y la del
servidor web (web-server)), realizando la mayor parte del trabajo posible del lado del cliente
mejorando los tiempos de respuesta, consumiendo recursos de este(procesamiento) de esta
manera mejora la experiencia del usuario, permite crear interfaces de usuario más ricas
gráficamente y menor consumo de ancho de banda.
Ajax realiza la carga de una página Web con los scripts que se comunican de manera asíncrona
con el servidor para adquirir los datos y poblar la página sin tener que cargar nuevamente la
página.
Política del mismo origen – soap: Es una política definida para prevenir que un documento
o script cargado en un "origen" pueda cargarse o modificar propiedades del documento desde un
"origen" diferente como acceder al DOM, datos y cookies de otra página y que pueda utilizar AJAX
para realizar peticiones utilizando las cookies y credenciales que el usuario tiene activa.
Las páginas que se ejecutan en un sandbox no pueden escribir o leer recursos de otros orígenes,
esta medida protege que acciones maliciosas de otras páginas comprometan la seguridad.
El origen no coincide si alguno de los campos dominio, protocolo o puerto no se permite el acceso.
Origen Heredado
Las URLs heredan el origen desde el documento que cargó (about:blank y javascript: ), ya que la
URL por sí misma no proporciona ninguna información sobre el origen. Las data: URLs obtienen
un nuevo y vacío contexto de seguridad.
Las etiquetas <iframe> se mostrará sin problemas, pero se limita su acceso al contenido de la
página padre o de otros iframes.
Vulnerabilidades
El ataque solo es posible cuando la forma de interpretar el XML permite incluir entidades
externas debido a su mala configuración. Puede llevar también a la lectura de archivos
locales, descubrimiento y mapeo de red interna, denegaciones de servicio, etc
Encabezado: SEGURIDAD EN AJAX
6
Ejemplo: se observa que se envia una etiqueta de texto mediante el método ‘GET’ a un
intérprete de XML
Reflejada y almacenada.
pasar variables entre dos páginas, con este ataque se pueden realizar el robo de
cookies para luego suplantar la identidad, una técnica muy usada es la de enviar
en páginas mal construidas que permiten adicionar código html posibilitando que
XSS DOM: Para explotar esta vulnerabilidad los datos se adquieren desde un
parámetro de URL u otro valor dentro del explorador, y se escriben en la página con
código del cliente, el dato adquirido se envían en el contenido dinámico que se envía
a un usuario web sin que se validen este se ejecuta como parte de la creación de
DOM (Modelo de objetos de documento), cada vez que el explorador de la víctima
actualice la página HTML.
Encabezado: SEGURIDAD EN AJAX
7
El código de este ejemplo funciona correctamente si eid contiene solo texto alfanumérico
estándar. Si eid tiene un valor que incluye caracteres meta o código fuente, el explorador
web ejecutará el código al tiempo que muestra la respuesta HTTP.
- Los datos se leen directamente de la solicitud HTTP y se reflejan en la respuesta a la
aplicación almacena datos peligrosos en una base de datos.
JSONP: Permite soportar llamadas desde otros dominios por medio de servicios
que expone el servidor para generar código con una determinada sintaxis usando
etiquetas <script> que permiten establecer el origen de scripts externos (atributo
SRC) en dominios diferentes al actual, no estando sujetas por tanto a las
restricciones impuestas por el aislamiento de dominio.
Estas llamadas posibilitan accesos no autorizados desde otros dominios dado que el
browser representa el código HTML y luego ejecuta el javascript potencialmente malicioso
en el controler de carga facilitando el robo de cookies o la generación de una pantalla de
inicio de sesión falsa para phishing dado que el dominio es uno conocido el usuario muy
difícilmente detecta el ataque.
Esta vulnerabilidad se produce por mala validación de datos de entrada o salida. Se puede
generar de forma directa (insertar código HTML peligroso en páginas mal configuradas;
Encabezado: SEGURIDAD EN AJAX
8
incluyendo así etiquetas como <script> o <iframe>), Directa (consiste en modificar valores
que la aplicación web utiliza para pasar variables entre dos págin.as).
Defensas
Cors: (Cross origen resource charing) permite realizar carga de datos de otros
dominios. Para usar CORS se debe configurar el servidor, CORS no es soportado en los
navegadores antiguos.
Ejemplo: Si tu aplicación está en www.example.com y quieres obtener datos de
www.example2.com, el host example2 permitirá peticiones de example añadiendo una
cabecera:
Access-Control-Allow-Origin: http://www.example.com
Permitirá hacer peticiones a cualquier dominio adicionando la cabecera:
Access-Control-Allow-Origin:
Access-Control-Allow-Origin se puede añadir a un solo recurso o a todo el dominio.
No usar en lo posible métodos Get: Usar el método Post que permite ocultar los
valores del formulario hacia el script de destino.
Implementar un identificador de sesión Token: El script debe poder validar un
identificador de la sesión y que la información proviene de un sitio legitimo o del
formulario. Para ello se usa un token o código encriptado que se envía en un campo oculto
en el formulario para que el script valide.
Comprobación del Sistema de Autenticación: Validar los procedimientos usados para verificar la
identidad digital del remitente de una comunicación.
Gestión de Sesiones: En la gestión de sesiones se evalúa todos los controles que se realizan sobre
el usuario, desde la autenticación hasta la salida de la aplicación.
Pruebas de Autorización: Aquí se valida los procesos usados para conceder el acceso a los
recursos del sistema solo a los autorizados. Las pruebas de Autorización se basan en comprender
como funciona el proceso de autorización, y usar esa información para saltarse el mecanismo de
autorización.
Pruebas de Lógica de Negocio: Validar si la secuencia lógica desarrollada para las funcionalidades
de la aplicación como el mecanismo de autenticación, que pasa si se intenta saltar del paso 1 al
3?.
Pruebas de Validación de Datos: Una de las fallas más comunes en la seguridad es la no validación
adecuada de los datos de entrada o salida desde y hacia el cliente. Estos errores de programación
posibilitan la inyección de código en la página y ataques de desbordamiento de búfer entre otros.
Pruebas de Servicios WEB: Los servicios web y SOA (Arquitectura Orientada a Servicios) están
creciendo ampliamente permitiendo que los negocios y aplicaciones interoperen y crezcan a un
ritmo sin precedentes. Los servicios web están expuestos a la red como cualquier otro servicio.
Pruebas de AJAX: Este tipo de aplicaciones al procesar peticiones tanto en el cliente como en el
servidor se amplía la superficie de ataque.
Encabezado: SEGURIDAD EN AJAX
11
Conclusiones
3. Realizar una adecuada validación de la entrada y salida de datos dado que es la ventana
de ataques, la validación de datos debe ser realizada tanto del lado del cliente como del
servidor.
http://notasjs.blogspot.com/2013/09/politica-del-mismo-origen-same-origin.html
https://developer.mozilla.org/es/docs/Web/Security/Same-origin_politica
https://es.wikipedia.org/wiki/Pol%C3%ADtica_del_mismo_origen
http://esjeblog.blogspot.com/2006/06/arquitectura-ajax.html
https://developer.mozilla.org/es/docs/Web/Guide/AJAX
https://backtrackacademy.com/articulo/explorando-la-vulnerabilidad-xxe-xml-external-entity
https://www.welivesecurity.com/la-es/2015/04/29/vulnerabilidad-xss-cross-site-scripting-sitios-
web/
https://blog.sucuri.net/espanol/2015/05/jetpack-y-twentyfifteen-vulnerable-a-dom-based-
xss.html
https://vulncat.fortify.com/en/detail?id=desc.structural.java.javascript_hijacking_vulnerable_framewor
k