目前CDN技术到处可见。像网宿、蓝讯、加速乐等都依靠CDN过活,连安全宝也都使用了CDN技术,当然很多域名空间商现在也提供CDN服务。从以往互联网的发展上看,CDN是个趋势,很多厂商也都多多少少购买了商业化的CDN资源,比如360、腾讯、百度、新浪等等等,当然大部分流量还是走自建的CDN网络。

本文笔者站从安全的角度出发,对CDN技术进剖析,揭开厂商使用CDN技术的风险、分析了黑客及黑产新的攻击方向。

实际上只要对CDN的工作流程有一定了解,并能够对数据报文的流向比较清楚,就能够获取其风险点了,在文中笔者只对动态页面的请求流程做讨论(静态页面一般不回源),至于静态页大部分由节点的webcache直接返回,一般不含敏感信息(cookie实际上是敏感信息),所以不做讨论。

一.CDN工作流程如下图:

<img src="http://www.cngrayhat.org/wp-content/plugins/wp-ueditor/ueditor/php/upload/65201377082022.png" width="630" height="349" title="cdn.png" alt="cdn.png" />

1.管理员或者站长将域名的DNS指向CDN厂商的DNS上(当然,根据选择不同也有可能使用CName方式,但都不影响数据流的流向)。

2.用户需要登录站点,请求DNS以便获得服务器IP(此处最终请求的DNS服务器为CDN厂商的DNS)

3.CDN厂商收到DNS查询请求及各种信息,通过各种算法选择一个离用户最近的节点,将该节点的IP 1.1.1.1作为服务器IP返回给用户(此处CDN厂商告诉用户一个假的服务器IP)

4.用户收到DNS响应,将HTTP请求(该处为登录请求,请求报文包含用户密码)发给1.1.1.1

5.CDN节点接收到请求包判断请求报文是否是动态页面,如果是静态则查看webcache,存在缓存直接返回缓存页面。如果是动态页面请求或者没有缓存的静态页面,节点则直接请求真实源,以便获取最新的内容。(注:此处对于动态页面的请求一般每次都会做回源操作)

6.接着就是服务器响应请求,此处不做讨论

二.CDN的软肋

由上图可知,对于网站的请求报文都会经过CDN厂商的节点(不做特殊操作的情况下)。因此安全隐患全都集中在了CDN厂商的节点上。一般一个节点会提供N多个网站的加速。不管是360、腾讯、百度还是新浪,只要使用了商业化的CDN,就相当于孤注一掷,将自己的部分安全交给CDN厂商。

一旦攻击者控制了CDN厂商节点就可以轻易的进行抓包并分析。对于CDN厂商来说,毕竟不是专业的安全公司,所以在防护方面肯定会有所不足CDN厂商节点遍布全国,数量众
多,很难保证每个节点的安全性(再不行可试下ARP欺骗,从同段IP搞起)

三.从CDN看黑产动向

1.以往攻击者对目标发起攻击都会先对目标IP进行扫描和检测,但由于CDN的存在,很多攻击者无法直接获取到源IP,因此转而对CDN节点发起攻击,一旦攻陷节点,那拿到站点权限就是迟早的事情,另外在这个信息发达的时代一般都是买一送多,大数据时代,一个结点的网站够撑死你了。目测接下来对CDN节点的攻击会成为黑色产业链的热门话题(估计已经很热了,只是我不知道)

2.CDN厂商实际上可以成为黑产的大数据提供商,对于应用软件你可以本地分析看是否在后台偷偷上传数据,对于CDN你能么,笔者建议少用免费的CDN服务,除非你已经麻木了,或者你做了特殊的手段。

3.大型企业会增加对自建CDN的安全维护成本,同时攻击者会将大部分时间放在对企业CDN网络的攻击上

四.由CDN到DNS劫持(只写思路,后面补上技术文档)

百度经常被黑、某黑阔站点又被hellen干掉了、XXX也被整了。到头来都是DNS劫持。难道DNS劫持就只能换个页面?或只能让用户访问恶意站点?看了CDN的工作原理,结合APT攻击。长时间盯着就OK了。某天的某一时刻,某人说能控制某域名的DNS解析,问怎么利用。估计看了前面原理的人都想到了如何进一步利用DNS劫持了,笔者在这里发表几个个人的方法,仅供参考。

1.搭建小型CDN网络,一个节点、一个自己的域名、一个自己搭建的DNS服务器。修改域名DNS指向自己搭建的DNS,从而将站点的访问流量全部牵引到自己的节点上,在自己节点装抓包软件(如何搭建CDN网络可以找找相关资料)

2.搭建中转服务器(代理服务器),将域名解析到自己的服务器上,由攻击者的服务器进行中转(实际上利用本地的HOST及某些数据转发软件就可以实现)。这个比上面一点好多了,少了个DNS服务器。

3.完全利用HTTP协议,写个PHP脚本,对接收到的报文进行转发,当然笔者在这边通过测试,该方法效率不高,刚开始忘记cookie的处理,导致用户无法登录,后面对cookie进行了处理后成功转发,但缺点是“速度像蜗牛”!

摘自:freebuf 作者:mars

浅析CDN安全的更多相关文章

  1. 浅析CDN存在的必要性

    CDN行业从出现至今,已经有近20年的历史.但是直到近些年互联网进入超高速发展阶段,CDN才得以得到更广泛的应用和发展.最开始,CDN的主要任务只是简单的内容分发,对于静态内容的加速没有问题.但是随着 ...

  2. 【Web】CDN加速效果浅析

    1. 什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用 ...

  3. 浅析门户网站体育赛事CDN加速解决方案

    经过近些年来的高速发展,互联网已经成为现今媒体传播的主要力量.这一点在大型体育赛事的报道与转播上,体现的尤为明显.更及时的信息内容.更多样的报道形式.更齐全的资料组成.更方便的阅读查询.更具互动性的报 ...

  4. CDN基本原理和功能浅析

    CDN的全称是Content Delivery Network,即内容分发网络.CDN的通俗理解就是网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度 ...

  5. 浅析为何使用融合CDN是大趋势?

    使用传统CDN的用户遇到的新问题 随着云计算时代的快速发展,尤其是流媒体大视频时代的到来,用户在是使用过往CDN节点资源调配将面临很多问题: 问题1: 流媒体时代不局限于静态内容分发,直播点播等视频服 ...

  6. 【翻译】浅析为何使用融合CDN是大趋势

    使用传统CDN的用户遇到的新问题 随着云计算时代的快速发展,尤其是流媒体大视频时代的到来,用户在是使用过往CDN节点资源调配将面临很多问题: 问题1: 流媒体时代不局限于静态内容分发,直播点播等视频服 ...

  7. 浅析uniapp

     前端跨平台框架 之uniapp入门浅析 技术的发展总日新月异,处在风口,前端技术的发展尤为迅速,跨平台的概念也在前端流行起来.从最早期PhoneGap.lonic.Cordova,到近年来的Reac ...

  8. http缓存策略以及强缓存和协商缓存浅析

    http缓存策略以及强缓存和协商缓存浅析 本地缓存-强缓存 本地缓存,也就是我们常说的强缓存:是指当浏览器请求资源时,如果请求服务端的资源命中了浏览器本地的缓存资源,那么浏览器就不会发送真正请求给服务 ...

  9. 绕过CDN获取服务器真实IP地址

    相关视频链接:(https://blog.sechelper.com/20220914/penetration-testing-guide/cdn-bypass) CDN(Content Delive ...

随机推荐

  1. Translation perface: <<Professional JavaScript for Web Developers, 3rd Edition>>

    It is a huge pitty to breaking translating this book. Sincerly speaking, I am striken by this great ...

  2. backbone前端基础框架搭建

    前端站点名为:site: 前端框架分为:css.js和img,框架的核心在js文件夹下: js中包括collections.models.views.lib和一个app入口js

  3. 【mongodb】 需求

    增删改查 增加:  (表名,增加内容) 删除: (表名,数据id) 改: (表名 根据id获取数据 修改 增加 查 (表名,字段 ) 关联查询? 请主站提供一下 在使用的接口

  4. 在wamp下PHP5.5安装php-redis扩展

    windows下开发用的xampp集成的环境,想装个php-redis扩展,扩展的github地址: https://github.com/nicolasff/phpredis 描述里找到window ...

  5. oracle中事务处理

    事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构 ...

  6. 常用的机器学习&数据挖掘知识点【转】

    转自: [基础]常用的机器学习&数据挖掘知识点 Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Le ...

  7. Careercup - Facebook面试题 - 5188884744896512

    2014-05-02 07:18 题目链接 原题: boolean isBST(const Node* node) { // return true iff the tree with root 'n ...

  8. asp.net中的mysql传参数MySqlParameter

    注意在asp.net中传参 string sql="select name,id from user where id=@id"; //@idm不需要引号 MySqlParamet ...

  9. php 安全处理方案

    Safe::mysqlSafe(); sql注入,升级5.3.6以上版本php 方案一:将所有请求中所有数据(get/post/cookie)实现mysql_escape_string进行安全处理. ...

  10. mysql数据库连接池 手动编写

    源码来源于http://www.toutiao.com/a6350448676050174209/,留存以供以后参考学习 先上一张项目托普图 然后分别列出各个文件的源码: MyPool.java(就是 ...