BugBounty:防火墙与缓存机制Bypass 造成SSRF
字数 1868 2025-08-26 22:11:22
Web应用防火墙与缓存机制Bypass导致SSRF漏洞利用分析
漏洞概述
本案例展示了一个复杂的漏洞利用链,攻击者通过以下步骤成功获取了AWS凭据:
- 绕过CloudFlare WAF防护
- 发现并利用LFI(本地文件包含)漏洞
- 绕过Web缓存机制
- 将LFI提升为SSRF(服务器端请求伪造)
- 通过SSRF读取AWS元数据获取凭据
漏洞挖掘过程详解
1. 初始发现与WAF绕过
目标识别:
- 发现网站某些端点与内部文件系统存在交互
- 初步怀疑存在LFI漏洞
- 网站受CloudFlare防火墙保护
WAF绕过技术:
- 直接向后端服务器发送请求,绕过CloudFlare
- 使用
dig命令获取真实服务器IP:dig www.redacted.com - 假设后端服务器或负载均衡器未设置IP白名单限制
2. LFI漏洞利用
验证方法:
- 修改Host头直接访问后端服务器
- 尝试读取
/etc/passwd文件确认LFI存在
技术要点:
- 通过响应确认LFI漏洞存在
- 发现服务器托管在AWS上
3. 从LFI到SSRF的转换
AWS元数据识别:
- AWS实例元数据位于固定URL:
http://169.254.169.254/latest/meta-data/ - 尝试直接访问该URL
初始响应分析:
HTTP/1.1 200 OK
Server: nginx
X-Proxy-Cache: HIT
Content-Length: 0
- 200状态码确认请求到达API
- 空响应表明触发了Nginx缓存
X-Proxy-Cache: HIT确认请求被缓存拦截
4. Web缓存机制绕过
缓存机制分析:
- Nginx通常基于URL路径进行缓存
- 标准URL如
https://example.com/a.html会匹配缓存规则 - 修改URL参数可以绕过缓存匹配
绕过技术:
- 在URL末尾添加
?或其他特殊字符:
http://169.254.169.254/latest/meta-data?
成功响应:
HTTP/1.1 200 OK
Server: nginx
X-Proxy-Cache: MISS
Content-Length: 315
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
product-codes
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
X-Proxy-Cache: MISS确认绕过成功- 获取到完整的AWS元数据目录结构
5. AWS凭据获取
凭据路径:
http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance?
获取内容:
- AWS访问ID
- 秘密访问密钥
- 安全令牌
潜在影响:
- 完全控制AWS账户
- 访问所有托管资源
- 可能的数据泄露和系统破坏
技术要点总结
1. WAF绕过技术
- 直接IP访问:通过dig获取真实IP,绕过CloudFlare防护
- Host头覆盖:保持Host头为目标域名,避免被拦截
- 协议利用:使用HTTP协议而非HTTPS可能降低检测率
2. Web缓存绕过技术
-
URL参数技巧:
- 添加无意义参数:
?bypass - 添加空参数:
? - 添加随机字符串:
?cachebuster=random
- 添加无意义参数:
-
其他缓存绕过方法:
- 修改User-Agent头
- 添加不常用的HTTP头
- 使用非标准端口
3. SSRF高级利用
-
AWS元数据利用:
- 基础路径:
http://169.254.169.254/latest/meta-data/ - 凭据路径:
.../identity-credentials/ec2/security-credentials/ec2-instance
- 基础路径:
-
其他云服务元数据:
- Google Cloud:
http://metadata.google.internal/computeMetadata/v1/ - Azure:
http://169.254.169.254/metadata/instance?api-version=2017-04-02
- Google Cloud:
-
内部网络探测:
- 扫描内部IP段
- 访问内部服务管理界面
防御措施
1. WAF配置强化
- 实施严格的IP白名单
- 禁止直接IP访问
- 配置所有流量必须通过CloudFlare
2. LFI防护
- 禁用不必要的文件系统访问
- 实施严格的输入过滤
- 使用白名单限制文件访问
3. 缓存机制加固
- 配置缓存键包含所有参数
- 对敏感路径禁用缓存
- 监控异常的缓存MISS事件
4. SSRF防护
- 禁用不必要的URL协议(如file://, gopher://)
- 实施出站流量过滤
- 对元数据接口实施访问控制
5. AWS安全最佳实践
- 限制元数据接口访问:
aws ec2 modify-instance-metadata-options --instance-id i-1234567890abcdef0 --http-tokens required --http-endpoint enabled - 使用IAM角色而非长期凭据
- 定期轮换凭据
- 实施最小权限原则
漏洞利用时间线
- 初始发现与WAF绕过
- LFI漏洞确认
- AWS环境识别
- SSRF尝试与缓存拦截
- 缓存机制分析与绕过
- AWS元数据枚举
- 凭据获取与验证