其他
XVE-2023-21328|XXL-JOB默认密钥审计分析
01
威胁情报
02
EXP
Github上已经看到的一位师傅的利用EXP,有GUI功能很多,觉得已经够好了:
https://github.com/charonlight/xxl-jobExploitGUI
03
漏洞审计与分析
01
复现环境
这里呆哥IDEA抽风了,前面截图用的VScode,后面实在忍不了重启切回IDEA。
02
审计思路
默认密钥的问题,联想问题发生位置:
登录认证时,调用默认密钥,生成可绕过Token
调用执行器Controller时,调用默认密钥绕过
执行器Config配置出错
我们先按这个思路来审计,其实一般直接先看Config的,然后再去看Controller和Service,但是由于说明上指出是执行器的默认密钥,所以我先看的Controller和Service。
03
登录认证
先看登录的Controller:
找到登录的Service:
里面调用一个函数makeToken():
这里面获取登录查询到的的账号密码和角色权限等信息的字符串去生成,所以这里不能伪造。
综上,登录认证无法伪造。
04
执行器面板服务分析
全走完都没看到token校验和权限控制,所以估计是全局拦截的:
还是没啥关系,结束。
05
执行器Config分析
重启抽风好了,切回IDEA,没跳转太难受。
看到就这两个地方有调用,其实看到start()方法也就懂了:
先看第一个:
这个逻辑就是当accessToken不空且长度不为0的时候设置XXL-JOB-ACCESS-TOKEN的请求头为default_token
Key出来了校验在这:
token写在配置文件里一直在那传:
然后看第二个类:
继承的netty的方法:
明了。
04
总结
请求头加入:
JOB-ACCESS-TOKEN: default_token
即可。