DNS劫持,CDN和DNS劫持网络跳转,排查及解决经验分享

JSON 2018-04-13 23:04:54 40419

今天SOJSONwww域下,也就是https://www.sojson.com 被劫持了。开始没发现,个别地区用户发现打开sojson.com或者从百度搜索 sojson 的关键词进入的时候,就跳转到了搜狗。

下面来看看一个跳转的图:


另外看看视频吧:

感谢 @甘肃|Java|逝月  提供的视频。

我们可以看到,点击一个页面到了搜狗,并且 搜索的关键词是“json”。

抓包看了一下头信息:

第一次请求www.sojson.com

Request URL: https://www.sojson.com/
Request Method: GET
Status Code: 200  (from disk cache)
Remote Address: 123.132.254.145:443
Referrer Policy: no-referrer-when-downgrade
age: 1077
cache-control: max-age=7200
content-encoding: br
content-type: text/html
date: Fri, 13 Apr 2018 07:48:32 GMT
expires: Fri, 13 Apr 2018 09:30:35 GMT
server: marco/2.0
status: 200
vary: Accept-Encoding
via: S.mix-sd-dst-036, T.43.H, V.mix-sd-dst-040, T.139.H, M.cun-sd-lyi1-139
x-request-id: 64e8891e3fafd7c83206d4f897b4ddbb; fc4ef7cb4b954412c8a0710df20d9ab5
x-source: C/200
Provisional headers are shown
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

第二次跳转到了(adg.payud.com):

Request URL: http://adg.payud.com/sogou_pc.php?flag=0&kw=json
Request Method: GET
Status Code: 200 OK
Remote Address: 113.10.139.224:80
Referrer Policy: no-referrer-when-downgrade
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Fri, 13 Apr 2018 08:04:25 GMT
Pragma: no-cache
Server: nginx/1.0.15
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.17p1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Host: adg.payud.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
flag: 0
kw: json

第三次跳转(www.sogou.com)

Request URL: https://www.sogou.com/sogou?pid=sogou-site-9cd013fe250ebffc&ie=utf-8&query=json
Request Method: GET
Status Code: 200 OK
Remote Address: 58.250.125.49:443
Referrer Policy: unsafe-url
Cache-Control: max-age=0
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Fri, 13 Apr 2018 08:04:25 GMT
Expires: Fri, 13 Apr 2018 08:04:25 GMT
Server: nginx
set-cookie: black_passportid=1; domain=.sogou.com; path=/; expires=Thu, 01-Dec-1994 16:00:00 GMT
set-cookie: ld=Klllllllll2z1pRylllllVryBw6lllll0GMO1kllll1lllllRylll5@@@@@@@@@@; path=/; expires=Sun, 13 May 2018 08:04:25 GMT; domain=.sogou.com
Transfer-Encoding: chunked
Vary: Accept-Encoding
x_ad_pagesize: adpagesize=7622
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: ABTEST=0|1523605712|v17; SNUID=E493F8BB36335F812E71720F37BF314B; SUID=D2A5CF8C4F18910A000000005AD060D0; browerV=3; osV=1; SUV=000D53928CCFA5D25AD060D1BAD50261; IPLOC=CN3100; ld=vZllllllll2z1pRylllllVryYMylllll0GMO1kllllZlllllRylll5@@@@@@@@@@
Host: www.sogou.com
Referer: http://adg.payud.com/sogou_pc.php?flag=0&kw=json
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
pid: sogou-site-9cd013fe250ebffc
ie: utf-8
query: json

通过CDN 获取CDN缓存的内容是以下内容:


仔细看吧,应该能看明白,就是返回的就是一个  js  ,并且直接刷新到上面第二个网址,然后跳转到搜狗了。

过程就是这么简单,这个就确定了,100%是被劫持了。但是不一定是  DNS劫持  。

答疑:

1.有的人看到这里就会问了,不是  HTTPS  会解决劫持吗?sojson 不是HTTPS的站点吗?那为什么?

    这个问题问的漂亮,我来回答一下:首先  HTTPS  是防止嵌入  JS   方式的劫持,就是你请求一个页面,  DNS  恶心的厂商会加一段js放里面,会出现广告之类的,一般出现在移动端,PC端少,但是博客园就出现过一次。这种一般是  https  就可以解决。

2.那这种是什么劫持?

    这种就是直接做的域名劫持,就是把你域名直接拦截,直接返回他的内容,然后就是上面图的恶心内容了。这种  https  没有用。

3.怎么解决?

    首先告诉你,基本无解,只是这种太恶心了。你只能发律师函给网络运营商。好多是网络运营商和  CDN  厂商相互勾结,因为这个利益链很大。

感谢群里的热心网友:@北京|java|lsp @杭州|java|Mr.周 @广东|Java|哈喽  @上海|Java|Ever  @甘肃|Java|逝月 @上海|Java|ETFOX  等等,感谢你们帮我一起排查问题。

DNS劫持的几种示意图

1、DNS域名拦截方式


2、DNS增加脚本方式


3、CDN + 网络运营商混合方式(今天SOJSON遇到的就是这种)


这样  CDN  直接缓存的就是劫持的脚本。

这个就是没办法,下面看看CDN厂商的回复:

您好,肯定不是我们和网络服务商一起搞的,您出现这样的问题,某种程度上说我们CDN 也是受害者。况且我们没有理由把您劫持到 sogou 而不是有利我们的其他一些网站。您目前出现的劫持类型应该数属于DNS层劫持,所以https方案 应该是不能解决您的问题的。

刚才希望您配置的是有一点作用的,如果劫持返回了是content-type是 静态文件的话,会被我们CDN 默认缓存起来,这样的话,就可能会扩大您的影响范围了,所以在一定程度上是有作用的。

目前我们这边也是缺少 直接的劫持证据,您也可以后续再观察一下,有复现可以随时联系我们,我们肯定会帮您强力的反馈给网络运营商,要求停止劫持行为。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/281.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情
神速ICP备案经验分享,ICP备案居然一天就通过了
今天DNS挂了,Mac添加修改DNS,114DNS挂了修改成阿里DNS
dns污染怎么解决?为什么会出现这种情况?
关于Java Tomcat 内存溢出排查心得分享
解决IE6 IE7 IE8 IE9 IE10 IE11支Bootstrap的解决方法,解决后支持HTML5
dns-prefetch对网站速度能提升有多少?详解dns-prefetch。
DNS查询, DNS测速检查接口,DNS测速接口
IP定位,腾讯定位周边数据分享
SOJSON首页的圣诞雪花特效,特效分享,雪花特效下载
最新文章
Python print() 函数 17
PHP if/else/elseif 语句 81
HTML5 Canvas弧线教程 74
Java赋值运算符 118
XML内部实体和外部实体 217
Java面向对象编程概念 177
PHP回显语句 128
Linux—文件树 142
C语言while循环和do while循环 150
Python元组剖析 209
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 682761
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674741
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 603031
免费天气API,天气JSON API,不限次数获取十五天的天气预报 581231
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 553167
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509466
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480074
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 264911
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244332
Elasticsearch教程(一),全程直播(小白级别) 225661
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...