freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

代码审计 | JFinal CMS系统存在文件读取漏洞
我不是二蛋 2024-12-30 10:54:40 194965
所属地 山西省

一、cms简介:

JFinalCms是开源免费的JAVA企业网站开发建设管理系统,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码。

本文是关于JFinal CMS漏洞分析学习,将围绕存任意文件读取漏洞进行分析学习,大纲:

1、环境搭建
2、文件读取漏洞分析

二、环境搭建

下载源码,使用idea导入

创建相应的数据库,更改配置信息

然后启动环境,登录到后台

三、文件读取漏洞分析

这里我们使用的方法是全局搜索关键字配合网页功能点灰盒审计

我们依次进入这些功能点,看看有什么发现

在系统管理里面的模板管理编辑这个模块中我们发现url存在文件名跟路径极有可能可能会存在文件读取漏洞

我们根据这个关键字去源码中找一下这个代码

跟踪带路由的这个Controller层代码

再找edit关键字

我们分析一下主要edit中的主要代码

if (StringUtils.isBlank(fileName)) {
render(CommonAttribute.ADMIN_ERROR_VIEW);
return;
}
这三行代码检查fileName是否为空或仅包含空白字符。如果是这样,它会渲染(显示)一个错误视图,
并提前退出方法。CommonAttribute.ADMIN_ERROR_VIEW应该是定义了管理员错误页面路径的一个常量。


String filePath = "";
if(StringUtils.isNotBlank(directory)){
filePath = "/"+directory.replaceAll(",", "/")+"/"+fileName;
}else{
filePath = "/"+fileName;
}
这几行代码构建了文件路径。如果directory不为空,则用逗号分隔的目录字符串替换为斜杠,并将其
与fileName拼接起来形成完整路径。如果directory为空,则只使用fileName创建路径。replaceAll
方法用于将所有出现的逗号替换为斜杠,以适应文件路径格式。


setAttr("content", StringEscapeUtils.escapeHtml(TemplateUtils.read(filePath)));
这一行读取由filePath指定的文件内容,通过TemplateUtils.read方法读取文件内容,并使用
StringEscapeUtils.escapeHtml转义HTML特殊字符,防止XSS攻击等安全问题,然后将结果设置为
content属性,以便在视图中显示。


通过directory判断这段代码,我们可以确定当directory为空时,可以根据fileName来创建路径读取文件。因此此处存在文件读取漏洞


我们验证一下,因为是在windows系统下,文件的根路径不会像Linux系统一样是统一的根路径,而是自己的底盘。

我们这里在G盘根目录下创建了一个1.txt


我们抓包进行测试一下


成功读取到文件,确定存在文件读取漏洞


# 黑客 # 网络安全 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 我不是二蛋 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
代码审计
我不是二蛋 LV.2
蛋蛋蛋蛋蛋
  • 11 文章数
  • 18 关注者
Java代码审计 | 某电商系统 漏洞分析
2025-03-12
代码审计 | 某edu CMS漏洞分析
2025-03-08
代码审计 | 新蜂商城管理系统漏洞分析
2025-02-13
文章目录