前言
上一周简单学习了一下 ysoserial 中的七个 cc 链 这一周开始学习 ysoserial 中的其他利用链
ysoserial
Beanshell1
Beanshell 可以在 java 执行过程中动态的执行 java 代码 因此可以利用其进行 rce 调试用的版本为 bsh-2.0b5
1 | PriorityQueue.readObject(); |
入口和 cc2 一样利用的是 PriorityQueue 类的 readObject() 方法 同时和 cc1 一样利用动态代理 让 Comparator.compare() 触发 Xthis 类中的 InvocationHandler 的 invoke 方法 最后找到了用 Interpreter 创建好的恶意 compare() 方法 触发 rce
此时 methodName 为 compare 最后找到了 恶意的 compare() 方法并执行
C3P0
C3P0 是一个为 java 程序维护连接池的依赖包
1 | PoolBackedDataSourceBase.readObject(); |
链的入口在于 PoolBackedDataSourceBase 类的 readObject() 方法 其先从字节流中反序列化了一个 referenceSerialized 类 并调用其 getObject() 方法 最后调用了 referenceToObject() 方法 其通过工厂类的名字和地址加载类 最后实例化了准备好的恶意类 触发 rce
后记
后面的利用链分析咕咕了 以后遇到再顺手分析吧 接下来开坑 fastJson 反序列化系列漏洞