找回密码
 立即注册
注册 登录
×
热搜: 活动 交友 discuz
查看: 85|回复: 1

漏洞深度分析|Apache Fineract 远程代码执行漏洞

[复制链接]

1

主题

5

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-12-7 21:51:15 | 显示全部楼层 |阅读模式
项目介绍

Apache Fineract 是一个开源的系统,用于核心银行系统平台化建设。为创业者、金融机构和服务提供商提供了一个可靠、健壮的、可负担得起的金融服务解决方案。
项目地址

https://github.com/apache/fineract
漏洞概述

Apache Fineract 在 1.8.1 之前的版本中由于 FileSystemContentRepository.java 类对用户传入的文件路径名限制不当从而存在路径遍历漏洞,经过身份验证的攻击者可利用此漏洞删除或覆盖系统文件,Fineract 加载攻击者上传的恶意文件时将远程执行恶意代码。
影响版本

apache/fineract@(-∞, 1.8.1)
环境搭建

参考官方文档,使用docker-compose搭建
https://github.com/apache/fineract
漏洞复现


  • 官方文档中构建的docker默认用户是"User" : "nobody:nogroup"因此需要修改用户权限为root,修改方式为在docker-compose文件中添加user: "0:0"
  • 上传测试文件到静态资源目录



  • 上传成功


漏洞分析

首先查看官方补丁发现修改了多处文件,其中比较核心的是对FileSystemContentRepository.java的修改,在patch代码中对传入敏感函数的文件路径进行了过滤,这些函数有deleteFileInternal、fetchFile、writeFileToFileSystem


在对上传文件的路径进行校验的同时,也使用白名单的方式检查了上传文件的类型


看完补丁再分析下调用链。Fineract项目的组织方式跟普通spingboot项目不太一样,Fineract的模块都是按目录放到一起的。存在漏洞的模块是documentmanagement,代码组织方式如下:


分析代码发现api入口点如下:
org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource#updateClientImage(java.lang.String, java.lang.Long, java.lang.Long, java.io.InputStream, FormDataContentDisposition, FormDataBodyPart)


调用了addNewClientImage方法


忽略不重要步骤,最终上传的文件被writeFileToFileSystem处理,而该函数就是patch修复的函数之一


修复方式

升级到1.8.1版本(包含)以上
参考链接

https://nvd.nist.gov/vuln/detail/CVE-2022-44635
https://github.com/apache/fineract/commit/90f854b68886458a466b048807c26ccf31a6f555
回复

使用道具 举报

0

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2025-2-4 02:32:01 | 显示全部楼层
介是神马?!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 黑客通

GMT+8, 2025-4-18 11:22 , Processed in 0.096487 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表