一、反序列化常见利用类
利用类的作用:加载类或者执行命令。
// 类加载
(1)com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl(BeanComparator、EqualsBean/ToStringBean可以间接调用TemplatesImpl)
(2)java.util.ServiceLoader$LazyIterator / com.sun.xml.internal.ws.util.ServiceFinder$LazyIterator (配合BCEL)
// 反射调用
(3)javax.imageio.ImageIO$ContainsFilter
(4)java.beans.EventHandler
(5)com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$GetterSetterReflection
// 非JDK自带
(6)org.codehaus.groovy.runtime.MethodClosure
(7)org.codehaus.groovy.runtime.ConvertedClosure
(8)groovy.util.Expando
(1)TemplatesImpl
TemplatesImpl用于CommonsBeanutils、Fastjson
,其调用链如下,核心在于得到恶意类的Class
对象。然后执行newInstance()
操作触发static
代码块中的恶意代码。
TemplatesImpl.getOutputProperties(