Philips.com的反射型XSS
背景
正如大家都了解到的,XSS攻击能造成巨大的破坏:偷取cookie、攻击受害者的浏览器,以及将其用于钓鱼攻击以获取用户的登录凭证。
而在这篇文章中,我们将介绍Adobe Experience Manager(AEM)系统中的一个反射型XSS,而且该XSS成功绕过了WAF,从而使攻击者可以悄无声息的发动钓鱼攻击。
飞利浦
我们的团队之所以瞄准飞利浦。大概是因为今年他们获得了“荷兰最著名公司”大奖。全球无数客户信任他们,这也使他们成为网络攻击者的首要目标。
此外,他们对漏洞处理方面也很负责,所以我可以放心地测试他们。是时候拿到我们的荣誉了!
侦察
如果想找到XSS漏洞,该从哪里开始?虽然这没有严格的规则,但我总是从Aquatone开始,它能帮助我发现尽可能多的子域。在这之后,我启动了Burpsuite,根据我的知识,四处寻找漏洞!
Burpsuite会捕获所有请求和响应,并用这些数据创建一个站点地图。这使我们能够快速了解网站的结构,它还允许我们重复发送特定请求,检查页面是否有XSS漏洞。
长话短说,经过几个小时的测试,我没有发现任何XSS漏洞。我用Burpsuite测试了所有不同参数,但它们都被正确地转义了。飞利浦干得好!
网站框架
接下来该怎么办?我思考了一下,决定从网站框架入手!
为了知道飞利浦网站使用哪种Web框架,我使用了whatcms.org这个网站。它能够检测320个不同的CMS系统;而我也成功获得了框架种类!
当然,从页面源码,也可得到关键信息:
现在我们知道网站使用了Adobe Experience Manager(AEM),我们可以开始了解该CMS的详细内容,看看哪里可能存在漏洞。
Adobe Experience Manager
除了阅读官方文档,我也尝试通过几个关键词的组合在谷歌上进行搜索,结果,我发现了一些有趣的东西。
从以上图片中,我们可以看到,这个系统存在一个调式模式,官方建议在实际应用中要关闭调式模式,并且还给出了一系列测试“payload”,那么,如果我们在飞利浦网站的后面加上/?debug=layout
,会发生什么呢?
欧!它们居然没关闭调式模式!我们再试试插入HTMl代码
那么XSS呢?
WAF
现在我们有了漏洞点,但我们还需要绕过WAF的拦截。而识别目标所使用WAF的一种快速方法是使用whatwaf。使用方式如下。
从上我们可以看出,网站所用WAF是ModSecurity和AkamaiGHost
通过漫长的手工测试,我发现这两个WAF拦截了众多敏感词汇,但我还是找到了有效的payload,并且还发现网页加载了jQuery。
payload如下:
我使用了jQuery中的getScritp函数,从外界加载了恶意脚本。然后我们再稍稍处理一下
钓鱼
XSS的弹框并不能满足我,我开始尝试进行钓鱼攻击,因为它造成的危害程度和范围都远远大于弹框。因此接下来,我将简单介绍下钓鱼攻击。
值得注意的是,飞利浦利用Janrain在本地浏览器中存储用户的详细信息,所以我们最好能偷取到用户登入后的凭证。
偷取用户凭证的关键代码如下:
var user = (localStorage.getItem("janrainCaptureProfileData")) ? localStorage.getItem("janrainCaptureProfileData") : "Not logged in";
再次绕过
飞利浦最初的修复方案是添加一条新的防火墙规则,拦截所有的HTML标签。但依旧使调试模式保持打开。针对这种情况,我们可以插入缺少>字符的HTML代码。
https://www.philips.nl/healthcare/<body%20alt=al%20lang=ert%20on mouseenter="top['al'+lang](/PoC%20XSS%20Bypass%20by%20Jonathan%20Bouman/)"?debug=layout
从上图中可以看到,我拆分了alert这个关键字,然后再用top[attribute1+attribute2]
合起来;其次就是利用br这个html标签来关闭body标签。
最简单的解决方案当然就是禁用调试模式。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/@jonathanbouman/reflected-xss-at-philips-com-e48bf8f9cd3c
最新评论