BugBounty:防火墙与缓存机制Bypass 造成SSRF
字数 1868 2025-08-26 22:11:22

Web应用防火墙与缓存机制Bypass导致SSRF漏洞利用分析

漏洞概述

本案例展示了一个复杂的漏洞利用链,攻击者通过以下步骤成功获取了AWS凭据:

  1. 绕过CloudFlare WAF防护
  2. 发现并利用LFI(本地文件包含)漏洞
  3. 绕过Web缓存机制
  4. 将LFI提升为SSRF(服务器端请求伪造)
  5. 通过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
  • 内部网络探测

    • 扫描内部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角色而非长期凭据
  • 定期轮换凭据
  • 实施最小权限原则

漏洞利用时间线

  1. 初始发现与WAF绕过
  2. LFI漏洞确认
  3. AWS环境识别
  4. SSRF尝试与缓存拦截
  5. 缓存机制分析与绕过
  6. AWS元数据枚举
  7. 凭据获取与验证

参考资源

  1. Nginx缓存配置指南 - DigitalOcean
  2. Nginx静态文件缓存 - HowtoForge
  3. AWS元数据服务安全最佳实践
  4. SSRF防护指南 - OWASP
Web应用防火墙与缓存机制Bypass导致SSRF漏洞利用分析 漏洞概述 本案例展示了一个复杂的漏洞利用链,攻击者通过以下步骤成功获取了AWS凭据: 绕过CloudFlare WAF防护 发现并利用LFI(本地文件包含)漏洞 绕过Web缓存机制 将LFI提升为SSRF(服务器端请求伪造) 通过SSRF读取AWS元数据获取凭据 漏洞挖掘过程详解 1. 初始发现与WAF绕过 目标识别 : 发现网站某些端点与内部文件系统存在交互 初步怀疑存在LFI漏洞 网站受CloudFlare防火墙保护 WAF绕过技术 : 直接向后端服务器发送请求,绕过CloudFlare 使用 dig 命令获取真实服务器IP: 假设后端服务器或负载均衡器未设置IP白名单限制 2. LFI漏洞利用 验证方法 : 修改Host头直接访问后端服务器 尝试读取 /etc/passwd 文件确认LFI存在 技术要点 : 通过响应确认LFI漏洞存在 发现服务器托管在AWS上 3. 从LFI到SSRF的转换 AWS元数据识别 : AWS实例元数据位于固定URL: http://169.254.169.254/latest/meta-data/ 尝试直接访问该URL 初始响应分析 : 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? 成功响应 : X-Proxy-Cache: MISS 确认绕过成功 获取到完整的AWS元数据目录结构 5. AWS凭据获取 凭据路径 : 获取内容 : 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 内部网络探测 : 扫描内部IP段 访问内部服务管理界面 防御措施 1. WAF配置强化 实施严格的IP白名单 禁止直接IP访问 配置所有流量必须通过CloudFlare 2. LFI防护 禁用不必要的文件系统访问 实施严格的输入过滤 使用白名单限制文件访问 3. 缓存机制加固 配置缓存键包含所有参数 对敏感路径禁用缓存 监控异常的缓存MISS事件 4. SSRF防护 禁用不必要的URL协议(如file://, gopher://) 实施出站流量过滤 对元数据接口实施访问控制 5. AWS安全最佳实践 限制元数据接口访问: 使用IAM角色而非长期凭据 定期轮换凭据 实施最小权限原则 漏洞利用时间线 初始发现与WAF绕过 LFI漏洞确认 AWS环境识别 SSRF尝试与缓存拦截 缓存机制分析与绕过 AWS元数据枚举 凭据获取与验证 参考资源 Nginx缓存配置指南 - DigitalOcean Nginx静态文件缓存 - HowtoForge AWS元数据服务安全最佳实践 SSRF防护指南 - OWASP