JSONP劫持


JSONP劫持

概述

引入:因为浏览器为了防止个人信息暴露(cookie等),对浏览器设置了同源策略,这个时候,从不同的域(网站)访问数据需要一个特殊的技术(跨域请求),JSONP应用而生。

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

这样就很容易理解,JSONP劫持,就是攻击者attacker通过构造设计一个网站evil(网站中包含其他网站的JSONP漏洞利用代码,具体为回调函数和script标签)请求用户已注册并登录的网站victim(含有JSONP漏洞,该网站对来自网站evil的请求没有进行安全检查直接返回数据)将数据通过alert弹窗等方式返回到网站victim并显示用户在网站victim的注册信息。

总结:JSONP劫持就是利用scirpt标签的src属性实现跨域请求,获取网站数据的过程。

相关劫持

DNS劫持:指攻击者利用其他攻击手段,篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP,导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址,从而实现非法窃取用户信息或者破坏正常网络服务的目的。

点击劫持:clickjacking,攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击透明的 iframe 页面时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。

攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等;也可以与 XSS 和 CSRF 攻击相结合,突破传统的防御措施,提升漏洞的危害程度。

相关安全事件: Facebook ‘likejacking’ 骗局攻击、Adobe Flash Player 网站漏洞利用、Twitter 的 Don’t click 攻击等,都利用了点击劫持技术。

防御:

服务器端防御—X-FRAME-IPTIONS机制,X-Frame-Options 有三个可选的值:

DENY:浏览器拒绝当前页面加载任何Frame页面;
SAMEORIGIN:Frame页面的地址只能为同源域名下的页面;
ALLOW-FROM:允许frame加载的页面地址。

客户端防御----NoScirpt拓展,利用 NoScript 中 ClearClick 组件能够检测和警告潜在的点击劫持攻击,自动检测页面中可能不安全的页面。

 <iframe src="http://www.evil.com/" width="1000" height="1000" scrolling="no"></iframe>

crolling=“no” : 从不显示滚动条(即使需要)

cookie劫持:获取用户的cookie,通过cookie登录,进一步伪造身份。

<script>alert(doucument.cookie)</script>

JSONP漏洞的利用过程

在这里插入图片描述
目标:获取victim在网站B的敏感信息,比如id,name,email等信息。
前提条件:注册并登录+无安全检查
victim在网站B注册并登录
网站B对来自网站A的JSONP请求没有进行安全检查就直接返回数据

过程:

  1. victim通过浏览器向网站A(恶意构造的网站)发出请求(可以通过邮箱等点击劫持或则DNS劫持让victim进行请求)
  2. 网站A向vitcim返回响应页面,响应页面中包含了JavaScript的回调函数和向网站B请求的script标签,示例代码如下:
    在这里插入图片描述
  3. 用户收到响应,解析JS代码,将回调函数作为参数向网站B发出请求并将回调函数作为参数请求:这里的回调函数为:Callback(),功能是以alert弹窗形式显示用户在网站B的相关注册信息。参数请求是jsonp=Callback,这里的参数和回调函数名一致。
  4. 返回包含用户信息的JSON数据。网站B接收到请求(src="http://B.com/user?jsonp=Callback")后,解析请求的URL,以 JSON 格式生成请求需要的数据,将封装的包含用户信息的JSON数据作为回调函数的参数返回给浏览器,网站B返回的数据实例如下:
Callback({"id":1,"name":"test","email":"test@test.com"})
  1. **网站B弹窗或者向网站A上传用户信息数据。**网站B数据返回后,浏览器则自动执行Callback函数对步骤4返回的JSON格式数据进行处理,通过alert弹窗展示了用户在网站B的注册信息。另外也可将JSON数据回传到网站A的服务器,这样网站A利用网站B的JSONP漏洞便获取到了用户在网站B注册的信息。

JSONP跨域请求的一个例子,前端和后端代码样例,实现一个弹窗功能。
在这里插入图片描述

JSONP漏洞的危害

JSONP属于敏感信息泄露型的漏洞。受害者通过访问evil网站获取受害者的个人信息,如邮箱,姓名,手机等信息,通过这些信息可以进一步实施诈骗行为。

other

  1. token 是网站给每一次 HTTP 连接分配的随机数,用来标识不同的用户身份。
  2. Twitter 蠕虫攻击就是利用点击劫持漏洞来实现CSRF攻击。
  3. 通过 Clickjacking 漏洞,反射型 XSS 可以转化为存储型 XSS 漏洞,只要用户点击触发此漏洞,就可以在用户浏览器上执行任意的JavaScript 代码
  4. 既然是窃取敏感信息,那么敏感信息除了一些 email 手机号 用户名等还有什么呢?没错,甚至可以是 CSRF Token 信息,有时候在 CSRF token 获取不到但是又找不到 XSS 的攻击点的时候不妨考虑一下 jsonp 劫持。
  5. JSONP攻击方式有点类似于CSRF攻击。
  6. 没有跨域限制的标签:link,img,script,iframe。

参考资料

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值