Java反序列化初探+URLDNS链

摘要:什么是java反序列化&URLDNS链分析

<1> 什么是序列化/反序列化

序列化,其实就是将数据转化成一种可逆的数据结构,自然,它的逆过程就叫做反序列化。

目的: 方便数据的传输与存储

通常我们在编程的时候,我们需要将本地已经实例化的某个对象,通过网络传递到其他机器当中。为了满足这种需求,就有了所谓的序列化和反序列化

不同于php序列化对象 O:4:"test":2:{s:3:"str";s:5:"luoke";s:3:"int";i:10;} 是一串数据,Java序列化之后成了二进制文件 是 字节流

(1) 为什么会产生安全问题?

java反序列化漏洞的关键出现在 readObject 上,反序列化必定执行readObject方法,而在执行java.io.ObjectInputStream.readObject()之前,会先尝试执行 反序列化的类的 readObject方法,如果这个类重构了readObject方法,错误的调用了一些危险方法,则会造成漏洞。

只要服务端反序列化数据,客户端传递类的readObject中代码会自动执行,给予攻击者在服务器上运行代码的能力.

阅读更多