Common-Collections-利用链-5+7(CC5+7)漏洞分析
slug
series-status
status
summary
date
series
type
password
icon
tags
category
引言
- 由于CC5和CC7只是在前缀利用链部分做了少部分修改,这里合并讲解。
CC5分析
- 这个可以直接看YSO的利用链:

- 可以看到主要是BadAttributeValueExpException.readObject和TiedMapEntry.toString方法
- 这个TiedMapEntry.toString中可以看到这里调用了getValue方法,也就导致了LazyMap的get方法被调用:

CC7分析
- 还是从YSO入手:

- 可以看到这里LazyMap后边的是一样延续的反射命令执行,区别就是LazyMap的触发点,改成了在Hashtable中的readObject调用了reconstitutionPut,其中调用了key的equals方法:

- 这里如果我们传入的是LazyMap的话,由于它是没有equals方法的,因此会向它的父类AbstractMapDecorator寻找:

- 而AbstractMapDecorator的equals方法又会导致Java内置的AbstractMap的equals方法被调用,最后在AbstractMap中会调用LazyMap的get方法:

这里其实参考视频中讲解的有一些模糊,后续有时间再深挖一下为什么会有哈希碰撞导致这里调用到了AbstractMap的equals方法
总结
- 汇总,CC1—CC7的全部关键节点图:

- 其中Commons Collections 3版本中CC6比较重要(没有JDK版本限制),Commons Collections 4版本中CC2比较重要(没有用到Transformer数组)
- 至此,CC1-7系列完结~
参考视频:https://www.bilibili.com/video/BV1NQ4y1q7EU
Loading...