Common-Collections-利用链-5+7(CC5+7)漏洞分析

slug
series-status
status
summary
date
series
type
password
icon
tags
category

引言

  • 由于CC5和CC7只是在前缀利用链部分做了少部分修改,这里合并讲解。

CC5分析

  • 这个可以直接看YSO的利用链:
notion image
  • 可以看到主要是BadAttributeValueExpException.readObject和TiedMapEntry.toString方法
  • 这个TiedMapEntry.toString中可以看到这里调用了getValue方法,也就导致了LazyMap的get方法被调用:
notion image

CC7分析

  • 还是从YSO入手:
notion image
  • 可以看到这里LazyMap后边的是一样延续的反射命令执行,区别就是LazyMap的触发点,改成了在Hashtable中的readObject调用了reconstitutionPut,其中调用了key的equals方法:
notion image
  • 这里如果我们传入的是LazyMap的话,由于它是没有equals方法的,因此会向它的父类AbstractMapDecorator寻找:
notion image
  • 而AbstractMapDecorator的equals方法又会导致Java内置的AbstractMap的equals方法被调用,最后在AbstractMap中会调用LazyMap的get方法:
notion image
这里其实参考视频中讲解的有一些模糊,后续有时间再深挖一下为什么会有哈希碰撞导致这里调用到了AbstractMap的equals方法

总结

  • 汇总,CC1—CC7的全部关键节点图:
notion image
  • 其中Commons Collections 3版本中CC6比较重要(没有JDK版本限制),Commons Collections 4版本中CC2比较重要(没有用到Transformer数组)
  • 至此,CC1-7系列完结~
参考视频:https://www.bilibili.com/video/BV1NQ4y1q7EU
Loading...

尚未开始
更新中
近期核心
已完结
已弃更

© River 2021-2025