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

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

今天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污染怎么解决?为什么会出现这种情况?
今天DNS挂了,Mac添加修改DNS,114DNS挂了修改成阿里DNS
关于Java Tomcat 内存溢出排查心得分享
解决IE6 IE7 IE8 IE9 IE10 IE11支Bootstrap的解决方法,解决后支持HTML5
DNS查询, DNS测速检查接口,DNS测速接口
dns-prefetch对网站速度能提升有多少?详解dns-prefetch。
IP定位,腾讯定位周边数据分享
DNS健康检测的原理?它是如何实现的?
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

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

查看我的收藏

正在加载... ...