Reflected XSS in Amazon India
字数 1577 2025-08-26 22:11:45
Amazon India 反射型XSS漏洞分析与教学文档
漏洞概述
本文档详细分析了一个在Amazon印度子站(datavault.amazon.in)上发现的反射型跨站脚本(XSS)漏洞。该漏洞存在于文件下载功能中,由于未对用户输入进行适当过滤和转义,导致攻击者能够注入任意JavaScript代码。
漏洞发现过程
1. 信息收集阶段
- 使用
amass工具对amazon.in域名进行子域名枚举 - 使用
Aquatone工具对发现的子域名进行页面截屏 - 通过对比截屏结果,选择
datavault.amazon.in站点进行深入测试
2. 初步分析
- 登录后页面显示有限信息(仅注册邮箱)
- 查看页面源代码发现有趣的JavaScript文件
- 重点分析
installnationCommons.js文件
3. 关键函数分析
发现两个关键函数,暴露了潜在的漏洞端点:
// 函数1: 下载可负担性文档
function downloadAffordabilityDocument()
// 函数2: 通用文档下载
function downloadDocument()
从函数中提取出两个URL端点:
https://datavault.amazon.in/affordabilityDownloadReport?DocumentName=<DOCUMENT_NAME>https://datavault.amazon.in/data/DownloadReport?DocumentName=<DOCUMENT_NAME>&RequestType=<REQUEST_TYPE>
漏洞验证
1. HTML注入测试
Payload: <b>BOLD</b>cd
测试URL:
https://datavault.amazon.in/data/DownloadReport?DocumentName=123&RequestType=<b>BOLD</b>cd
结果:
- 页面成功渲染了
<b>标签,显示为粗体"BOLD" - 确认用户输入未经过滤直接嵌入HTML
2. XSS验证测试
Payload: <script>alert('XSS');</script>
测试URL:
https://datavault.amazon.in/data/DownloadReport?DocumentName=123&RequestType=<script>alert('XSS');</script>
结果:
- JavaScript弹窗成功执行
- 确认存在反射型XSS漏洞
攻击利用分析
攻击向量
- 构造恶意URL,包含XSS payload
- 通过社交工程诱使用户点击该URL
潜在影响
- 会话劫持:虽然cookie设置了HttpOnly和Secure属性,防止直接窃取
- 钓鱼攻击:注入伪造的表单诱导用户输入凭证
- 重定向攻击:将用户导向恶意站点
- 键盘记录:注入键盘记录脚本捕获用户输入
限制因素
- 需要用户交互(点击链接)
- Cookie设置了安全属性,增加了攻击难度
漏洞修复建议
-
输入验证:
- 对
RequestType参数实施严格的白名单验证 - 只允许预期的字符和格式
- 对
-
输出编码:
- 对所有动态内容进行HTML实体编码
- 使用上下文相关的编码(HTML属性、JavaScript、URL等)
-
内容安全策略(CSP):
- 实施严格的内容安全策略
- 限制内联脚本执行
-
其他防护措施:
- 设置
X-XSS-Protection头 - 使用
HttpOnly和Securecookie标志(已实现)
- 设置
漏洞报告时间线
- 报告日期:2018年3月1日
- 响应时间:24小时内获得Amazon安全团队响应
- 修复确认:2018年3月12日收到修复确认邮件
教学要点总结
- 子域名枚举是发现测试目标的重要步骤
- 源代码分析能揭示隐藏的功能和潜在漏洞
- 参数测试应包含所有用户可控的输入点
- 逐步验证从HTML注入到完整XSS的执行过程
- 影响评估需考虑实际攻击场景和限制因素
- 修复方案应包含防御深度措施
扩展学习
- 练习使用
amass和Aquatone进行目标侦察 - 研究不同上下文中的XSS payload构造
- 学习现代浏览器安全机制如何影响XSS利用
- 探索自动化XSS检测工具的使用(如XSStrike等)
- 研究其他知名网站的XSS案例报告
通过本案例,安全研究人员可以学习到从目标发现到漏洞验证的完整过程,以及企业级网站中可能存在的安全漏洞模式。