Dubbo的反序列化安全问题-Hessian2】的更多相关文章

0 前言 本篇是系列文章的第一篇,主要看看Dubbo使用反序列化协议Hessian2时,存在的安全问题.文章需要RPC.Dubbo.反序列化等前提知识点,推荐先阅读和体验Dubbo以及反序列化漏洞. Dubbo源码分析 RPC框架dubbo架构原理及使用说明 RPC 框架 Dubbo 从理解到使用(一) [RPC 框架 Dubbo 从理解到使用(二) 1 反序列化协议-Hessian2 hessian2是由caucho开发的基于Binary-RPC协议实现的远程通讯库,知名Web容器Resin的…
目录 0 前言 1 Dubbo的协议设计 2 Dubbo中的kryo序列化协议触发点 3 Dubbo中的fst序列化协议触发点 3.1 fst复现 3. 2 思路梳理 4 总结 0 前言 本篇是Dubbo反序列化安全问题的学习和研究第二篇,来看看Dubbo2.x下,由于dubbo的数据包协议设计安全问题,导致攻击者可以选定危险的反序列化协议从而实现RCE,复现漏洞为CVE-2021-45641 Apache Dubbo协议绕过漏洞 1 Dubbo的协议设计 由于Dubbo可以支持很多类型的反序列…
对于远程通信,往往都会涉及到数据持久化传输问题.往大了说,就是,从A发出的信息,怎样能被B接收到相同信息内容!小点说就是,编码与解码问题! 而在dubbo或者说是java的远程通信中,编解码则往往伴随着序列化与反序列化! 普通java对象要想实现序列化,一般有几个步骤: 1. 实现 Serializable 接口; 2. 生成一个序列号: serialVersionUID, (非必须,但建议); 3. 重写 writeObject()/readObject() 自定义序列化,如有必要的话; 4.…
一.实验简介 实验所属系列: 系统安全 实验对象:本科/专科信息安全专业 相关课程及专业: 计算机网络 实验时数(学分):2 学时 实验类别: 实践实验类 二.实验目的 Apache Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现.本实验详细介绍了有关的系统知识和分析该漏洞原因并复现该漏洞.通过该实验了解该漏洞,并利用该实验了解.基本掌握漏洞环境搭建技巧,通过复现该漏洞,了解工具的一些知识. 三.…
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. dubbo 支持多种序列化方式并且序列化是和协议相对应的.比如:dubbo协议的 dubbo, hessian2,java,compactedjava,rmi协议缺省为java,以及http协议的json等. dubbo序列化:阿里尚未开发成熟的高效java序列化实现,阿里不建议在生产环境使用它hessian2序列化:hessian是一种跨语言的高效二进制序列化方式.但这里实际不是原生…
转: dubbo 支持的9种协议 文章目录 一.9种协议        1.dubbo 协议 (默认)        2.rmi 协议        3.hessian 协议        4.http 协议        5.webservice 协议        6.thrift 协议        7.memcached 协议        8.redis 协议        9.rest ( 就是 RestFull)    二.多协议配置        不同服务使用不同协议      …
Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的. 下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍. 1.各协议的比较 协议名称 实现描述 连接 使用场景 dubbo 传输:mina.netty.grizzy 序列化:dubbo.hessian2.java.json     dubbo缺省采用单一长连接和NIO异步通讯    1.传入传出参数数据包较…
目录 0 前言 1 找源头 1.1 找到触发点 1.2 可用的gadget 1.3 向上推触发点 2 构造poc 2.1 开启HttpServer 2.2 hessian2序列化过程简述 3 poc 4 总结 5 Dubbo<=2.7.13可用的POC 5.1 原理分析 5.2 可RCE到2.7.13的POC 6 再次总结 0 前言 1月15号看到dubbo的CVE-2021-43297通报,收集了一下各种说明,只在阿里云的通报中发现了一点提示信息https://help.aliyun.com/…
最近工作中遇见了一个小问题,在此记录一下,大致是这样的,有一父类,有一个属性traceId,主要是记录日志号,这样可以把所有日志串起来,利于排查问题,所有的pojo对象继承于此,但是其中一同事在子类pojo中也增加了这一个属性,在消费者端给traceId设置了值,但经过序列化解析后,提供者端这个traceId时,值为空,解决问题很简单啊,把子类中的traceId属性去掉搞定. 虽然问题很好解决但是这让笔者很懵逼啊,什么状况,都清楚地,实例化的子类,私有属性,取的肯定是实例设定的值,虽然我对此深信…
环境: win10 + jdk 1.8 + dubbo 2.5.10 问题描述: 当一个对象(此对象内包含多个CopyOnWriteArrayList对象) 作为参数调用RPC接口后, 服务提供者拿到的对象中的CopyOnWriteArrayList, 引用都相同了(即变成了同一个对象). 问题范围缩小: Dubbo Serialization 反序列化时会有此问题, 用一下代码可以重现问题 import com.alibaba.dubbo.common.serialize.support.du…