-
-
[翻译]Gravitee邮件服务目录穿越
-
发表于: 2021-1-22 18:29 7887
-
Write-up for a Path Traversal on Gravitee.io
本文将展示一篇由Michelin CERT团队在Gravitee.io网站发现的比较罕见的漏洞。
团队能够将低危漏洞与路径遍历结合,通过未授权访问的api接口访问服务器文件系统。
Gravitee.io
Gravitee.io提供 Java 开发的开源 API 管理解决方案,帮助人们精细地控制用户访问 API 的是谁、何时以及如何访问 API。
你可以访问他们的网站:https://gravitee.io/
在github上也有源代码。我们邀请您为这个项目做出贡献。
邮件发送服务
我们比较感兴趣的部分代码是邮件服务,此实现类是从应用程序发送电子邮件的唯一入口点
通常电子邮件发送功能通常容易受到服务器端模板注入的影响(最近著名的示例之一是 Jira CVE-2019-1158 中的 RCE,此处提供了一篇优秀的文章或不太严重的 HTML 注入漏洞(HackerOne 报告))。当使用HTML写邮件时,可以使用 HTTP/HTTPS 或CID(或Content-ID)嵌入图像包含图像
第二处是Gravitee 用于引入资源图像的功能点,如公司logo等。
首先让我们看下这个类是怎样引入CID image的。
深入分析代码
电子邮件服务使用以下方法从 HTML 内容添加资源图像。
如上图所示,HTML解析器Jsoup的作用为收集HTML邮件中的<img>标签,并且提取其中的src属性。
该服务将检查嵌入的图像是否是一个url或者一个本地的资源,实现方式是第二部分的lambda函数,来检查src是否以‘http’开头。基于此,服务将href属性改为cid:xxx(链接到CID资源)
该方法的最后一个循环将邮件中资源的二进制数据与"FileSystemResource"的新实例引入,字符串"res"是作为从解析的"<img>"标记取来的。
在此方法中传入以下 的HTML 代码将包含/etc/passwd文件。
1 | <img src = '../../../../../../../etc/passwd' / > |
顺便说一下,验证漏洞的要点是在哪里以及如何插入有效的payload。
HTML注入
在发现该漏洞之前,Michelin CERT已经通过各种输入payload发现电子邮件中未防护"HTML 注入 "漏洞。
为了增加漏洞的严重性,我们必须找到一个未经身份验证的端点来发送电子邮件。主页上的注册用户功能是一个很好的选择。姓氏和名字参数是可注入的,并在发送给用户的帐户验证电子邮件中显示。
下面的请求用于从服务器中提取任意文件。
现在,我们只需要等待惊喜。
打开附件。。。干得漂亮!!!/etc/passwd出现了
负责任的披露和修复
此漏洞(CVSSv3分数:8.6)是在 Gravitee 的内部渗透测试项目中发现的。
第一步是联系Gravitee开发团队,他们具有出色的反应能力,并在不到一周时提出并部署了修复程序。
感谢Gravitee.io让我们披露这篇文章。
注:
原文:https://medium.com/@maxime.escourbiac/write-up-of-path-traversal-on-gravitee-io-8835941be69f
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [下载]burpsuite_pro_v2021.2下载 8008
- [翻译]Gravitee邮件服务目录穿越 7888
- [原创]2020KCTF 第八题 牛刀小试 wp 5911
- [求助]有没有内网流量监控的方案或产品 7947
- [求助]安卓app会检测wifi代理,怎么绕过 18692