本文分析Java Commons-Collections组件中的反序列化漏洞,重点讲解CC3和CC4两条利用链。CC3通过BadAttributeValueExpException触发LazyMap链,CC4利用PriorityQueue和TemplatesImpl执行命令。文章详细演示了漏洞触发流程、成因及利用代码,强调反射机制在漏洞中的关键作用,并总结构造Gadget链的要点。
文章包含应用验证的代码,涉及用户标识、请求信息和访问体验的配置。
本文探讨了Java字节码的动态加载,介绍了如何使用URLClassLoader加载远程和本地的.class文件,以及通过反射调用ClassLoader的defineClass方法直接加载字节码。同时讨论了TemplatesImpl类的使用,展示了构造POC以执行特定代码的方法,并强调了网络安全和Java反序列化的问题。
CC1和CC6通过Runtime.exec调用计算器,CC3则通过动态类加载,可以通过一个路径加载恶意类,并通过链子初始化类,从而执行代码块中的代码,通过反射修改TemplatesImpl类的属性,调用newTransformer()方法,即可执行恶意类中的代码,ysoserial上还有另一条调用链,通过InstantiateTransformer类和ChainedTransformer类可以实现恶意类的调用。
完成下面两步后,将自动完成登录并继续当前操作。