黑名单机制必然会推动两种研究方向的发展:一是挖掘不在黑名单的新组件,是为绕过规则;二是发掘检查的盲区,是为绕过逻辑。
CVE-2020-14756
二次反序列化具有对抗检查逻辑的天生丽质,在CVE-2018-2893中就有利用字节数组和反射重建类两种方式。找找还有没有readObject到Class.forName的路子:

readUnsignedByte读到的nType为9或10时会进入readXmlSerializable或readExternalizableLite分支。

上述两个方法均通过自身loadClass方法加载类,最终由Class.forName获取类并返回。


-
readXmlSerializable方法获取类后继续进行XML解析,是另一个XXE漏洞。
readExternalizableLite方法获取类后继续调用readExternal反序列化,不受黑名单限制,进而引出两个问题:
-
ExternalizableHelper自身没有实现Serializable接口,一定有什么地方调用它的readObject -
loadClass加载后强转为了ExternalizableLite类型,它哪些满足

最低0.47元/天 解锁文章
3582

被折叠的 条评论
为什么被折叠?



