挖洞经验 | 从MicroStrategy入手发现Facebook的XSS漏洞
clouds
- 关注
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
99+
挖洞经验 | 从MicroStrategy入手发现Facebook的XSS漏洞

该篇文章讲述了作者围绕Facebook采用的第三方应用MicroStrategy Web SDK,经源码分析发现存在于Facebook网站中的两个反射型漏洞(rXSS),在前一篇文章中,作者就已经在MicroStrategy身上发现了SSRF漏洞收获了$30000的奖励。这里我们继续来看看他发现rXSS漏洞的过程。
第一个XSS漏洞发现过程
由于Facebook生产环境网站中采用了MicroStrategy Web SDK,因此,有了上一次漏洞发现,这里我着重把关注点放到MicroStrategy的文件上传功能上,寄希望能实现webshell上传。
针对https://m-nexus.thefacebook.com预建任务端点taskProc的枚举后,我发现其存在的一个注册且可访问的文件上传功能-uploadFile:





从代码分析来看,这里的文件上传功能仅只是从HTML上传页面中处理上传文件,然后把其文件内容显示给客户端,并不会把上传文件存储到服务端中。因此,前面我想上传webshell的想法就基本无望了。
但是我注意到,这里的UploadFileTask类在处理上传文件后的加载显示过程中,没有采取任何输出格式编码,这可能会导致主网站m-nexus.thefacebook.com中的任意JS代码执行。
从上可以看出,至少反射型XSS漏洞是存在的,那如何利用呢?接下来,我创建了一个网页式的Payload:



咋办呢?经过反复试验,我创建了一个很小的HTML+JavaScript代码文件,在其中嵌入了一个针对https://m-nexus.thefacebook.com/*******的典型POST操作,去触发一个alert(document.domain)的XSS执行。



第二个XSS漏洞发现过程
没过几天,我又在MicroStrategy Web SDK的预建任务中枚举发现了用于抓取wiki-pedia内容的wikiScrapper任务-wikiScrapperTask,它用参数searchString来匹配获取wiki-pedia中的相关数据内容。

然后我发现,如果我在其中给定形如http:// 或 https://的网站URL字符串,它就会执行针对相应http:// 或 https://网站的内容抓取操作,且是任意网站都行。而且同样的是,它在加载给定网站的Web内容时,也没采用任何输出格式编码,所以基于上述第一个XSS漏洞分析来看,这里应该同样会存在XSS漏洞。
要执行针对任意网站任意web页面的抓取,需要满足两个条件。一个是网站页面须是带标签的HTML页面,另一个就是其中须包含一个表格格式,且其表格标签必须包含一个wikitable的维基表格类。
为了实现漏洞利用,我在匿名Web页面托管服务HTML Pasta中创建了满足上述两个条件的页面,生成了相应的文件链接-craftierduskydolphin.htmlpasta.com:

然后,在m-nexus.thefacebook.com的wikiScrapper任务参数searchString中传入上述文件链接,形成以下URL,直接在浏览器中打开,即成功触发了XSS:
https://m-nexus.thefacebook.com/servlet/taskProc?taskId=wikiScrapper&taskEnv=html&taskContentType=json&searchString=https://{PASTE_LINK_HERE}&shouldSuggest=false&publicDataSuggestionURL=&publicDataSearchURL=&publicDataPageURL=


总结
我用上述源码分析方式前后发现了m-nexus.thefacebook.com上的3个XSS漏洞,收到了将近了一万美金的奖励。m-nexus.thefacebook.com现已不能再公开访问了。经验就是,当我们针对目标站点找不到线索时,可以深入看看其中部署的第三方应用。
参考来源
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 clouds 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
挖洞经验 | 获取国际象棋对战网站Chess.com五千万用户信息
2021-02-24
挖洞经验 | 多种针对开启HTTP PUT方法的漏洞利用
2021-02-23
挖洞经验 | 以账户更新方式实现某大公司网站普通用户到管理员的提权
2021-02-22
文章目录