关于国内云服务器做微信认证全程 HTTPS 的情况下,数据仍然泄露,这种情况大家遇到过吗?

2017-05-17 19:10:14 +08:00
 sxpcrazy

这几天在做微信公众号的网页授权,发现一个惊天秘密,不知道是不是算是个秘密,搜了下发现没有人说这种事情,所以发出来看看是不是我的个例。

我先说下涉及的几个节点:

A:我在阿里云上的网站,主要用来给自己的服务做授权代理。( HTTPS ) B:我在阿里云上的网站,业务网站,通过调用 A 获得用户 openid 来做用户身份认证。( HTTP ) C:腾讯微信鉴权网站,参见:微信文档->微信网页授权( https://api.weixin.qq.com/sns/oauth2/)( HTTPS ) D:用户 E:恶意访问者(目前不明身份,只知道地址全部来自上海电信,去 abuseipdb.com 搜了下,大部分都有被报告过)

事件流程如下:

D--->B 进行业务请求,其中页面上有按钮进行身份认证,也就是登录 D--FORM POST-->(A)--HEAD LOCATION--其中带了 URL 此 URL 为服务器生成每次不同,位于 A-->(C)--微信认证成功--HEAD LOCATION--这个过程微信服务器带了 CODE 然后回调 URL->(A)--根据 CODE 获取 AccessToken 及 openid,此为服务器通过直接通信 C 获取--为了安全保存了 openid 产生了随机 TOKEN--HEAD LOCATION-->B 进行鉴权代理认证,A 认证成功会带一个 TOKEN 回到 B,B 会使用 TOKEN 去 A 获取 openid

整个过程结束,本来很简单的事情。A 一开始不是 HTTPS 的,后来我为了安全想要将 A 部署成 HTTPS,配置证书的时候查看了下 Apache 日志,这一看不要紧,发现了惊天大秘密。

当我进行过上述过程后,(A)生成的 URL 会被不明来历的(E)调用多次,请注意,这里 URL 是(A)每次生成的,里面带有随机串,而且这个地址直接通过客户端 REDIRECT LOCATION 到(C),这个过程都是 HTTPS 的,但是就算是这样的过程,仍然会有人知道这个地址是什么,这是在 iOS 的微信客户端里面发生的事情,区别是(E)使用的是 URL 原始地址,而不是带了 CODE 的(C)的回调地址,也就是我传递给(C)的 redirect_uri 参数,这个参数是绝对不应该被任何人知道的,但就是被知道了。这种调用会发生 1-2 次,经过多次测试只发现了最多 2 次,不知道是否还有更多次,使用的是不同的 IP 和多种 Agent

怪事还有呢,这同时还会有很多(E)访问 B 的回调地址,也就是带了(A)生成的 TOKEN 的地址,当然了这个过程是不加密的,也没啥好说的,但同样证明了数据监听的存在,至少在电信的链路层有监听。

我不知道这个事情大家有没有遇到过,所以在这里问问大家。

(E)的 ip 列表和 agent 如下:

101.226.33.223 - - [17/May/2017:17:44:20 +0800] "GET /test.php?token=a8312b4a-94de-4e8e-a2c6-5cd0401df139&type=wxOid HTTP/1.1" 200 942 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27 MicroMessenger/6.5.5 NetType/WIFI Language/en" 101.226.99.197 - - [17/May/2017:17:44:22 +0800] "GET /test.php?token=a8312b4a-94de-4e8e-a2c6-5cd0401df139&type=wxOid HTTP/1.1" 200 942 "" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4"

101.226.33.237 - - [17/May/2017:18:30:05 +0800] "GET /test.php?token=28a02056-6092-4f15-a38d-501400aa1fde&type=wxOid HTTP/1.1" 200 942 "" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4" 101.226.51.227 - - [17/May/2017:18:31:05 +0800] "GET /test.php?token=293c9baa-8866-45d5-813d-b7845c4702df&type=wxOid HTTP/1.1" 200 942 "-" "Mozilla/5.0 (Linux; Android 6.0.1; OPPO R9s Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.9 TBS/036906 Safari/537.36 MicroMessenger/6.5.4.1000 NetType/4G Language/zh_CN" 180.163.2.118 - - [17/May/2017:18:31:08 +0800] "GET /test.php?token=293c9baa-8866-45d5-813d-b7845c4702df&type=wxOid HTTP/1.1" 200 942 "" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4"

101.226.66.172 - - [17/May/2017:18:31:05 +0800] "GET /api/v1/weixin/code?key=4d77d444-a07d-4c12-81b2-704f7959c4f1&type=oid HTTP/1.1" 404 3267 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.27.400 QQBrowser/9.0.2524.400" 61.151.226.189 - - [17/May/2017:18:31:07 +0800] "GET /api/v1/weixin/code?key=4d77d444-a07d-4c12-81b2-704f7959c4f1&type=oid HTTP/1.1" 404 3571 "" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4" 101.226.65.105 - - [17/May/2017:18:36:02 +0800] "GET /api/v1/weixin/code?key=2e3e977a-2009-4414-86c7-f3ceef4e5d8f&type=oid HTTP/1.1" 404 3535 "" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4"

4332 次点击
所在节点    信息安全
8 条回复
singer
2017-05-17 19:16:46 +08:00
感觉你说的,跟黑帽大会上说的 auth2 认证那个有点像。我在做微信登录的时候,总觉得有问题,查到过。你可以去找找看看
hanzhao
2017-05-17 19:28:32 +08:00
有没有可能是微信的服务器 C 去访问的。
你多试下你的服务器解析 api.weixin.qq.com 这个域名的 ip,我这儿的结果都是 101.226.*.*、101.227.*.*。但是为什么会有 agent 就不知道了。
est
2017-05-17 20:56:43 +08:00
阿里云云盾啊。。。
sxpcrazy
2017-05-17 22:20:26 +08:00
@hanzhao 应该不是,微信没这个需要啊,它为何要多次请求同一个回调地址呢?而且那些 ip 都是被报告是 spam 或者 hacker 的 ip
sxpcrazy
2017-05-17 22:20:39 +08:00
@est 什么意思?
akin
2017-05-18 01:55:14 +08:00
@sxpcrazy 我猜测他的意思是阿里云的云端的访问行为。
est
2017-05-18 09:30:49 +08:00
@sxpcrazy 阿里云盾还是别的什么的有个牛 X 功能是不知道从哪里薅来的 url 然后主动去访问判别风险。。。。因为别人在你机器上是 root 所以等于你的机器大门是敞开的。
sxpcrazy
2017-05-18 11:06:22 +08:00
@est 这些 IP 是 阿里 的吗?有人知道吗?我去看看是否是这个鬼

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX