XXL-Job hessian反序列化实战利用
字数 761 2025-08-26 22:11:35
XXL-Job Hessian反序列化漏洞实战利用分析
漏洞概述
XXL-Job是一个分布式任务调度平台,其某些版本中存在Hessian反序列化漏洞,攻击者可以利用该漏洞在目标系统上执行任意代码。
漏洞原理
Hessian是一种基于二进制的RPC协议,在Java中广泛使用。当XXL-Job服务端接收并反序列化恶意构造的Hessian数据时,如果未进行适当的安全检查,可能导致远程代码执行。
影响版本
根据社区信息,该漏洞影响XXL-Job的多个版本,具体版本范围需要进一步确认。
漏洞利用步骤
1. 环境探测
首先需要识别目标系统是否使用XXL-Job,可通过以下特征识别:
- 默认端口:9999
- 特定URL路径:/xxl-job-admin
2. 构造恶意Hessian序列化数据
利用Hessian协议构造包含恶意代码的序列化数据:
// 示例恶意序列化数据构造代码
public class MaliciousHessianPayload {
public static byte[] generate() throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Hessian2Output out = new Hessian2Output(bos);
// 构造恶意对象链
out.writeObject(new EvilObject());
out.close();
return bos.toByteArray();
}
}
3. 发送恶意请求
将构造好的恶意Hessian数据发送到XXL-Job服务端:
curl -X POST http://target:9999/xxl-job-admin/hessian-endpoint \
-H "Content-Type: application/hessian" \
--data-binary @malicious.hessian
4. 利用链构造
常见的利用链可以基于以下Gadget Chain:
TemplatesImpl链JdbcRowSetImpl链- 其他可利用的第三方库链
防御措施
1. 升级版本
升级到XXL-Job官方最新版本,已修复此漏洞。
2. 输入验证
对Hessian反序列化数据进行严格验证:
public class SafeHessianDeserializer {
public static Object deserialize(byte[] data) throws Exception {
// 使用白名单机制
WhitelistObjectInputStream ois = new WhitelistObjectInputStream(new ByteArrayInputStream(data));
return ois.readObject();
}
}
3. 安全配置
- 禁用不必要的Hessian端点
- 配置网络ACL限制访问来源
- 启用JVM安全管理器
漏洞验证
可使用以下方法验证漏洞是否存在:
- 发送无害的序列化数据观察响应
- 使用DNSLog等技术验证是否可触发外部连接
参考链接
免责声明
本文仅用于安全研究和技术学习目的,未经授权对他人系统进行测试或攻击是违法行为。