首页
社区
课程
招聘
[翻译]Gravitee邮件服务目录穿越
发表于: 2021-1-22 18:29 7887

[翻译]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 内容添加资源图像。

 

source code

 

如上图所示,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 注入 "漏洞。

 

为了增加漏洞的严重性,我们必须找到一个未经身份验证的端点来发送电子邮件。主页上的注册用户功能是一个很好的选择。姓氏和名字参数是可注入的,并在发送给用户的帐户验证电子邮件中显示。

 

下面的请求用于从服务器中提取任意文件。

 

提交payload

 

现在,我们只需要等待惊喜。

 

邮件附件

 

打开附件。。。干得漂亮!!!/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直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//