Java反序列化漏洞简介
Java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,Java中的 ObjectOutputStream 类的writeObject()方法可以实现序列化。
Java反序列化即逆过程,由字节流还原成对象。ObjectInputStream类的readObject()方法用于反序列化。
因此要利用Java反序列化漏洞,需要在进行反序列化的地方传入攻击者的序列化代码。如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。
下面结合一些demo介绍一款用于 检测和简单利用 java 反序列化漏洞的burpsuite 扩展: Java Deserialization Scanner。
插件安装
该插件可以在 burp Suite 的 BApp Store 中安装 , 安装好后需要配置 ysoserial(一款java反序列化漏洞payload生成器) 的路径。
你可以自己从github上下载源码,编译。或者使用我刚编译的: https://pan.baidu.com/s/1eSxPPQi 密码: nxv4. 放到 burpsuite.jar 同一目录,然后填上文件名即可(如上图所示)。
插件测试
插件作者很贴心,不仅写了个这么棒的插件,还附带了很多示例。我以 sampleC