CDN、DNS劫持网络跳转、排查及分享解决方案经验
https://www.sojson.com被劫持。一开始我没有注意到,但有些地区的用户发现,当他们打开sojson.com或在百度搜索关键字sojson时,他们跳转到了搜狗。
我们来看一张跳跃照片:
![]()
同时观看视频:
感谢@gansu|java|逝月的视频。
我们可以看到,点击某个页面会进入搜狗,关键词是“json”。
抓包并查看头信息:
www.sojson.com初始请求:
请求URL:https://www.sojson.com/请求方法:GET状态码:200(来自磁盘缓存)远程地址:123.132.254.145:443引用者Policy:降级时无引用年龄:1077缓存 - 检查:最大-age= 7200内容编码:br内容类型:text/html日期:2018年4月13日星期五07:48:32 GMT到期:2018年4月13日星期五09:30:35 GMT服务器:marco/2.0状态:200varie:接受编码via:S.mix-sd-dst-036,T.43.H,V .mix-sd-dst-040,T.139.H,M.cun-sd-lyi1-139x-请求-id:64e8891e3fafd7c83206d4f897b4ddbb; fc4ef7cb4b954412c8a0710df20d9ab5x 源:C/200显示初步标头升级不安全请求:1用户代理:Mozilla/5.0(Windows NT 10.0;WOW6 4)Apple WebKit/537.36(KHTML ,像Gecko)Chrome/65.0.3325.181 Safari/537.36
第二次跳转到(adg.payud.com):
请求URL:http://adg.payud.com /sogou_pc .php?flag=0&kw=json请求方法:GET状态编码e: 200 OK外部地址:113.10.139.224:80推荐人Policy:降级时不推荐连接:keep-alive内容编码:gzip内容类型:text/html日期:2018年4月13日星期五08:04:25 GMT编译指示:无缓存服务器:nginx/1.0.15传输编码:分块变化:接受编码X- 技术支持:PHP/5.2.17p1接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,* /*;q=0 ,8接受编码: gzip, deflate接受语言: zh-CN,zh;q=0.9连接: keep-alive主机: adg.payud.com升级- 不安全请求:1用户代理:Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/65.0.3325.181 Safari/537.36标志:0kw : json
第三次飞跃(www.sogou.com)
请求网址:https://www.sogou.com/sogou?pid=sogou-site-9cd013fe250ebffc&ie=utf-8&query =json请求方法:GET状态码:200 OK外部地址:58.250.125.49:443推荐人Policy:unsafe-urlCache-Con巨魔:max-age=0连接:保持活动内容编码:gzip内容类型:text/html; charset=utf-8日期:2018年4月13日星期五08:04:25 GMT到期:2018年4月13日星期五08:04:25 GMT服务器:nginxset- cookie:black_passportid=1;域名=.sogou.com;路径=/;过期 = 1994 年 12 月 1 日星期四 16:00:00 GMTset-cookie: ld=Klllllllll2z1pRylllllVryBw6llllll0GMO1kllll1lllllRylll5@@@@@@@@@@;路径=/;过期=2018 年 5 月 13 日星期日 08:04:25 GMT; domain=.sogou.com传输编码:分块变化:接受编码x_ad_pagesize:adpagesize=7622接受:text/html、application/xhtml+xml、application/xml;q =0.9 ,image/webp,image/apng,*/*;q=0.8接受编码: gzip, deflate, br接受语言: zh-CN,zh;q=0.9连接: keep -aliveCookie:ABTEST=0|1523605712|v17; SNUID=E493F8BB36335F812E71720F37BF314B; SUID=D2A5CF8C4F18910A0000000 05AD060D0;浏览器V=3; osV=1; SUV=000D53928CCFA5D25AD060D1BAD50261; IPLOC=CN3100; ld= vZllllllll2z1pRylllllVryYMyllllll0GMO1kllllZllllllRylll5@@@@@@@@@主机:www.sogou.com参考:http://adg.payud.com/sogou_pc.php?flag=0&kw=json升级不安全-请求:1用户代理:Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/65.0.3325.181 Safari/537.36pid:sogou-site-9cd013fe250ebff cie:utf-8query:json
通过CDN获取到的CDN缓存内容如下:
![]()
仔细看应该能明白,返回的是一个js,正在被直接刷新到上面第二个网址然后跳转到搜狗
过程就这么简单,这下确认了,100%被劫持了。但这不一定是 DNS 劫持。
答案:
1。看到这里有人会疑惑:HTTPS不就解决劫持了吗? sojson 不是 HTTPS 站点吗?所以为什么?
这个问题问得很漂亮,我来回答一下:首先HTTPS是通过嵌入JS来防止劫持的,就是当你请求一个页面的时候,DNS恶心的厂商会在里面加一段js,还有广告通常会出现这样的情况。在移动端,PC不太常见,但博客园在某个时候已经出现了。这通常是通过 https 解决的。
2。这是怎样的劫持?
这种域名劫持直接拦截你的域名并立即返回其内容,然后就是上图中恶心的内容。这个https没啥用。
3。怎么解决呢?
首先告诉你,其实没有办法,就是太恶心了。您只能向电网运营商发送律师函。很多网络运营商和CDN厂商相互勾结,因为这个利益链非常大。
感谢群里热心网友:@北京|java|lsp @杭州|java|Mr. Zhou@Guangdong|Java|Hello @Shanghai|Java|Ever @Gansu|Java|逝月@Shanghai|Java|ETFOX 等等,感谢您帮助解决问题。
DNS劫持的几张图
1. DNS域名拦截方法
![]()
2. DNS添加脚本方法
![]()
3.混合方式CDN+网络运营商(这就是今天SOJSON遇到的)
![]()
这样CDN直接缓存被劫持的脚本。
对此我们无能为力。我们看一下CDN厂商的回应:
您好,这绝对不是我们和网络服务商造成的。如果出现这样的问题,我们的CDN在某种程度上也是受害者。此外,我们没有理由将您劫持到搜狗而不是其他对我们有利的网站。您目前遇到的劫持类型应该是DNS层劫持,所以https方案可能无法解决您的问题。
我希望您刚刚配置的内容有一些用处。如果劫持返回的内容类型是静态文件,则默认情况下会被我们的 CDN 缓存。这样的话,可以扩大你的势力范围,所以有一定的作用。
我们目前缺乏劫持的直接证据。以后也可以观察一下。如果再次发生,您可以随时联系我们。我们一定会帮助您向网络运营商强烈反馈,要求停止劫持行为。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
