查看: 19338|回复: 3

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

[复制链接]
  • TA的每日心情

    2024-11-13 20:06
  • 签到天数: 1628 天

    [LV.Master]伴坛终老

    发表于 2020-10-28 23:34:53 | 显示全部楼层 |阅读模式
    漏洞复现
    看到发漏洞公告是 RESTful API 未授权,去官网搜了一下使用手册,总共有两种 RESTful API,一个 调度中心 RESTful API,一个 执行器 RESTful API。

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


    1. 说明:触发任务执行

    2. ------

    3. 地址格式:{执行器内嵌服务跟地址}/run

    4. Header:
    5.     XXL-JOB-ACCESS-TOKEN : {请求令牌}

    6. 请求数据格式如下,放置在 RequestBody 中,JSON格式:
    7.     {
    8.         "jobId":1,                                  // 任务ID
    9.         "executorHandler":"demoJobHandler",         // 任务标识
    10.         "executorParams":"demoJobHandler",          // 任务参数
    11.         "executorBlockStrategy":"COVER_EARLY",      // 任务阻塞策略,可选值参考 com.xxl.job.core.enums.ExecutorBlockStrategyEnum
    12.         "executorTimeout":0,                        // 任务超时时间,单位秒,大于零时生效
    13.         "logId":1,                                  // 本次调度日志ID
    14.         "logDateTime":1586629003729,                // 本次调度日志时间
    15.         "glueType":"BEAN",                          // 任务模式,可选值参考 com.xxl.job.core.glue.GlueTypeEnum
    16.         "glueSource":"xxx",                         // GLUE脚本代码
    17.         "glueUpdatetime":1586629003727,             // GLUE脚本更新时间,用于判定脚本是否变更以及是否需要刷新
    18.         "broadcastIndex":0,                         // 分片参数:当前分片
    19.         "broadcastTotal":0                          // 分片参数:总分片
    20.     }

    21. 响应数据格式:
    22.     {
    23.       "code": 200,      // 200 表示正常、其他失败
    24.       "msg": null       // 错误提示消息
    复制代码


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

    1. BEAN("BEAN", false, null, null),
    2. GLUE_GROOVY("GLUE(Java)", false, null, null),
    3. GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"),
    4. GLUE_PYTHON("GLUE(Python)", true, "python", ".py"),
    5. GLUE_PHP("GLUE(PHP)", true, "php", ".php"),
    6. GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"),
    7. GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1");
    复制代码


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

    XXL-JOB官方文档
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-23 15:57 , Processed in 0.022227 second(s), 16 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部