Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

漏洞简述

OneDev 是开源的一体化轻量DevOps平台,在OneDev 7.4.14及以前版本中存在路径遍历漏洞,具有项目管理权限的攻击者可以将恶意 jar 文件上传到 lib 目录,覆盖原有jar包,攻击者可利用此漏洞在服务器中写入任意文件或远程执行恶意代码。

  • 漏洞CVSS评分:8.8(高危)
  • 受影响组件版本范围:Onedev <= v7.4.14

漏洞分析

问题代码分析

项目管理员可以在 OneDev 的`build`模块对自己的一个项目进行构建,同时在`build`模块中提供了手动上传`Artifacts`功能。

以v7.4.14为例,当用户点击上传后会调用`ArtifactUploadPanel.java`中的`onSubmit`函数将该用户选择的自定义文件上传到服务器,其中如果用户自定义了`Directory` , `filePath`将会采用字符串拼接的方式将用户自定义的目录名和文件名进行组合,导致攻击者可以上传文件至任意路径。

Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

上传 Artifacts 流程验证

  1. 在上传`Artifacts`时任意选择一张图片进行上传,`Directory`可以自定义,这里先留空。
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
  1. 上传时如果自定义目录名为空,则默认上传到后台的项目对应的`artifacts`目录:
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

漏洞复现

  1. 创建一个新项目并进行构建(`build`)
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
  1. 系统`build`功能代码对应为`io.onedev.server-plugin-executor-serverdocker-7.4.14.jar`中的`ServerDockerExecutor`类。如果攻击者能将其替换为自己定义的恶意jar包,将会远程执行攻击者可控的代码。
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
  1. 因此攻击者可以制作一个恶意的jar包,将其命名为“io.onedev.server-plugin-executor-serverdocker-7.4.14.jar”,然后通过构建恶意路径(`../../../../../../lib`)上传到服务的lib目录(如/opt/onedev/lib),原有的同名jar包将被替换。
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
  1. 此时进入oneDev服务器“/opt/onedev/lib”目录进行查看,发现原来的“io.onedev.server-plugin-executor-serverdocker-7.4.14.jar”已经替换成攻击者上传的jar包。
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
  1. 由于执行`build`功能的 jar 包已被替换,重启服务后重新进行build,发现恶意代码被执行:
Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

针对路径遍历漏洞对开发者的建议

  • 避免在调用文件系统 API 时直接传递用户输入数据
  • 对用户提交的文件名进行归一化,并检查该文件名是否包含路径遍历序列如“..”、“/”、” “
  • 将用户上传内容限定至特定的上传路径
  • 针对文件访问的功能应使用一个硬编码的白名单列表,拒绝任何访问其他文件类型的请求

下图为 onedev v7.4.15针对路径遍历漏洞的修复代码:

Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

对用户的修复建议

将 Onedev 升级至 7.4.15 及更高版本

查看详细漏洞详情页

https://www.oscs1024.com/hd/MPS-2022-55460

快速检测项目中引用组件的安全风险

https://www.murphysec.com/

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/vulnerability-analysis/4471.html

(0)
上一篇 2023年1月9日 14:47
下一篇 2023年1月9日 15:07

相关推荐

  • 被忽视15年的Python漏洞 导致35万项目陷入代码执行风险

    Python 编程语言中一个被忽视了 15 年的漏洞现在重新成为人们关注的焦点,它可能影响超过 350,000 个开源存储库并可能影响代码执行。

    2023年2月6日
  • Ghost 博客系统后台代码执行漏洞分析

    漏洞简述 Ghost 是以Node.js语言开发的一款开源博客程序,在Github上其star为超过4万。 漏洞分析 漏洞因为需要后台权限,有一定利用条件,有趣的点在于Ghost的RCE漏洞是由于moment.js下的路径遍历和文件包含漏洞,再加上Ghost中的文件上传和指定locale功能。moment.js中的文件包含漏洞,在一般情况下可能影响较小,但结…

    2023年1月4日
  • Confluence WIKI OGNL注入漏洞(CVE-2022-26134)

    简述 6月4日,墨菲安全实验室监测发现Atlassian修复了Confluence Server 和 Confluence Data Center 中的OGNL注入漏洞。 Atlassian Confluence是企业常用的wiki系统,攻击者无需认证可利用漏洞在Confluence Server 或 Confluence Data Center 系统中执行…

    2023年1月4日
  • Django Trunc 和 Extract 方法存在 SQL 注入漏洞(CVE-2022-34265)

    漏洞简述 Django是一个由Python语言编写的开源Web应用框架,github上star为64.9K。 7月4日,Django官方修复了一个SQL注入漏洞。如果Trunc()的kind参数和Extract()的lookup_name参数没有进行安全过滤,可能会造成SQL注入的风险。 漏洞分析 以Django 4.0版本为例,可以通过官方提供的测试用例进…

    2023年1月4日
  • “Dirty Pipe”的故事-Linux 内核提权漏洞 (CVE-2022-0847)

    漏洞简述 3月7日,开发者 Max Kellermann 在他的博客(https://dirtypipe.cm4all.com/)中披露了一个能导致 Linux 权限提升的漏洞,编号为 CVE-2022-0847,他称之为 “The Dirty Pipe Vulnerability” (“脏管道”漏洞)。 Linux 5.10版本前的一次 commit 中,…

    2023年1月4日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741