JSONP
#0x00
写在前面:
今天听表哥讲bypass CSRF 前面还顺风顺水的 but后面涉及到 JSONP 和 Cors 突然就大写的蒙蔽了
that上课没听懂怎么办????,当然要课下花时间去补!!! 那么let‘s go.
#0X01 JSONP
什么是JSONP?
JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。
实现的基本原理:利用了 HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。
JSONP 在调用时会用到 callback 函数 // 回调函数!! (圈起来划重点)
跨域请求资源
刚才提到的jsonp是为了跨域请求资源而产生的,那么什么是跨域请求资源呢?
这里不得不介绍一下另外一个新名词:同源策略
同源策略
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。
举个栗子
a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的
同源策略的几个关键点!
同源是指:域名,协议,端口相同
现在所有支持 JavaScript 的浏览器都会使用这个策略
总结 : 非同源即跨域;
跨域的方式:jsonp,CORS
讲了半天终于进入主题了,what is jsonp 劫持?
⭐JSONP劫持⭐
JSON 劫持又为“ JSON Hijacking ” 可归属于 CSRF 攻击范畴
1. 那么jsonp劫持可以用来干嘛呢??(目的)
-获取敏感数据。
web应用会把一些敏感数据以json的形式返回到前端
2. jsonp劫持是怎样的一个过程呢??
首先让受害者以登陆的状态 点击 攻击者提前构造好的恶意的 JSONP 调用页面 👉 get到敏感信息
实际上就是一次CSRF,这里可以看成使用了JSONP劫持的CSRF
乌云案例: http://www.anquan.us/static/bugs/wooyun-2012-011284.html
3. JSON Hijacking 攻击代码:
1
2
3
4
5
6
|
<script> function wooyun(v){ alert(v.username); } </script> <script src= "http://js.login.360.cn/?o=sso&m=info&func=wooyun" ></script> |
4. bypass点 //或理解为如何防御
- Referer 过滤 (正则)不严谨
- 空 Referer
- 随机 token
http://r.qzone.qq.com/cgi-bin/tfriend/friend_show_qqfriends.cgi?uin=[QQ号码]&g_tk=[随机token] 来输出 JSON
参考 :https://www.cnblogs.com/52php/p/5677775.html
https://blog.csdn.net/yjclsx/article/details/80340901
# 0x03 JSONP 和 CORS 比较
CORS 与 JSONP 的使用目的相同,但是比 JSONP 更强大。
JSONP 只支持 GET
请求,
CORS 支持 所有类型的 HTTP 请求。
JSONP 的优势在于支持老式浏览器,以及可以向不支持 CORS 的网站请求数据。