ysoserial工具总结下commit系列,主要是通过org.apache.commons.collections下的Transformer触发invoke反射,通过利用java反射调用执行命令,然后通过一些存在反序列化的库类,在反序列化的过程中触发transformer进行invoke反射执行命令。如lazyMap下的get value、PriorityQueue下的Comparator方法等等,而在org.apache.commons.collections的库中包含多个可以触发transformer的方法,从而可以使安全人员使用不同方法进行利用,然而ysoserial工具中出现了两种形式去触发。一种是InvokerTransformer使用java反射对我们执行的命令层层调用,另一种则是利用defineclass的方法,将编译好的字节码load进入内存中进行实例话,这里主要用到了TrAXFilter这个类,类的加载机制中提到,当类初始化的时候 static initializer在类载入时将自动执行(静态块内的代码)在该类初始化的时候进行了templatesImpl.newTransformer调用,从而触发了invoke反射链执行命令。
虽然在方法中看到了多个commonscollections的利用,其实只是使用了不同的类使用以上两种思路在反序列化的过程中触发transformer。这是主要的思路,可以依据这个进行深入挖掘新的反序列化利用链。