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

相关推荐

  • Spring 新版本修复RCE漏洞,墨菲安全开源工具可应急排查

    漏洞简述 3月31日,spring 官方通报了 Spring 相关框架存在远程代码执行漏洞,并在 5.3.18 和 5.2.20.RELEASE 中修复了该漏洞。 漏洞评级:严重 影响组件:org.springframework:spring-beans 影响版本:< 5.3.18 和 < 5.2.20.RELEASE 的Spring框架均存在该…

    2023年1月4日
  • Apache IoTDB grafana-connector模块SQL注入分析

    漏洞简述 Apache IoTDB 是面向IoT场景存储时序数据的数据管理系统,具备跟Grafana、spark等系统的集成能力。 4月8日,IoTDB 修复了其中 grafana-connector 模块中的 SQL 注入漏洞。 由于 grafana-connector 模块中 BasicDaoImpl 类的 querySeriesInternal 方法存…

    2023年1月4日
  • Spark 存在 shell 命令注入(CNVD-C-2022-163612

    漏洞简述 3月24日,墨菲安全实验室情报预警监控发现 spark 提交修复 shell 命令注入的代码,当上传文件名可以被攻击者控制时,就可以构造恶意文件名造成远程任意命令执行。 Spark 是用于大规模数据处理的统一分析引擎。 用户上传文件后,tar 文件会被 hadoop 的 tar 命令解压,如果文件名被用户恶意构造后,就会导致 shell 命令注入。…

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

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

    2023年2月6日
  • Spring Cloud Function 3.0.0.RELEASE~3.2.2 版本SPEL表达式注入漏洞

    漏洞发现时间 2022-03-24 漏洞验证时间 2022-03-25,已第一时间提交CNVD 标题 Spring Cloud Function 3.0.0.RELEASE~3.2.2 版本SPEL表达式注入漏洞 漏洞编号 MPS-2022-6799 发现方式 墨菲安全实验室情报预警监控 语言 java 影响组件及版本 org.springframework…

    漏洞分析 2023年1月4日

发表回复

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

联系我们

400-180-9568

邮件:hi@murphysec.com

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

关注公众号

20230105-100741