V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sxpcrazy
V2EX  ›  信息安全

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

  •  
  •   sxpcrazy · 2017-05-17 19:10:14 +08:00 · 4353 次点击
    这是一个创建于 2777 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    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"

    第 1 条附言  ·  2017-05-17 22:57:18 +08:00

    UPDATE:下班前发的之前的旧主题,没想到发出来格式和我写的完全不一样,想编辑当时赶着回家就没弄,结果现在不能编辑了,只好把格式正确的重新发一遍了,已经看过此版本的辛苦你们了

    新版本地址,讨论请移步这里,谢谢:https://www.v2ex.com/t/362081

    8 条回复    2017-05-18 11:06:22 +08:00
    singer
        1
    singer  
       2017-05-17 19:16:46 +08:00 via iPhone
    感觉你说的,跟黑帽大会上说的 auth2 认证那个有点像。我在做微信登录的时候,总觉得有问题,查到过。你可以去找找看看
    hanzhao
        2
    hanzhao  
       2017-05-17 19:28:32 +08:00
    有没有可能是微信的服务器 C 去访问的。
    你多试下你的服务器解析 api.weixin.qq.com 这个域名的 ip,我这儿的结果都是 101.226.*.*、101.227.*.*。但是为什么会有 agent 就不知道了。
    est
        3
    est  
       2017-05-17 20:56:43 +08:00
    阿里云云盾啊。。。
    sxpcrazy
        4
    sxpcrazy  
    OP
       2017-05-17 22:20:26 +08:00
    @hanzhao 应该不是,微信没这个需要啊,它为何要多次请求同一个回调地址呢?而且那些 ip 都是被报告是 spam 或者 hacker 的 ip
    sxpcrazy
        5
    sxpcrazy  
    OP
       2017-05-17 22:20:39 +08:00
    @est 什么意思?
    akin
        6
    akin  
       2017-05-18 01:55:14 +08:00
    @sxpcrazy 我猜测他的意思是阿里云的云端的访问行为。
    est
        7
    est  
       2017-05-18 09:30:49 +08:00
    @sxpcrazy 阿里云盾还是别的什么的有个牛 X 功能是不知道从哪里薅来的 url 然后主动去访问判别风险。。。。因为别人在你机器上是 root 所以等于你的机器大门是敞开的。
    sxpcrazy
        8
    sxpcrazy  
    OP
       2017-05-18 11:06:22 +08:00
    @est 这些 IP 是 阿里 的吗?有人知道吗?我去看看是否是这个鬼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.