前言
hw爆出的weblogic Jdk7u21绕过
代码分析
weblogicNewJdk7u21.java
1 | package com; |
Jdk7u21.java
1 | package com; |
Jdk7u21为ysoserial原始版本的gadgat,weblogicNew7u21为绕过的gadgat。
jdk7u21原链在var5.invoke处,调用最终结果为调用了TemplatesImpl的newTransformer,因此触发了命令执行
weblogic黑名单过滤从FilteredObjectInputStream开始,如果从中间能跳脱出不适用FilteredObjectInputStream进行反序列化即可绕过黑名单限制。
最终找到一个名为MarshalledObject的类,我们调用MarshalledObject的get方法可以达到之前的效果。剩下的工作为改造Jdk7u21的链,最终改造结果为开头的代码。
编写回显的exp
主要为寻找一个类,其继承Remote抛出RemoteException异常,最终找到RMIRemoteCommandConnection这个类,该类的executeCommand方法接受了一个Command对象,返回值为一个Object。Command对象中存在一个String的成员,因此可以用这个String对象存放需要执行的命令,然后把返回结果作为Object返回
1 | package com; |
main函数的类内容
1 | package com; |
后记
无