如何进行XXL-JOB API接口未授权访问RCE漏洞复现

XXL-JOB描述

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

一、 漏洞详情

此次漏洞核心问题是 GLUE 模式。XXL-JOB 通过“GLUE模式”支持多语言以及脚本任务,该模式任务特点如下:

● 多语言支持:支持 Java、Shell、Python、NodeJS、PHP、PowerShell……等类型。

● Web IDE:任务以源码方式维护在调度中心,支持通过 Web IDE 在线开发、维护。

● 动态生效:用户在线通过 Web IDE 开发的任务代码,远程推送至执行器,实时加载执行。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如上图所示,如果在 GLUE 模式任务代码中写入攻击代码,推送到执行器执行即可造成远程攻击。

【漏洞描述】

XXL-JOB的Restful API接口或RPC接口没有配置认证措施,未授权的攻击者可构造恶意请求,造成远程执行命令

【漏洞评级】

高危

【受影响版本】

XXL-JOB <= 2.2.0

二、 环境搭建

整体思路:源代码下载->Maven安装依赖->配置部署“调度中心”->配置部署“执行器项目”->完成部署

本地开发环境:Java8+Maven3.6

1. Github下载源代码

地址:https://github.com/xuxueli/xxl-job/releases/tag/v2.2.0

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

2. Maven下载所需要的依赖

Idea打开解压后的源代码,自动会进行pom中的相关依赖安装,也可以在终端使用maven命令下载所需要的依赖

3. 数据库配置

调度数据库初始化SQL脚本位置为:

/xxl-job/doc/db/tables_xxl_job.sql

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

因为本地未安装mysql,故使用docker安装。

a) docker pull mysql:5.7

b) sudo docker run -p 3306:3306 –name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

这样我们就启动了mysql容器,账号为root,密码为123456

使用navicat接连数据库

如何进行XXL-JOB API接口未授权访问RCE漏洞复现可以点击左下角,完成测试连接。在导入的数据库右键,选择运行SQL文件,点击开始即可完成数据库的导入。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

4. 配置部署“调度中心”

调度中心项目:xxl-job-admin

作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。可根据实际情况自行修改application.properties中的数据库配置

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

执行XxlJobAdminApplication启动调度中心

如何进行XXL-JOB API接口未授权访问RCE漏洞复现我们使用推荐的Springboot来管理执行器

如何进行XXL-JOB API接口未授权访问RCE漏洞复现查看配置文件,发现xxl.job.executor.logpath参数,我们可以新建或修改该路径,以防止程序执行出现问题。Mac新系统不存在data路径,发现使用mkdir创建路径发现失败,这是因为mac系统中关闭了Sip,使用sudo mount -uw /来解除Sip的限制。运行XxlJobExecutorApplication来启动执行器。浏览器打开//localhost:8080/,看到登入界面,确保启动成功,默认登录账号“admin/123456”

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

注意点:

建议先创建/data/applogs/xxl-job,程序中多处配置文件使用该路径

修改调度中心数据库配置

Linux/Unix可使用lsof来查看端口占用情况,防止启动失败

调度中心和执行器可以根据实际情况分开部署

三、漏洞复现

查看官方文档可以看到执行器RESTful API中触发任务接口说明

如何进行XXL-JOB API接口未授权访问RCE漏洞复现其中的任务运行模式有以下几种

如何进行XXL-JOB API接口未授权访问RCE漏洞复现查看GulueTypeEnum源代码

如何进行XXL-JOB API接口未授权访问RCE漏洞复现所以我们利用Burpsuite构造我们的POC

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Tips:

修改glueSource时,如果执行未生效,请修改jobId

当重启项目时,发现端口启动异常,请关闭BurpSuite

由于 XXL-JOB 官方版本原生自带鉴权组件,开启后可保障系统底层通讯安全。XXL-JOB 作者表示正常情况下调度中心与执行器底层通讯是安全的,不存在远程命令漏洞。但如果执行器未开启访问令牌,会导致无法识别并拦截非法的调度请求。恶意请求方可以借助 GLUE 模式,推送恶意攻击代码实现远程攻击。因此,XXL-JOB 作者认为该问题本质上不属于 “漏洞”,官网版本提供了鉴权组件,开启即可进行防护。

四、修复建议

1. 开启 XXL-JOB 自带的鉴权组件:官方文档中搜索 “xxl.job.accessToken”,按照文档说明启用即可。

2. 端口访问限制:通过配置安全组限制只允许指定IP才能访问端口

感谢你的阅读,相信你对“如何进行XXL-JOB API接口未授权访问RCE漏洞复现”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!

文章标题:如何进行XXL-JOB API接口未授权访问RCE漏洞复现,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/23990

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月8日 下午10:50
下一篇 2022年9月8日 下午10:52

相关推荐

  • Java多态的概念和特点是什么

    一、多态的概念 继承关系使一个子类能继承父类的特征,并且附加一些新特征。子类是它的父类的特殊化,每个子类的实例都是其父类的实例,但是反过来不成立。例如:每个圆都是一个几何对象,但并非每个几何对象都是圆。因此,总可以将子类的实例传给需要父类型的参数。参考案例如下: public class Polym…

    2022年9月1日
    46400
  • Word首页不显示页码怎么设置

    首页不显示页码设置方法: 1、首先打开word文档。 2、然后点击上面菜单栏中的“插入”。 3、之后去点击功能里面的“页码”。 4、最后先去选择当前的页码, 然后点击右侧的删除键即可。 到此,相信大家对“Word首页不显示页码怎么设置”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关…

    2022年8月31日
    1.2K00
  • mysql的2002错误怎么解决

    在mysql中,2022错误指的是编译的时候没有指定socket,所以mysql命令连接的时候还是使用的默认值,因为socket位置变了,而mysql命令不知道,所以就出现了这样的错误,可以修改“/etc/my.cnf”文件来解决该错误。 本教程操作环境:windows10系统、mysql8.0.2…

    2022年9月1日
    1.3K00
  • html中头部标签是什么

    html中“<head>”是头部标签。head标签用于定义文档的头部,它是所有头部元素的容器;文档的头部描述了文档的各种属性和信息,包括文档的标题、在Web中的位置以及和其他文档的关系等。head中的元素有base、link、meta、script、style、title。 本教程操作环…

    2022年9月15日
    1.1K00
  • 电脑0x0000007e蓝屏如何修复

    0x0000007e蓝屏解决方法: 方法一: 1、点击左下方的搜索栏输入运行并打开。 2、双击列表中的运行将其打开。 3、然后在运行对话框中输入代码: for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1 方法二: 1、如果我们进不去系统,那…

    2022年9月18日
    95800
  • easyrecovery如何恢复U盘

    easyrecovery恢复U盘的方法 1、打开软件,找到你要恢复的文件类型,点击下一步。 2、选择你要恢复的硬盘。 3、手动查找需要恢复文件,这里有三种板块功能,可以都点开看看,找到你想要的那个文件。 4、等你找到你想要恢复的文件之后,点击恢复就可以了。 到此,相信大家对“easyrecovery…

    2022年9月26日
    47800
  • 如何分析Haproxy端口复用

    本文作者:Spark(Ms08067内网安全小组成员) 一、概述 Haproxy是一个使用c语言开发的高性能负载均衡代理软件,提供tcp和http的应用程序代理,免费、快速且可靠。类似frp,使用一个配置文件+一个server就可以运行。优点: 大型业务领域应用广泛 支持四层代理(传输层)以及七层代…

    2022年9月10日
    83000
  • 如何搭建zabbix监控及邮件报警

    一、zabbix 1.1 简介 zabbix 是一款开源的功能强大的分布式监控系统,一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。 zab…

    2022年9月18日
    1.1K00
  • windows中appdata文件夹怎么查看

    appdata文件夹查看方法: 1、首先打开桌面的计算机,再点击“工具”选择“文件夹选项”。 2、然后点击“查看”选项栏。 3、勾选下面的“显示隐藏的文件、文件夹和驱动器”。 4、最后只要进入c盘,就可以看到appdata文件夹了。 关于“windows中appdata文件夹怎么查看”这篇文章的内容…

    2022年8月31日
    1.4K00
  • Word尾注怎么转换成脚注

    尾注转换成脚注的方法: 1、首先点击任务选项栏中的“引用”。 2、然后去点击里面的“插入尾注”。 3、之后点击下面的小箭头,选择“脚注和尾注”。 4、在弹出的窗口中点击“转换”。 5、之后去勾选“尾注全部转换成脚注”。 6、最后点击确定即可搞定。 感谢各位的阅读,以上就是“Word尾注怎么转换成脚注…

    2022年8月31日
    1.1K00
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部