渗透测试中的CDN挑战:识别和利用安全弱点

CDN

CDN的产生背景及作用

随着互联网用户数量激增,网络流量不断增加,许多问题逐渐突显:

  • 用户和网站之间的访问路径过长。
  • 突发的大流量可能造成链路拥堵。
  • 不同地区用户访问网站的响应速度存在明显差异。

为了解决这些问题,提高用户访问速度,优化信息传输效率,同时缓解源站服务器的压力,CDN(内容分发网络) 应运而生。

CDN的作用

  • 缩短访问路径:通过在用户与源站之间增加一层缓存网络,将用户请求引导至最近的边缘节点。
  • 降低网络拥堵:分散大流量到边缘节点,避免对源站和核心网络的过度依赖。
  • 提升响应速度:用户能够从距离最近的缓存节点获取内容,以最快速度获得所需信息。
  • 优化用户体验:减少时延,提高内容加载速度。
  • 节约资源:缓解源站服务器压力,优化带宽使用。

通俗类比:淄博烧烤案例

假如所有人都要去淄博吃烧烤,但每个人距离淄博的距离不同,而且蜂拥而至会导致去淄博的高速路堵车。为了解决这个问题,可以在各地开设"分店",用户可以就近前往分店品尝烧烤,既解决了线路拥堵问题,又让人们更快享用美食。


CDN概述

CDN(Content Delivery Network,内容分发网络)是一种通过在现有互联网架构中增设缓存层的加速技术。其核心理念是将网站内容缓存到距离用户最近的网络边缘节点,使用户可以快速获取所需内容。

CDN的主要目标

  1. 提高网站访问的速度和稳定性。

  2. 减少因网络带宽、用户访问量等问题引发的性能瓶颈。

  3. 通过分布式架构,提升高并发支持能力。

  4. 增强安全性

    • 缓解DDoS攻击压力。
    • 隐藏源站服务器的真实IP地址。

隐藏真实IP的功能

隐藏真实IP的实现原理

CDN通过让用户请求的流量优先经过分布式的缓存节点,避免直接与源站交互,从而隐藏源站的真实IP地址。其基本原理如下:

  1. 当用户发起请求时,DNS解析指向CDN的边缘节点,而不是源站地址。
  2. 边缘节点接收并处理用户请求,如果缓存中有数据,则直接返回给用户。
  3. 只有在缓存节点未命中(Cache Miss)的情况下,边缘节点会向源站发起请求,并将返回数据缓存更新。
  4. 用户始终无法直接接触源站,源站的真实IP地址被有效保护。

隐藏真实IP的优势

  1. 抵御网络攻击

    • 防止DDoS、CC攻击等恶意流量直接打到源站。
    • 边缘节点分布式地吸收恶意流量,确保源站安全。
  2. 增强隐私保护

    • 源站服务器的位置和IP信息不对外暴露,降低入侵风险。
  3. 简化运维

    • 管理者无需对源站频繁上线防火墙或调整IP规则,CDN负责流量过滤和分发。

隐藏真实IP的典型场景

  • 金融行业:防止源站服务器的IP信息被攻击者利用。
  • 电商业务:在大促期间防止恶意流量攻击源站。
  • 政府及企业:提高重要系统的隐私性和安全性。

客户端访问源站过程(未使用CDN)

当客户端通过浏览器访问一个网站(如 www.example.com)时,以下过程会发生:

  1. 客户端查询本机缓存

    • 首先在本机的 hosts 文件和 DNS 缓存中查询域名对应的 IP 地址。
    • 若找到结果,则直接使用,无需进一步查询。
  2. 本地 DNS 服务器查询

    • 若本机缓存中未找到,客户端会向本地 DNS(ISP 提供)发送查询请求。
  3. 迭代解析过程

    • 本地 DNS 若无记录,则通过以下步骤逐级向更高级别 DNS 服务器查询:

      1. 根域名服务器查询,获取顶级 DNS 的地址。
      2. 顶级域名服务器查询,获取权威 DNS 的地址。
      3. 权威 DNS 查询,获取域名对应的 IP 地址。
    • 最终,本地 DNS 将解析结果返回给客户端。

  4. 向源站发起 HTTP 请求

    • 客户端根据解析后的 IP 地址,向源站服务器发起 HTTP 请求。
    • 源站返回对应的内容供客户端使用。

示意图

rust 复制代码
 客户端 -> 本地 DNS -> 根 DNS -> 顶级 DNS -> 权威 DNS -> 源站服务器

DNS记录类型

DNS 解析过程依赖多种记录类型,以下是常见记录类型:

  • A 记录(Address) :将域名直接解析为 IPv4 地址。

  • NS 记录(Name Server) :指定负责解析域名的 DNS 服务器。

  • CNAME 记录(Canonical Name) :将一个域名指向另一个域名,便于管理和负载均衡。

    • 示例:www.example.com 可以通过 CNAME 指向 cdn.example.com,而后者通过 A 记录解析为实际 IP 地址。

通过CDN获取缓存内容的过程

CDN 的核心工作是将用户请求导向最近的缓存节点,而非源站服务器。这一过程中涉及两级负载均衡:

  1. 全局负载均衡(GSLB) :选择合适的边缘节点集群。
  2. 本地负载均衡(SLB) :选择集群内最优的缓存节点。

请求过程

  1. 客户端发起域名请求,首先向本地 DNS 查询。

  2. 本地 DNS 定位到 CDN 的全局负载均衡服务器(GSLB)。

  3. GSLB 根据用户位置和网络条件,选择最优的本地负载均衡服务器(SLB),返回其 IP 地址。

  4. 客户端向 SLB 发起 HTTP 请求。

  5. SLB 检查缓存节点是否有请求的资源:

    • 如果存在,则直接返回缓存内容。
    • 如果不存在,则向源站获取资源并更新缓存后返回。

CDN的优势

  1. 加速访问:缩短用户请求路径,让用户从最近的边缘节点获取内容,减少时延。
  2. 缓解拥堵:分散流量到多个缓存节点,避免对源站和核心网络的过度依赖。
  3. 提升稳定性:分担源站压力,应对高并发场景。
  4. 节约资源:降低带宽使用,优化服务器性能。
  5. 隐藏真实IP:通过缓存节点处理用户请求,源站IP地址不会暴露,有效防止恶意攻击。
  6. 优化用户体验:提升页面加载速度,减少因网络抖动导致的性能问题。

对比:普通 DNS 请求 vs 使用 CDN 的请求

普通 DNS 请求

  1. 用户提交域名。
  2. 客户端向本地 DNS 查询。
  3. 本地 DNS 逐级迭代解析,获取源站 IP。
  4. 客户端直接向源站服务器发送请求。
  5. 源站返回内容。

使用 CDN 的请求

  1. 用户提交域名。
  2. 客户端向本地 DNS 查询域名。
  3. 本地 DNS 定位到 CDN 的 GSLB。
  4. GSLB 返回最优 SLB 的 IP。
  5. 客户端向 SLB 发起请求。
  6. SLB 定位最优缓存节点并返回内容,或从源站获取更新数据。

面试题:

如何确认一个系统是否使用了 CDN?如何获取其真实 IP?

1、确认:

先使用nslookup解析域名查看IP是否有Aliases使用别名,和多个IP地址。

2、绕过方式:

1、用国外的IP去ping,有些只针对国内IP使用CDN

2、查找子域名:

  • 很多时候,一些重要的站点会做CDN,而一些子域名站点并没有加入CDN,而且跟主站在同一个C段内,

3、DNS历史解析记录:

  • 查询域名的历史解析记录,可能会找到网站使用CDN前的解析记录,从而获取真实ip

4、网站邮件头信息:

  • 通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP

5、利用SSL证书寻找真实IP:

  • 证书颁发机构 (CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址

6、IP备案去查更多的域名

CDN和DNS区别?CDN绕过思路?

  • CDN:内容分发网络,主要作用就是让用户就近访问 网络资源,提高响应速度,降低网络拥堵。 DNS:域名服务器,主要作用就是将域名翻译成ip地 址。
  • CDN绕过思路:子域名,内部邮件,黑暗引擎搜索, 国外ping,证书及DNS查询,app抓包,配置不当泄露,扫全网,DOS攻击等
相关推荐
qq1778036236 小时前
SCDN跟高防IP相比哪个更好
网络·tcp/ip·安全
xyzzklk15 小时前
解决无法远程管理Windows Server服务器核心安装
运维·服务器·网络·windows·网络协议·安全
AORO_BEIDOU15 小时前
卫星电话打通救灾生命线,确保“找得到人、通得上话”
5g·安全·智能手机·信息与通信
AORO_BEIDOU15 小时前
“天上北斗+地上5G”,遨游北斗终端绘危急特场景通信新蓝图
5g·安全·智能手机·信息与通信
昵称难产中15 小时前
浅谈云计算04 | 云基础设施机制
计算机网络·安全·云原生·架构·云计算
昵称难产中15 小时前
浅谈云计算07 | 云安全机制
安全·微服务·云原生·云计算
广州创科水利16 小时前
深圳观澜森林公园及五指耙森林公园边坡自动化监测
物联网·安全·自动化