当前位置:   article > 正文

CC6链分析_java cc6链分析

java cc6链分析

前言

之前分析了CC1链,现在分析一下CC6链

CC1链使用了AnnotationInvocationHandler类来利用,但是高版本的JDK已修复这个漏洞,现在必须找通过TransformedMap类或者LazyMap类来触发漏洞

环境

JDK:1.8.0_101

Apache Commons Collections:3.2.1

正文

在CC1中,可以通过LazyMap中的get方法调用transform方法,现在需要再找一个调用get方法的的地方,这里可以看TiedMapEntry类

 该类中的构造器可以直接进行调用

 这里可利用tiedMapEntry调用getValue()方法就可以进行漏洞触发

TiedMapEntry类中的hashcode方法也调用了getValue()方法

这里和URLDNS链很像,因为HashMap的put方法里面会调用hash方法

 所以利用链可以改为

HashMap的readobject就能实现重写了readObject

执行后发现在序列化的时候已经执行了命令

这里可以通过new ConstantTransformer(1)来替换chainedTransformer

这样反序列化的时候还是无法执行命令,是因为key存在,无法进入if函数

所以在序列化之前删掉key值

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/694771
推荐阅读
相关标签
  

闽ICP备14008679号