漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0136903
漏洞标题:微信公众号管理员后台点击我发的消息链接,公众号介绍等设置就会被修改(绕过csrf防护)
相关厂商:腾讯
漏洞作者: 呆子不开口
提交时间:2015-08-25 18:16
修复时间:2015-10-09 19:38
公开时间:2015-10-09 19:38
漏洞类型:CSRF
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-08-25: 细节已通知厂商并且等待厂商处理中
2015-08-25: 厂商已经确认,细节仅向厂商公开
2015-09-04: 细节向核心白帽子及相关领域专家公开
2015-09-14: 细节向普通白帽子公开
2015-09-24: 细节向实习白帽子公开
2015-10-09: 细节向公众公开
简要描述:
微信公众号管理员在后台点击我发给他的链接,他的简介、头像、隐私设置、地址等设置就会被修改,还可以添加用户分组
详细说明:
微信公共号后台的CSRF防护是有的,token防护加referrer限制,看起来很完美
但是,由于设计的一些不合理,仍然可被csrf攻击,以下是详情
1、公众号后台的token的设计问题
公众号后台的csrf防护的token直接在后台所有操作的url中都会出现。这样token就有可能被http包里的referer字段发往第三方而泄露。我在以前写过的文章 http://drops.wooyun.org/web/7112 里也提过这个问题的风险,当时我说削弱了防护体系。一旦其他的防护有问题的时候,这个问题就会被利用
2、先偷TOKEN
发送一个自己可控内容的https(公众后台是https的,只给https传递referrer)的url给微信公众账号,一旦他点击,管理后台url里的token就会发给我们。
直接给公众号发送url,后台是不会识别的。需要一个小技巧来给后台发链接
把链接到微信的聊天框中然后访问,然后微信内置浏览器会打开这个页面,然后再收藏这个页面
然后再给公众号发收藏里的这个页面,这样在管理员的后台看到的就是一个富媒体格式的链接的
3、某些处可绕过referrer
微信公众号后台的操作都是post的,而且限制了referrer为本域
但是有一些操作,比如公众号设置里的介绍、头像修改、添加分组、地址修改、隐私设置是否允许别人搜索的设置等地方的请求,虽然看起来也是post的
但是你如果把post请求改成get,body的内容放到get参数中,这样的请求服务端也接受
修改介绍的请求:
添加分组
关闭允许他人搜索到的设置
而且改成get请求后,referrer限制允许了空referrer的情况,这样我们的利用就更不易被察觉了,因为不需要直接发此链接让受害者点了
4、怎么利用
构造一个https页面,里面是伪装的内容,并且会发出空referer的带着token的get请求(可使用iframe动态加载form来发get请求)来完成如上一些敏感操作
漏洞证明:
拿了一个朋友的公众账号做测试,她不知情
给公众账号发链接
她点击后介绍被我修改成"hacked by koreans"
由于她被我攻击,所以她要求我补偿她给她推广公众号,她的号和照片如下
加他的公众账号吧,你的人生开始不再虚度
修复方案:
保护好token,不要放在get中
post的请求不要让get发
版权声明:转载请注明来源 呆子不开口@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2015-08-25 19:37
厂商回复:
非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。
最新状态:
暂无