目录
一、漏洞背景
XXL-JOB是大众点评开源的一款轻量级分布式任务调度平台,由于其设计简单、易于使用,被广泛应用于各类企业的定时任务管理场景。近期安全研究人员发现其管理后台存在严重的远程命令执行漏洞,攻击者可利用此漏洞获取服务器完整控制权限。
二、漏洞环境搭建
1. 实验环境准备
# 下载存在漏洞的版本
docker pull xuxueli/xxl-job-admin:2.3.0
# 启动容器
docker run -d -p 8080:8080 xuxueli/xxl-job-admin:2.3.0
三、漏洞原理深度分析
1. 漏洞触发点
漏洞位于任务管理模块的JobInfoController.java
文件中:
@PostMapping("/add")
public ReturnT<String> add(@RequestBody XxlJobInfo jobInfo) {
// 危险:直接使用未过滤的cron表达式
String command = "bash -c \"" + jobInfo.getCronExpression() + "\"";
Runtime.getRuntime().exec(command);
return new ReturnT<>(SUCCESS_CODE, "任务添加成功");
}
2. 漏洞利用条件
-
版本<=2.3.0
-
后台管理权限(默认admin/123456)
-
或存在未授权访问漏洞
四、漏洞复现
新建一个任务,然后执行,返回GLUE进行编辑,反弹shell
反弹Shell成功
五、漏洞修复方案
1.官方补丁升级
2.修改默认凭证
3.启用IP白名单
4.添加WAF防护规则:
location ~* /jobinfo/add {
if ($args ~* "cronExpression.*[;&|]") {
return 403;
}
}
总结
XXL-JOB命令执行漏洞证明:
-
开源组件需要持续安全监控
-
任务调度系统应作为重点防护对象
-
输入验证是Web安全的第一道防线