Java安全之反序列化篇-URLDNS&Commons Collections 1-7反序列化链分析
作者:p1g3@D0g3 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 本篇将以URLDNS以及Commons Collections系列漏洞作为Java反序列化基础篇的练习,仅以巩固对反序列化这类漏洞的理解。 目前已经有很多java反序列化的学习文章供我们学习,所以我算是站在巨人的肩膀上完成了这篇文章,如果有什么错误的地方,欢迎指正,感谢。 下文将以yso代替ysoserial,以cc代替Commons Collections进行分析。ysoserial的payload可以通过访问 payloads 获得。 以下描述的链中涉及到的class均实现了Serializable,所以均可被反序列化,这点将不再提及。 URLDNS URLDNS是反序列化时经常会用到的链,通常用于快速检测是否存在反序列化漏洞,原因如下: 只依赖原生类 不限制jdk版本 测试环境:jdk 8u131 利用链 * HashMap.readObject() * HashMap.putVal() * HashMap.hash() * URL.hashCode() 利用链分析 urldns是yso中较为简单的一个gadget,所以这里可以直接通过正向分析的方式进行分析。 HashMap#readObject: private void