XXL-job 执行器 RESTful API 未授权访问RCE

admin 2021年1月28日23:32:01评论697 views字数 1340阅读4分28秒阅读模式

漏洞复现

看到发漏洞公告是 RESTful API 未授权,去官网搜了一下使用手册,总共有两种 RESTful API,一个 调度中心 RESTful API,一个 执行器 RESTful API。


测试了一下,发现问题出现在执行器 RESTful API。其中有个触发任务执行的说明:

说明:触发任务执行
------
地址格式:{执行器内嵌服务跟地址}/run
Header: XXL-JOB-ACCESS-TOKEN : {请求令牌}
请求数据格式如下,放置在 RequestBody 中,JSON格式: { "jobId":1, // 任务ID "executorHandler":"demoJobHandler", // 任务标识 "executorParams":"demoJobHandler", // 任务参数 "executorBlockStrategy":"COVER_EARLY", // 任务阻塞策略,可选值参考 com.xxl.job.core.enums.ExecutorBlockStrategyEnum "executorTimeout":0, // 任务超时时间,单位秒,大于零时生效 "logId":1, // 本次调度日志ID "logDateTime":1586629003729, // 本次调度日志时间 "glueType":"BEAN", // 任务模式,可选值参考 com.xxl.job.core.glue.GlueTypeEnum "glueSource":"xxx", // GLUE脚本代码 "glueUpdatetime":1586629003727, // GLUE脚本更新时间,用于判定脚本是否变更以及是否需要刷新 "broadcastIndex":0, // 分片参数:当前分片 "broadcastTotal":0 // 分片参数:总分片 }
响应数据格式: { "code": 200, // 200 表示正常、其他失败 "msg": null // 错误提示消息    }

    注意其中的任务模式 glueType,翻了下代码,有下面几种:

BEAN("BEAN", false, null, null),GLUE_GROOVY("GLUE(Java)", false, null, null),GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"),GLUE_PYTHON("GLUE(Python)", true, "python", ".py"),GLUE_PHP("GLUE(PHP)", true, "php", ".php"),GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"),GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1");

用 GLUE_SHELL 构造一下请求包,直接在 glueSource 参数值写 bash 命令就可以了:

XXL-job 执行器 RESTful API 未授权访问RCE

XXL-JOB官方文档

https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3.md

本文始发于微信公众号(安全微焦点):XXL-job 执行器 RESTful API 未授权访问RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年1月28日23:32:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXL-job 执行器 RESTful API 未授权访问RCEhttp://cn-sec.com/archives/172256.html

发表评论

匿名网友 填写信息