CVE-2023-37754 PowerJob 未授权访问导致远程代码执行漏洞

CVE-2023-37754 PowerJob 未授权访问导致远程代码执行漏洞

近期PowerJob爆发因未授权访问导致远程代码执行漏洞,本人曾在年初对此项目进行过源代码审计,因此决定复现一下。同时将年初写过的审计报告整理发布。
在这里插入图片描述

项目介绍

PowerJob是一个开源分布式计算和作业调度框架,它允许开发人员轻松地在自己的应用程序中调度任务。

项目地址

https://github.com/PowerJob/PowerJob

https://gitee.com/KFCFans/PowerJob

受影响的组件

https://mvnrepository.com/artifact/tech.powerjob/powerjob-official-processors

漏洞概述

PowerJob 是一款开源的分布式任务调度框架。

由于 PowerJob 未对网关进行鉴权,4.3.3 及之前版本中,未经授权的攻击者可向 /instance/detail 端点发送恶意构造的 instanceId 参数远程执行任意代码。

影响版本

tech.powerjob:powerjob-server@[1.0.0, 4.3.3]

环境搭建

1、下载源码,解压后导入IDEA,使用maven进行依赖编译。

最新稳定版源码下载地址:

https://github.com/PowerJob/PowerJob/tags
在这里插入图片描述

2、初始化数据库。

在这里插入图片描述

数据源配置文件路径:

others\powerjob-mysql.sql

数据源配置文件路径:

powerjob-server\powerjob-server-starter\src\main\resources\application-daily.properties

3、启动PowerJobServerApplication
在这里插入图片描述

4、访问PowerJob控制台,初始化应用。

访问Web页面:http://localhost:7700/
在这里插入图片描述
点击应用注册按钮,填写应用名称(appName)和密码。

例如:test/123456 。

在这里插入图片描述

5、初始化 PowerJob-worker。

在配置文件中配置powerjob.worker.app-name信息,该字段与注册时填写的appname一致。

配置文件路径:

powerjob-worker-samples\src\main\resources\application.properties

在这里插入图片描述

配置完成后启动SampleApplication服务。

访问控制台,输入刚才注册的账号密码进行登录

登录成功后即可在首页看到机器信息。
在这里插入图片描述

6、将当前windows环境迁移至linux。(可选)

7.1:将当前windows中mysql的数据库文件迁移至linux。

转存储windows mysql的数据库文件,导出结构和数据,迁移至linux的mysql中。

7.2:修改配置文件中的ip地址。

7.3:依次将两个jar包复制到linux目录下并运行

先运行powerjob-server-starter.jar,再运行powerjob-worker-samples.jar。

运行命令:Java -jar xxx.jar

在这里插入图片描述

漏洞复现

通过对项目进行环境搭建和阅读官方文档可知,PowerJob官方对于一些通用的任务(shell脚本、SQL查询操作、命令执行等),编写了可开箱即用的maven插件。详见:https://www.yuque.com/powerjob/guidence/official_processor
在这里插入图片描述
开发者一直将PowerJob按纯内网系统去设计,因此在安全上一直没有过多的处理。经审计发现该项目的全部Restful api都未进行身份效验,由于项目代码是完全开源的,攻击者可轻松构造数据包执行系统命令。

1:构造恶意数据包,增加一个新任务(jobparams为命令执行参数)
在这里插入图片描述
2:访问获取全部任务的job/list接口,拿到新增任务的jobid
在这里插入图片描述
3:运行任务
在这里插入图片描述
至此,漏洞复现完成,全程未进行身份效验。

修复建议

项目方表示一直将PowerJob按纯内网系统去设计,因此在安全上一直没有过多的处理。由于近期漏洞的影响,项目方也发现还是存在不少外网部署使用的用户,因此在后续版本会全面引入用户身份和权限体系来解决这个问题。

临时缓解措施:目前暂无修复方案,请不要将项目部署在外网。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值