Common Collections 利用链-6(CC6)漏洞分析

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

序言

  • 正如我们前文所说的,由于JDK升级的限制,AnnotationInvocationHandler的readObject不再可用,因此我们需要找到一条新的利用链。
  • 观察Yso的利用链可以看到
    • notion image
  • 这里和我们之前的URLDNS对HashMap的利用相似,也是通过hash方法调用hashCode方法从而调用到了LazyMap的get方法继续了后半条链。
  • 首先回顾一下我们之前的利用链:
notion image

CC6分析

  • 那么继续前文,关键就是要找到一个类的hashCode方法里调用了LazyMap的get方法,这个类也是由原文的作者找到了,就是TiedMapEntry
  • 因此,总的示例代码如下:
  • 但是这样写这个代码则会导致像之前一样的问题,就是在序列化的时候执行一次命令,在反序列化的时候执行一次命令,污染我们的日志,因此需要进行一定的调整
  • 因此我们可以通过将LazyMap中的value对象改为任意非ChainedTransformer的对象,然后在put之后再通过反射修改回来。同时根据LazyMap中的get方法可以看出,我们还需要在put之后删掉它自动添加的key:
notion image
  • 因此,总的代码如下:
  • 逐步执行该代码:
    • 序列化:
      • notion image
    • 反序列化:
      • notion image

总结

  • 关键节点图:
notion image
Loading...

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

© River 2021-2025