当前位置: 首页 > news >正文

【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域

目录

一、同源策略与浏览器扩展

1.1、简介:

1.2、同源策略与Flash

简述:

过程:

1.3、同源策略与Silverlight

1.4、同源策略与Java

简述:

二、同源策略与HTML5

2.1、简述:

2.2、过程:

三、通过代理服务应用程序跨域

3.1、简述:


一、同源策略与浏览器扩展

1.1、简介:

各种广泛部署的浏览器扩展技术全都在域之间实施了某种隔离,这种隔离的实施方式与主要的浏览器同洗策略所采用的基本原则相同。但每种实施方式的一些特点在某些情况下可能会导致跨域攻击

1.2、同源策略与Flash

简述:

1、Flash对象的来源由加载这些对象的URL所在的域决定,而不是由加载这些对象的HTML页面的URL决定。和浏览器中的同源策略一样,默认情况下,将基于协议、主机名和端口号实施隔离。

2、除与同一来源进行完全双向交互外,Flash对象还可以通过浏览器使用URLRequest API提出跨域请求,与纯粹的浏览器技术相比,以这种方式提出请求可以对请求实施更进一步的控制,如能够指定任意的Content-Type消息头及在POST请求主体中发送任意内容。将对这些请求应用浏览器cookie,但默认情况下,提出这些请求的Flash对象并不能读取对跨源请求做出的响应。

3、Flash提供了一种机制,各种域可通过这种机制向来自其他域的Flash对象授予权限,以便于这些对象与它们进行完全双向的交互。通常授予权限的域会在URL/crossdomain.xml处发布一个策略文件,从而完成这一任务。当某个Flash对象尝试提出双向跨域请求时,Flash浏览器扩展将检索所请求的域中的策略文件,并仅在所请求的域授权对提出请求的域的访问权限时,才允许上述请求。

4、需要注意的是Flash对象可能会在应从中下载策略文件的目标服务器上指定一个URL。如果默认位置没有顶级策略文件, Flash浏览器会尝试从该指定的URL处下载策略文件,对此URL的响应必须包含格式有效的策略文件,并必须在Content-Type消息头中指定一种XML或基于文本的MIME类型,才能得到处理。网络上的大多数域都没有在/crossdomain.xml位置发布Flash策略文件,这可能基于以下假设:在没有策略的情况下,默认行为是禁止任何跨域访问。但这一假设忽略了第三方Flash对象指定用于下载策略的定制URL的可能性,如果应用程序包含任何功能可被攻击者用于在应用程序域上的URL中插入任意XML文件, 则该应用程序可能就易于受到这种攻击。


过程:

测试员应始终检查所测试的任何Web应用程序中的/crossdomain.xml文件,即使应用程序本身不使用Flash,但如果向另一个域授予权限,则由该域发布的Flash对象将可以与发布策略的域进行交互

1、如果应用程序允许无限制访问(通过指定<allow-access-from domain="*" />),则任何其他站点均可以执行双向交互,从而控制应用程序用户的会话。这样其他域就可以检索全部数据, 并执行任何用户操作

2、如果应用程序可以访问同一组织使用的子域或其他域,则这些域当然可以与应用程序进行双向交互。意味着攻击者可以利用这些域上的XSS等漏洞来攻破授予权限的域。如杲攻击者能够在任何域上购买基于Flash的广告,就可以使用其部署的Flash对象来攻破授予权限的域。

3、一些策略文件会披露内联网主机名或其他可能对攻击者有用的敏感信息

1.3、同源策略与Silverlight

1、用于Silverlight的同源策略在很大程度上基于由Flash实施的策略,Silverligh对象的来源由加载这些对象的URL所在的域决定,而不是由加载这些对象的HTML页面的URL决定。

2、Silverlight与Flash的一个重要区别在于,Sllverligh不会基于协议或端口隔离来源,因此通过HTTP加载的对象可以与同一域上的HTTPS URL交互

3、silverlight使用自己的跨域策略文件,地址为/clientaccesspolicy.xml

4、针对Flash的跨域文件同样适用于Silverlight,但Silverlight不允许对象为策略文件指定非标准的URL

1.4、同源策略与Java

简述:

1、Java在来源之间实施隔离,它实施隔离的方式在很大程度上基于浏览器的同源策略。和其他浏览器扩展一样,Java apple对象的来源由加载这些对象的URL所在的域决定,而不是由加载这些对象的HTML页面的URL决定。

2、Java同源策略的一个重要不同在于:某些情况下,与来源域共享IP地址的其他域将被视为同源,在某些共享主机的情况下,这可能会导致一定程度的跨域交互。

3、Java并不限制一个域发布允许与其他域进行交互的策略



二、同源策略与HTML5

2.1、简述:

1、最初的设计XMLHttpRequest仅允许向与调用页面的来源相同的来源提出请求。随着HTML5的出现,这一技术已得以修改,从而可以与其他域进行双向交互, 前提是被访问的域为交互提供权限。


2、跨域交互的权限通过一系列新的HTTP消息头来实现,如果某个脚本尝试使用XMLHttpRequest
提出跨域请求,处理该请求的方式将因请求的具体内容而异

A、对于“常规“ 请求,即可以使用现有的HTML结构跨域生成的请求,浏览器将提出请求,并检查生成的响应消息头,以确定是否应允许调用脚本访问该请求的响应

B、其他无法使用现有的HTML生成的请求,如那些使用非标准HTTP方法或Content-Type、或添加了定制HTTP消息头的请求,将进行不同处理。浏览器会首先向目标URL提出一个OPTIONS请求, 然后检查响应消息头,以确定是否应允许那些请求


3、在上述两种情况下,浏览器都会添加一个Origin消息头(Origin.:http:/xxx.com),用于指示尝试提出跨域请求的域。


4、要确定可能执行双向交互的域,服务器的响应中应包含Access-control-Allow-Origin消息头,其中包括以逗号分隔的允许的域列表和通配符

Access-control-Allow-Origin,*


5、在第二种情况下, 如果已使用OPTIONS请求预先验证了跨域请求,则可以使用以下消息头来指示尝试提出的请求的具体内容

Access-control-Request-Method:PUT

Access-control-Request-Headers:X-PINGOTHER


6、为响应OPTIONS请求,服务器可以使用以下消息头来指定允许提出的跨域请求的类型

Access-control-Allow-Origin:http://xxx.com

Access-control-Request-Method: POST,GET,OPTIONS

Access-control-Request-Headers:X-PINGOTHER

Access-control-Max-Age: 172800

2.2、过程:

1、要测试应用程序如何使用XMLHttpRequest处理跨域请求,应尝试添加一个用于指定其他域的Origin消息头, 并检查返回的任何Access-Control消息头,允许任何域或指定的其他域进行双向访问导致的安全隐患与上述Flash跨域策略导致的安全隐患相同.

2、如果有任何跨域访问受到支持,则还应使用OPTIONS请求来了解到底允许哪些消息头和其他请求


除可能允许外部域进行双向交互外,XMLHttpRequest的新特性还可能导致利用Web应用程序的特定功能的新型攻击, 或新型常规攻击。


一些应用程序使用XMLHttpRequest向在URL参数中,或在片断标识符后指定的文件提出异步请求,检索到的文件动态加载到当前页面的<div>中,由于以前不可能使用XMLHttpRequest提出跨域请求,因此也没有必要验证所请求的项目是否在应用程序自身的域上。利用新版本的XMLHttpRequest,攻击者可以在其控制的域上指定一个URL,从而对应用程序用户实施客户端远程文件包含攻击


更常见的是攻击者可以借助XMLHttpRequest的新特性利用恶意或被攻破的网站,通过访问网站用户的浏览器来实施攻击,即使这时跨域访问已遭到禁止,跨域端口扫描表明,使用XMLHttpRequest尝试向任意主机和端口提出请求,并观察响应的时间差异,可以推断所请求的端口是否已打开 、关闭或被过滤,与传统的生成跨域请求的方法相比 ,使用XMLHttpRequest可以更快速地实施分布式拒绝服务攻击。如果目标应用程序禁止跨域访问,则需要在URL参数中增加一个值,以确保每个请求针对不同的URL,因此实际上由浏览器提出。



三、通过代理服务应用程序跨域

3.1、简述:

1、一些公开发布的Web应用程序提供有效的代理服务功能 ,允许从不同域检索内容,但服务于代理Web应用程序中的用户,Google翻译就是一个典型的例子,它可以请求指定的外部URl并返回其内容


2、如果两个不同的外部域均通过GT应用程序访问,在这种情况下,浏览器看来,来自每个外部域的内容将驻留在GT域中,因为这是浏览器从中检索内容的域。虽然两组内容均驻留在同一个域中, 它们之间可以进行双向交互(如果这种交互也通过GT域实施的话)。


3、如果用户登录某个外部应用程序,然后通过GT访问该应用程序,则该用户的浏览器会正确地将GT视为其他域。因此用户用于外部应用程序的cookie将不会通过GT在请求中发送,并且也不可能进行任何其他交互。同样,恶意网站也无法利用GT轻松攻破其他应用程序上的用户会话


4、但网站可以利用GT等代理服务行为与位于其他域上的应用程序的公开、未授权的区域进行双向交互。Jikto就是这样的一种攻击,Jikto是一个概念验证蠕虫,通过在Web应用程序中查找并利用永久性XSS漏洞,从而在应用程序之间进行传播,Jikto代码的基本运行机制如下:

A、初次运行时, 该脚本会检查其是否在GT域中运行。如果不是,它会通过GT域加载当前URL,从而将自己传送到GT域中

B、该脚本通过GT请求外部域中的内容,由于该脚本自身在GT域中运行,它可以通过GT与任何其他域上的公开内容进行双向交互

C、该脚本以JavaScript实现一个基本的Web扫描程序,在外部域中探查永久性XSS漏洞,公告牌等可以公开访问的功能中可能存在这类漏泪

D、确定适当的漏洞后,该脚本将利用此漏洞将它的一个副本加载到外部域中

E、其他用户访问被攻破的外部域时,该脚本开始执行,并且这个过程会不断自动重复


5、Jikto蠕虫会设法利用XSS漏洞来传播自己。但这种通过代理服务合并域的基本攻击技巧并不取决于所针对的单个外部应用程序中的任何漏洞,也无法进行有效防御,它还是一种有用的攻击技巧。也可以通过它来了解如何在非常规情况下应用同源策略

相关文章:

  • 大数据——Spark-SQL自定义函数UDF、UDAF、UDTF
  • 浅浅的 Cmake
  • 【JavaScript 进阶教程】函数的定义 调用 及 this指向问题
  • 14天刷爆LeetCode算法学习计划——Day02双指针(1)
  • 存储过程浅入深出
  • 一零二四、pyspark在jupyter中的完美运行
  • Nginx监控模块
  • mybatis的test坑(不等于‘‘ 且 不等于0)
  • 使用IDEA快速部署到Docker云端
  • 全志T507 UART复用方法-飞凌嵌入式知识库
  • 【机器学习】过拟合和欠拟合怎么判断,如何解决?(面试回答)
  • 2022年数模国赛冲刺之模型复习2
  • 程序包lombok不存在,纠正网上错误答案
  • css知识点总结
  • 【Rust日报】2022-08-29 RLS 谢幕
  • [译]Python中的类属性与实例属性的区别
  • EOS是什么
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JAVA并发编程--1.基础概念
  • java小心机(3)| 浅析finalize()
  • js
  • scrapy学习之路4(itemloder的使用)
  • Vue2 SSR 的优化之旅
  • XML已死 ?
  • 电商搜索引擎的架构设计和性能优化
  • 官方解决所有 npm 全局安装权限问题
  • 基于HAProxy的高性能缓存服务器nuster
  • 马上搞懂 GeoJSON
  • 使用 Docker 部署 Spring Boot项目
  • 用quicker-worker.js轻松跑一个大数据遍历
  • - 转 Ext2.0 form使用实例
  • Java数据解析之JSON
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #微信小程序:微信小程序常见的配置传旨
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (C语言)fgets与fputs函数详解
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)80c52学习之旅-起始篇
  • (译)计算距离、方位和更多经纬度之间的点
  • (原)本想说脏话,奈何已放下
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • ... 是什么 ?... 有什么用处?
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Remoting学习笔记(三)信道
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net反编译工具