浅谈跨域劫持

本篇文章主要讲解一下跨域攻击:

  • Jsonp劫持
  • Flash跨域劫持
  • CORS跨域资源获取


Jsonp劫持

Jsonp在2016年就出现了,由于造成危害大多就是泄露敏感信息,比如用户信息,token等,远不如SQL注入,命令执行这些漏洞来的彻底,所以总是被人忽视。Jsonp劫持攻击又称为 "JSON Hijacking",攻击过程类似于csrf,只不过csrf只管发送http请求,但是Json-hijack的目的是获取敏感数据。

而Jsonp(JSON with Padding)是json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

Jsonp劫持具体讲解与利用

知道创宇   : JSONP安全攻防技术

Jsonp劫持漏洞挖掘

有很多程序员在写接口的时候都会顺手写个jsonp的接口,可以先开着burp看一下功能点,看看是否有地方用了jsonp

快速寻找Jsonp的接口

开着bp逛一圈,一般有jsonp的数据传输会在mimetype中显示为script,通过排序可以快速得找到

callback的值,就是jsonp回传回来的函数名

然后只要查看传输的数据中是否有敏感信息就可以了

寻找敏感的Json数据

如果jsonp的接口没有敏感信息传输,json数据包中恰好有的话,我们可以尝试一下程序员是否有开发jsonp的格式,大多数程序员喜欢把jsonp的回传参数命名为callback

当然还有其他的可能,贴一份字典,直接用Intruder Fuzz一下试试:

callback=attack cb=attack call=attack jsonp=attack jsonpcallback=attack jsonpcb=attack json=attack jsoncallback=attack jcb=attack

漏洞证明

如果最后爆破成功的接口为

http://www.xxx.com/interface?callback=attack

返回的数据为

attack({"value":1})

使用下面的poc:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jsonp劫持</title> <script src="js/jquery.min.js"></script> </head> <body> <script type="text/javascript"> $.ajax({ url:"http://xxx.com/interface", dataType:"jsonp", jsonp:"callback", jsonpCallback:"attack", success:function (data) { alert(data.value) } }) </script> </body> </html>

jsonp 填写回调参数的名字

jsonpcallback 就是回调参数的值

alert 的地方根据需要更改取值

如果能正常取到值,就说明漏洞存在了

漏洞利用:

这里来看一条请求:

这条请求返回的结果中有手机号(这里我测试的账号没绑定手机),如果我们想要以CSRF交互式攻击的方式获取这个手机号该怎么办?

来看看这条请求有callback,而返回结果是不是类似Javascript中的函数?

Javascript原函数定义如下:

function funName(){}

这里是缺少了函数定义的关键词function和花括号的函数主体部分,只有函数名和函数传参,聪明人已经想到了,这不就相当于是自定义函数被引用了么,而中间那段传参就相当于是一个数组,所以我们可以先用JS自定义好这个函数,然后再引用这个请求,自然就可以获取到数据了。

这时候我们可以来构建一下PoC:

<!-- 引用一段如上请求为JS --> <script>function jsonp2(data){alert(JSON.stringify(data));}</script> <script src="http://gh0st.cn/user/center?callback=jsonp2"></script>

使用正常的账号(绑定过手机号)来测试下:

其他漏洞案例参照乌云:苏宁易购多接口问题可泄露用户姓名、地址、订单商品(jsonp案例)

-------------------------------------------

Flash跨域劫持

首先分享三个参考资料:

1.还有flash跨域漏洞吗?

2.flash跨域数据劫持漏洞

3.flash安全总结

尽管flash宣布不再维护,但是还有许多视频站正在使用flash作为播放器,本为主要来学习flash跨域读取漏洞

flash(swf)以宿主域出发(而不是使用域)判断 是否为跨域请求。

A站上的flash文件 http://www.a.com/vul.swf,被B站 http://www.b.com/exp.htm 拿去使用。此时 vul.swf 请求a站上的资源是不需要提前获取 http://www.a.com/crossdomain.xml 判断是否有权限,反而vul.swf请求b站上的资源却需要提前判断是否有权限。这一点与js不同。
          Flash跨域比较经典了,在做web目录资产整理的时候有时候会发现这样的文件 crossdomain.xml ,文件内容如果是如下的,那么就存在Flash跨域问题,如下内容的意思是支持所有域:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

为什么会如此?具体流程是这样的:

gh0st.cn 有一个SWF文件,这个文件是想要获取 vulkey.cn 的 userinfo 的返回响应主体,SWF首先会看在 vulkey.cn 的服务器目录下有没有 crossdoamin.xml 文件,如果没有就会访问不成功,如果有 crossdoamin.xml ,则会看crossdomain.xml 文件的内容里面是否设置了允许 gh0st.cn 域访问,如果设置允许了,那么 gh0st.cn 的SWF文件就可以成功获取到内容。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml 文件。

当你发现 crossdomain.xml 文件的内容为我如上所示的内容,那么就是存在Flash跨域劫持的。

漏洞案例

在对一个厂商进行测试的时候正好发现了这样的文件:

在这里我需要做两件事:

1.找到一个能获取敏感信息的接口

2.构建PoC

在这里敏感的信息接口以个人中心为例子,PoC使用的是 :

https://github.com/nccgroup/CrossSiteContentHijacking/raw/master/ContentHijacking/objects/ContentHijacking.swf

其他漏洞案例:

wooyun----搜狐焦点旗下搜狐家居可劫持任意账号

------------------------------------------------

CORS跨域资源获取

强烈建议先看一下 : 跨域资源共享CORS学习笔记

漏洞案例

如上图中我在请求的时候加上了请求头 Origin: http://gh0st.cn,而对应的响应包中出现了 Access-Control-Allow-Origin: http://gh0st.cn 这个响应头其实就是访问控制允许,在这里是允许http://gh0st.cn的请求的,所以http://gh0st.cn是可以跨域读取此网址的内容的~在这里我介绍下Origin

OriginReferer很相似,就是将当前的请求参数删除,仅剩下三元组(协议 主机 端口),标准的浏览器,会在每次请求中都带上Origin,至少在跨域操作时肯定携带(例如ajax的操作)。

所以要测试是否存在CORS这个问题就可以参考我上面的操作手法了。

怎么利用呢?在这里我使用了github上的开源项目:https://github.com/nccgroup/CrossSiteContentHijacking,readme.md中有具体的说明,这里我就不一一讲解了,那么已经确认问题了,那就需要进一步的验证。

在这里我找到了一处接口,其响应主体内容是获取用户的真实姓名、身份证、手机号等内容:

/daren/author/query (要注意的是这个请求在抓取的时候是POST请求方式,但并没有请求正文,经过测试请求正文为任意内容即可)

响应报文正文内容:

这里CrossSiteContentHijacking项目我搭建在了本地(127.0.0.1) http://127.0.0.1/CrossSiteContentHijacking/ContentHijackingLoader.html

根据项目所说的操作去进行参数的配置,然后点击 Retrieve Contents 按钮:

测试如下,测试结果是可以跨域读取的:

案例总结

这个问题其实就是对Origin的验证没有控制好,对其进行加强即可。

原文地址:https://www.cnblogs.com/nul1/p/10986640.html

时间: 2024-10-27 15:31:25

浅谈跨域劫持的相关文章

浅谈跨域以WebService对跨域的支持

跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在以前,前端和后端混杂在一起, 比如JavaScript直接调用同系统里面的一个Httphandler,就不存在跨域的问题,但是随着现代的这种多种客户端的流行,比如一个应用通常会有Web端,App端,以及WebApp端,各种客户端通常会使用同一套的后台处理逻辑,即API, 前后端分离的开发策略流行起来

浅谈跨域攻击及预防

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 三.CSRF漏洞现状 CSRF这种

浅谈跨域的N种方式

奇葩方式:谷歌浏览器添加属性 --disable-web-security 邮件chrome浏览器,切换到快捷tab,在目标框追加--disable-web-security,如果目标URL带双引号,则追加--args --disable-web-security,重启浏览器会提示”不受支持的disable-web-security属性“,表示修改已生效. HTML5方式,后台设置相应头 Access-Control-Allow-Origin 常规方式:jsonp,代理proxy

浅谈javascript函数劫持

http://www.xfocus.net/articles/200712/963.html 浅谈javascript函数劫持 文章提交:hkluoluo (luoluonet_at_hotmail.com) by luoluo on 2007-11-30 luoluonet_at_yahoo.cn http://www.ph4nt0m.org 一.概述 javascript函数劫持,也就是老外提到的javascript hijacking技术.最早还是和剑心同学讨论问题时偶然看到的一段代码,大

也谈跨域数据交互解决方案

先来句题外话,最开始Ajax应该是用来特指用XMLHttpRequest传输数据这门技术,但就像最近大家把一切web新技术都归到html5名下一样,现在一切异步获取数据的手段都被人称之为Ajax. 由于JavaScript同源策略的存在,跨域数据交互是个老生常谈的话题了.网上相关文章很多,不过随着时间的推移和浏览器的更新,一部分解决方案已经不适用了,同时也出现了一些更好的方法.抛开纯服务器Proxy这种跟前端没什么关系的方案不说,这里简单总结下常见的其他几种方式. JSONP JSONP是最常见

什么是跨域 &amp; 跨域的3种解决方案

所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)端口号(port) 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石 同源策略会阻止一个域的 javascript 脚本和另外一个域的内容进行交互.例如办公内外网环境,当我们访问外网一个恶意网站的时候,恶意网站就会利用我们的主机向内网的 url 发送 ajax 请求,破坏或盗取数据 一.浏览器的非同源限制以及3种解决思路 非同源限制 无

关于HTML5、Jquery、Phonegap跨域问题的研究

我的问题: 近期研究Phonegap的相关技术,遇到了服务资源访问的跨域.经过尝试使用服务器端的代理,Phonegap打包后不能够访问到相应资源.在搜索引擎的帮助下,找到了Jquery的jsonp的方式,尝试发现已有的服务资源返回格式不支持.接着转战CORS发现同样需要服务器端配置,几番折腾,后来发现Phonegap原来就不存在跨域访问的问题.于是乎,使用JqueryMobile的ajax测试,打包安装应用,原来真的可以访问.虽然比较曲折,但是也算对js的相关跨域有了一定的认识,在此总结纪录,以

关于 HTML5、Jquery、Phonegap 跨域问题的研究

近期研究Phonegap的相关技术,遇到了服务资源访问的跨域.经过尝试使用服务器端的代理,Phonegap打包后不能够访问到相应资源.在搜索引擎的帮助下,找到了Jquery的jsonp的方式,尝试发现已有的服务资源返回格式不支持.接着转战CORS发现同样需要服务器端配置,几番折腾,后来发现Phonegap原来就不存在跨域访问的问题.于是乎,使用JqueryMobile的ajax测试,打包安装应用,原来真的可以访问.虽然比较曲折,但是也算对js的相关跨域有了一定的认识,在此总结纪录,以供有同样需求

《浅谈JavaScript系列》系列技术文章整理收藏

<浅谈JavaScript系列>系列技术文章整理收藏 1浅谈JavaScript中面向对象技术的模拟 2浅谈javascript函数劫持[转自xfocus]第1/3页 3浅谈javascript 面向对象编程 4老鱼 浅谈javascript面向对象编程 5浅谈javascript的数据类型检测 6浅谈Javascript嵌套函数及闭包 7根据一段代码浅谈Javascript闭包 8浅谈JavaScript编程语言的编码规范 9浅谈Javascript面向对象编程 10浅谈JavaScript