FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
微信私钥泄露的危害:一个微信公众号漏洞案例分析 岚岚自语2016-08-11共830885人围观 ,发现 30 个不明物体 WEB安全漏洞
前言
学校有个比较知名的公众号,用了两年感觉还是非常不错的,查成绩查公交查图书啥都有。
一个偶然的机会得到了公众号接口的权限,发现很多「有趣的事」,据说还可以黑产。目前该漏洞已经提交给微信号开发方完成修复,这篇文章主要告诫各位微信公众号开发人员关于WECHAT_APPID和WECHAT_APPSECRET的重要性。
信息收集
数据包截断
首先使用抓包软件,比如BrupSuite对微信公众号的数据包进行截取,数据包的URL地址大概如下:
www.xxxx.com/tools/query
去掉参数和路径直接用一级域名访问
www.xxxx.com
访问域名
这个时候跳转到一个博客,为了不泄露隐私就不截图了。应该是开发人员的个人博客,翻了一下没啥能用的信息。用nslookup查ip发现超时看,ping一下获得了ip地址,是阿里云的主机。nmap扫了一圈,发现开了mysql和phpmyadmin(在端口8181上)。
访问IP报错
但是没有找到好的利用姿势,于是直接用ip访问了一下,爆出大量错误信息!应该是使用了laravel的debug插件,但是没有及时关闭所导致的。
如下图所示:
QQ截图20160808200431.jpg
右下角往下拉,可以看到包括所有laravel的环境变量都显示了出来,包括数据库信息。
但是ip在内网,而且也不能用来登录mysql和myadmin。
注意到最后的几个变量WECHAT_APPID和WECHAT_APPSECRET
1.jpg
一开始不认识,但是看见secret关键字,应该是不能随意泄露的,怎么用呢?让微信官方教我们吧
这里是天时地利人和获得的WECHAT_APPID和WECHAT_APPSECRET,如果通过其它web漏洞进入了服务器,同样可以通过找配置文件获取这些值,所以说现在需要留意的不仅是数据库连接信息了。
漏洞利用
微信公众平台开发者文档
官方说,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
公众号可以使用AppID和AppSecret调用接口来获取access_token,于是我们获得的数据派上了用场。
接口调用请求说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
获取token.jpg
返回了一串很长的token,以后调用接口都带上这个access_token参数即可,官方说有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
参照官方文档,应该有很多利用姿势,毕竟能群发,能获取到用户地址之类的隐私数据,但是也有部分功能需要后台填写url地址才行,具体的大家可以研究下上面的文档,挖掘更多姿势,下面我就演示下影响比较大的群发。
群发演示
再次参照官方文档
想群发所有人,需要使用is_to_all参数,但是有次数限制,所以先查分组,使用分组发送。
查询所有分组
接口调用请求说明
http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN
返回说明正常时的返回JSON数据包示例:
{
"groups": [
{
"id": 0,
"name": "未分组",
"count": 72596
},
{
"id": 1,
"name": "黑名单",
"count": 36
},
{
"id": 2,
"name": "星标组",
"count": 8
},
{
"id": 104,
"name": "华东媒",
"count": 4
},
{
"id": 106,
"name": "★不测试组★",
"count": 1
}
]
}
我使用文档里的接口调试工具演示这次的实例
分组.jpg
选其中人数最多的两组,id为0和104
根据分组进行群发【订阅号与服务号认证后均可用】
接口调用请求说明
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
文本:
{
"filter":{
"is_to_all":false,
"group_id":"2"
},
"text":{
"content":"CONTENT"
},
"msgtype":"text"
}
官方文档这里的false后面少了个逗号是最骚的,我给大家加上。发送的信息是宣传学校的安全qq群
2.jpg
这样发送请求(图里也少了一个逗号)是不行的,因为发了没编码的中文。返回的错误代码是消息类型错误,最后改成\u的unicode编码,回复的错误代码为0就是成功,结果发出去变成了这样(群发有延迟,需耐心等待)
3.jpg
但是因为粉丝比较多,没有进一步测试怎么正确发中文,但是瞬间有8个人加了我的群,原来是微信一键翻译能解码,神人真多。。
后记
虽然这次没有控制主机,但是拥有大量粉丝的公众号的公信力,绝对会成为黑客的利用目标,如果群发的是钓鱼链接和虚假的充值活动之类的链接,用户损失的是钱财,商家损失的是信誉,得益的是黑产。后来公众号负责人找到我,探讨了一下该不该这样做测试,最后算是和解,不追究造成的粉丝损失,群发里宣传的群在公众号负责人的要求下也已经关闭了。
这次漏洞产生的主要原因为以下两点:
1.Domain未开启CDN,导致服务器IP暴露。
2.程序员一直开启debug模式,导致关键信息被泄露。
安全路漫漫,希望大家吸取个教训。
*本文原创作者:岚岚自语,转载须注明来自FreeBuf.COM
岚岚自语
岚岚自语
1 篇文章
等级: 2级
||
上一篇:白帽笔记:我的“一日一洞”高效漏洞挖掘之旅下一篇:Linux设备TCP连接曝高危漏洞:只要接入网络就可能被攻击
这些评论亮了
ArthurKiller (7级)窃.格瓦拉驻FreeBuf办事处回复
说是话,技术的确没有很高深的地方。
好比我说我知道了你的QQ密码了,发现还可以发消息给你的朋友!好神奇!
但是站在另外一个角度看,的确有部分移动开发人员很容易忽视主站WEB的安全设计,文中就是一个例子。
以为流量都是走移动端,用户不会去POST网站的URL或者IP就不去担心这方面的设计,导致debug一直在开启状态,就是这样才泄露密钥。
客观评价,不喜勿喷。 :?:
)13(亮了
Jumbo (6级)论坛https://www.chinabaiker.com回复
你都拿到key了还说啥呀.....就好比我进入服务器了,我发现能添加用户一样................
)12(亮了
发表评论已有 30 条评论
爱捣蛋的鬼 (2级) 2016-08-11回复 1楼
还没有利用最大化, 有了access_token可以做很多事
亮了(5)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ 爱捣蛋的鬼 就发这一句已经被人批评了一上午 :?:
亮了(5)
freebuf 2016-08-11回复
@ 岚岚自语 因为对开发者来说没有人发现漏洞就是安全,即时被利用了造成损失了,一句话黑客入侵就可以甩锅。没给你处分算不错的了。在他们眼里这就是黑客,根本没有什么白帽子测试一说。
亮了(5)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ freebuf 没办法 新手不懂
亮了(2)
softbug 认证作者专栏作者(7级) i am here! 2016-08-11回复 2楼
黑不了别人的服务器,就拿微信群发玩,没有料,纯搞笑。 这样的文章只能算日记。
亮了(5)
XXXX 2016-08-11回复
@ softbug 这种意淫式的黑阔很多,不差这一个嘛
亮了(4)
冰海 (4级) 我思故我在…… 2016-08-11回复
@ XXXX 说到点上了[/哈哈],但是反过来,应该认可一下。
亮了(5)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ softbug 就是个日记
亮了(1)
冰海 (4级) 我思故我在…… 2016-08-11回复 3楼
全程我是提着心看完的,以为能看到大杀器。。。
亮了(4)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ 冰海 新手,见笑了 :?:
亮了(2)
Jumbo (6级) 论坛https://www.chinabaiker.com 2016-08-11回复 4楼
你都拿到key了还说啥呀…..就好比我进入服务器了,我发现能添加用户一样…………….
亮了(12)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ Jumbo 就是给开发者提个醒,都认为主机入侵危害大,这危害也不小
亮了(5)
HD MOORE 2016-08-11回复 5楼
Not useful! I can ROOT your server in seconds
亮了(3)
ArthurKiller (7级) 窃.格瓦拉驻FreeBuf办事处 2016-08-11回复
@ HD MOORE so what? I can root the server that u hacked.
亮了(5)
ArthurKiller (7级) 窃.格瓦拉驻FreeBuf办事处 2016-08-11回复 6楼
说是话,技术的确没有很高深的地方。
好比我说我知道了你的QQ密码了,发现还可以发消息给你的朋友!好神奇!
但是站在另外一个角度看,的确有部分移动开发人员很容易忽视主站WEB的安全设计,文中就是一个例子。
以为流量都是走移动端,用户不会去POST网站的URL或者IP就不去担心这方面的设计,导致debug一直在开启状态,就是这样才泄露密钥。
客观评价,不喜勿喷。 :?:
亮了(13)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ ArthurKiller 可以 这很客观
亮了(1)
soild 2016-08-11回复 7楼
q群258246920,备注:哪有
亮了(4)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ soild 群已关
亮了(2)
神TMNPC 2016-08-11回复 8楼
这能算什么漏洞?就好像把自家银行密码随手写在墙上一样,私钥随便debug打印也是6得飞起
亮了(2)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复
@ 神TMNPC freebuf上一定要发漏洞吗…
亮了(2)
湖北凌辉峰科技 2016-08-11回复 9楼
good
转发微博
亮了(1)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复 10楼
@ Jumbo 就是给开发者提个醒,都认为主机入侵危害大,这危害也不小
亮了(1)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-11回复 11楼
围观各路大神给我拍的砖 我都搬了
亮了(3)
global_hacker (4级) 2016-08-11回复 12楼
哈哈 666 娱乐了 微信
亮了(2)
lisa 2016-08-11回复 13楼
跟妹纸开完房,你却玩dota
亮了(2)
新月 (1级) 看啊~~~~~~风在飞~~~~~~~~~~~~~~~~~~~... 2016-08-11回复 14楼
59207人围观,真的有那么多人么,发现每刷新一次人数就会增长。。。。。。感觉不太靠谱啊 这个数字。
亮了(2)
红茶 (1级) 2016-08-12回复 15楼
基本明白微信公众号是咋回事了,原来以为是在腾讯的平台上转圈呢,原来是腾讯提供一个环境、接口和标准,公众号平台还是自己搭建的。
亮了(0)
岚岚自语 (2级) 再不学就浪费了自己的专业了。。 2016-08-16回复
@ 红茶 腾讯也有公众号的后台管理平台 这个是为了方便第三方开发者的
亮了(0)
hackhui (1级) 2016-08-13回复 16楼
微信各种红包辅助,大小。单双。牛牛。扫雷。埋雷。尾数。伪装。蝙蝠侠。红包王。侠盗。悟道。核武器。太极盘古推算,全都有微信:68668926
亮了(0)
ning1022 (2级) 这家伙不懒,但未填写个人描述! 2016-09-26回复 17楼
这个思路不错!
亮了(0)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
岚岚自语
岚岚自语
再不学就浪费了自己的专业了。。
1
文章数
13
评论数
最近文章
微信私钥泄露的危害:一个微信公众号漏洞案例分析
2016.08.11
浏览更多
相关阅读
逆向实践:批量验证微信号是否存在微信偷看聊天记录?看完这篇你就不怕了修不完的漏洞,微信跳一跳刷分泛滥成灾?BUF早餐铺 | 美政府拒绝中移动进入美国市场,称威胁国家安全;微信支付SDK被曝XXE漏洞,可窃取商家密钥伪造订单;Facebook承认与61家公司共享用户数据使用x64dbg分析微信聊天函数并实现发信息
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论