挖洞经验 | 从负载均衡或CDN应用中发现的配置类漏洞
字数 1560 2025-08-18 11:39:30
负载均衡与CDN配置类漏洞挖掘指南
前言
在Web应用安全测试中,除了常见的XSS、CSRF、SQL注入等漏洞外,负载均衡和CDN配置类漏洞往往容易被忽视。本文详细总结了几种典型的配置类漏洞案例,帮助安全研究人员扩展测试思路。
漏洞类型与挖掘方法
1. 负载均衡错误配置导致用户信息泄露
漏洞特征:
- 删除Cookie后请求返回其他用户的个人信息
- 每次请求可能返回不同用户的数据
- 信息通常出现在服务端HTML脚本或JS文件中
测试步骤:
- 使用Burp被动扫描收集所有HTTP响应中的邮箱地址
- 检查不属于自己的邮箱地址
- 定位这些邮箱在响应中的具体位置
- 删除所有Cookie后重放请求,验证是否仍能获取他人信息
- 多次重放请求,观察是否返回不同用户数据
技术原理:
当用户没有特定Cookie时,负载均衡可能错误地将其他用户的响应返回给当前用户,导致信息泄露。
危害:
通过持续请求可获取大量注册用户的敏感信息。
2. 白名单用户信息泄露
漏洞特征:
- 在响应脚本中发现非常规邮箱列表
- 这些邮箱属于实际存在的有效账户
- 通常与安全限制(如WAF)的白名单相关
测试方法:
- 检查所有JS脚本文件内容
- 寻找包含多个邮箱地址的参数(如whitelistExternalUserEmails)
- 验证这些邮箱是否对应真实账户
- 分析这些账户是否具有特殊权限
技术原理:
安全机制的白名单配置被错误地暴露在前端脚本中。
3. 负载均衡浅拷贝缓存问题
漏洞特征:
- 间歇性出现(如每小时一次)
- 难以稳定复现
- 包含其他用户的实例信息
技术原理:
后端对象实体使用浅拷贝方式,当引用其他用户数据时会发生暂时性缓存,导致信息泄露。
测试建议:
- 长时间监控响应内容
- 记录异常响应的发生时间,寻找规律
- 重点关注对象渲染相关的页面
4. 授权头信息泄露漏洞
漏洞特征:
- 用户授权信息出现在JS脚本中
- 即使删除Cookie仍会返回
- 与loc参数相关
- 被CDN缓存
测试步骤:
- 检查JS脚本中是否包含用户名和Authorization头
- 删除会话Cookie后验证信息是否仍存在
- 修改loc参数观察响应变化
- 使用不同用户账户测试
- 验证CDN缓存行为
利用方式:
- 钓鱼利用:构造无效loc参数的链接诱骗用户点击,使其授权信息被缓存
- 枚举攻击:通过loc参数枚举获取其他用户信息
厂商常见误区:
低估授权头信息的敏感性,实际上可导致账户完全被接管。
通用测试方法论
-
响应内容分析:
- 系统检查Burp历史记录中的所有HTTP响应
- 重点关注用户名、邮箱、手机号等个人信息
- 使用Burp被动扫描自动收集邮箱地址
-
异常状态测试:
- 删除Cookie后的请求行为
- 未认证状态下的响应差异
- 参数变异测试
-
JS脚本审计:
- 全面检查所有JS文件内容
- 寻找硬编码的敏感信息
- 分析参数与响应内容的关联性
-
缓存行为分析:
- 验证CDN缓存策略
- 检查不同用户是否收到相同缓存内容
- 测试参数对缓存的影响
防御建议
-
负载均衡配置:
- 确保正确隔离不同用户的会话数据
- 避免在无认证状态下返回任何用户信息
- 实施严格的响应过滤
-
白名单管理:
- 白名单信息不应暴露在前端
- 使用间接引用而非直接显示敏感数据
-
对象拷贝策略:
- 避免使用浅拷贝处理包含用户数据的对象
- 实施深拷贝或数据脱敏
-
授权信息保护:
- 禁止授权头信息出现在任何前端资源中
- 设置适当的CDN缓存策略
- 对敏感参数实施访问控制
总结
负载均衡和CDN配置类漏洞虽然不如传统漏洞常见,但往往能导致严重的信息泄露。安全测试人员应当:
- 培养检查异常响应的习惯
- 重视"看似无害"的信息泄露
- 深入分析间歇性出现的问题
- 不忽视任何微小的异常现象
通过系统化的测试方法,可以发现这些隐藏的安全隐患,帮助提升整体应用安全性。