看我如何通过DNS历史记录绕过防火墙
字数 1808 2025-08-18 11:37:57
通过DNS历史记录绕过防火墙的技术详解
技术背景与原理
Web应用防火墙(WAF)如Cloudflare、Incapsula和SUCURI等通过拦截所有HTTP流量来保护网站安全。当用户访问受保护的网站时,DNS查询返回的是WAF的IP地址,而非源服务器的真实IP。这使得所有流量都必须经过WAF的过滤。
绕过原理:如果攻击者能够获取源服务器的真实IP地址,并且该服务器仍然接受直接连接,就可以绕过WAF的保护机制,直接与源服务器通信。
工具概述
bypass-firewalls-by-DNS-history.sh是一个Bash脚本工具,主要用于:
- 搜索DNS的A记录历史,寻找可能指向源服务器真实IP的历史记录
- 识别运行相同网站但不接收活动流量的旧服务器
- 获取子域名的IP地址(可能指向主域名)
工具功能详解
主要功能
-
寻找防火墙背后的真实IP:
- 通过查询DNS历史记录,寻找曾经指向源服务器的IP
- 验证这些IP是否仍然响应目标域名
-
发现旧版本服务器:
- 这些服务器通常托管过时的、未维护的网站版本
- 更容易存在已知漏洞(如SQL注入)
- 访问数据库的难度较低
-
子域名IP收集:
- 开发人员有时会让子域名IP指向主域名
- 这些子域名可能未被WAF保护
使用参数
| 参数 | 描述 | 示例 |
|---|---|---|
-d 或 --domain |
指定目标域名 | -d example.com |
-o 或 --outputfile |
指定输出文件保存IP地址 | -o ips.txt |
-l 或 --listsubdomains |
提供额外的子域名列表 | -l subdomains.txt |
-a 或 --checkall |
检查所有子域名的防火墙绕过状态 | -a |
依赖安装
可选依赖jq(用于解析输出结果和自动收集子域名):
apt install jq
技术实现细节
工作流程
-
DNS历史记录查询:
- 通过多个DNS历史记录服务查询目标域名的A记录历史
- 收集所有曾经指向该域名的IP地址
-
IP验证:
- 对收集到的IP地址进行验证
- 检查这些IP是否仍然响应目标域名
- 确认是否可以直接访问(绕过WAF)
-
子域名扩展:
- 收集目标域名的所有子域名
- 对每个子域名重复上述DNS历史记录查询过程
使用的Web服务
脚本利用了多个DNS历史记录查询服务(具体服务未在原文中列出,但通常包括如SecurityTrails、DNSdumpster等)。
实际应用方法
绕过WAF后的操作
-
修改hosts文件:
- Linux/Mac:
/etc/hosts - Windows:
c:\Windows\System32\Drivers\etc\hosts - 添加条目格式:
[真实IP] [域名] - 示例:
80.40.10.22 vincentcox.com
- Linux/Mac:
-
使用Burp Suite:
- 配置Burp Suite直接向真实IP发送请求
- 绕过WAF进行渗透测试
适用场景
-
安全审计:
- 评估WAF配置的有效性
- 发现可能被绕过的风险点
-
漏洞挖掘:
- 寻找旧版本服务器上的已知漏洞
- 进行SQL注入、SSRF等攻击测试
-
渗透测试:
- 作为完整渗透测试流程的一部分
- 评估目标系统的整体安全性
防御措施
针对网站管理员
-
IP隐藏:
- 确保源服务器只接受来自WAF的流量
- 配置防火墙规则拒绝直接访问
-
DNS记录清理:
- 定期检查并清理DNS历史记录
- 避免旧IP地址被公开
-
服务器退役:
- 完全下线不再使用的旧服务器
- 确保不再响应任何请求
针对安全团队
-
监控:
- 监控是否有直接访问源IP的尝试
- 设置警报机制
-
定期审计:
- 定期检查DNS历史记录暴露情况
- 评估WAF绕过风险
法律与道德考量
-
合法授权:
- 仅在获得明确授权的情况下使用该技术
- 遵守相关法律法规
-
责任披露:
- 发现漏洞后应遵循负责任的披露流程
- 避免造成不必要的损害
-
数据保护:
- 在测试过程中保护敏感数据
- 避免泄露用户隐私信息
技术演进
随着该技术的普及,WAF提供商也在不断改进防护措施,包括:
- IP轮换:定期更换源服务器IP
- 严格访问控制:只允许WAF IP访问源服务器
- DNS记录保护:限制DNS历史记录的公开性
因此,该技术的有效性可能会随时间变化,需要持续关注最新发展。