首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hessian 反序列化及相关利用链

    前不久有一个关于Apache Dubbo Http反序列化的漏洞,本来是一个正常功能(通过正常调用抓包即可验证确实是正常功能而不是非预期的Post),通过Post传输序列化数据进行远程调用,但是如果Post传递恶意的序列化数据就能进行恶意利用。Apache Dubbo还支持很多协议,例如Dubbo(Dubbo Hessian2)、Hessian(包括Hessian与Hessian2,这里的Hessian2与Dubbo Hessian2不是同一个)、Rmi、Http等。Apache Dubbo是远程调用框架,既然Http方式的远程调用传输了序列化的数据,那么其他协议也可能存在类似问题,例如Rmi、Hessian等。@pyn3rd师傅之前在twiter[1]发了关于Apache Dubbo Hessian协议的反序列化利用,Apache Dubbo Hessian反序列化问题之前也被提到过,这篇文章[2]里面讲到了Apache Dubbo Hessian存在反序列化被利用的问题,类似的还有Apache Dubbo Rmi反序列化问题。之前也没比较完整的去分析过一个反序列化组件处理流程,刚好趁这个机会看看Hessian序列化、反序列化过程,以及marshalsec[3]工具中对于Hessian的几条利用链。

    03

    java.io.InvalidClassException异常解决

    serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作,如Java(TM)对象序列化规范中所述。 序列化运行时将每个可序列化类与版本号相关联,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与该序列化兼容的该对象的类。如果接收者为具有与相应发送者类的serialVersionUID不同的对象加载了一个类,则反序列化将导致InvalidClassException。 通俗理解就是serialVersionUID是适用于Java的序列化机制,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是java.io.InvalidClassException。 serialVersionUID两种生成方式: a.显式声明,该字段必须是static,final和long类型: private static final long serialVersionUID = 1L; b.如果没有显式声明serialVersionUID,JVM将使用自己的算法生成默认SerialVersionUID。

    01

    serialized学习笔记「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。在网上看了一下java的serialized技术,具体就没怎么测试,只是小小总结了一下。 serialized主要用于一下情况: a)对对象进行读写操作时; b)使用套接字在网络上传输对象数据时; c)通过RMI传输对象时; 若要序列化对象,则只需implements Serializable接口即可。序列化动作可以在我们需要时进行,即使项目已经进入尾声。 我们在序列化对象时,需要主要java的序列化有几个特殊地方: 1.static变量不会被序列化。即使我们在反序列后能够获取到它的值,但请注意,这个值是static变量缓存在内存中。 2.transient修饰的变量意为临时变量也不会被序列化。 同时我们在implements Serializable后,会发现类中多了private static final long serialVersionUID 变量,请注意该变量有其自已的作用。在反序列化时,jvm会使用被反序列化文件中的serialVersionUID 与本地实体类中的serialVersionUID 进行对比,以判断两者是否是同一个版本,如果是,则正常反序列化,否则jvm会提示版本不一致异常。如果实体类中没有该serialVersionUID ,则jvm则会在每次编译时自动为其生成一个serialVersionUID 。个人建议保存其serialVersionUID ;

    03
    领券