apache-commons-collections7反序列化链分析
apache-commons-collections7反序列化链也是对ACC1链的变形利用罢了,倒是其中涉及一些hash知识
复现环境
JDK7+CommonsCollections1
前景知识
这里要在前面说一下的是Hashtable.put
方法新增的元素,是存储在Hashtable$Entry
这个内部类里面的,那么获取元素也是在这个内部类获取的,这个跟进一下Hashtable.put
方法就能知道
LazyMap.put
方法新增的元素,是调用LazyMap.map.put
方法新增的,当map属性为HashMap对象的时候,新增的元素是存储在HashMap$Node
内部类里面的,具体调试一下LazyMap.put
方法便知,注意LazyMap类没有put方法,调用的是其父类的put方法
漏洞分析
看到CommonsCollections7类的getObject方法,前面是一样的,很熟悉的实例化ChainedTransformer对象,Transformer数组的构造也和前面的链一样,后面再通过反射进行赋值
接下来实例化两个HashMap对象和两个