红队第1篇:weblogic9.x在JDK1.5下T3反序列化漏洞利用方法 by:ABC_123
Part1前言
年前在一次攻防比赛过程中,遇到了一个9.x版本的weblogic中间件,是非常老版本的Weblogic了,现有的各种漏洞利用工具都没能拿下权限,考虑到之前也曾经遇到过好几次了,于是研究了一整天,总算解决了这个遗留的技术问题。
Part2解决问题过程
1安装weblogic 9.x版本
首先安装weblogic9.x版本,这个过程就不叙述了。
使用T3协议发包后,返回weblogic版本号是9.2.0.0
接下来看一下weblogic目录自带的jdk版本,发现是1.5(几乎是20年前的老版本了)。至此初步判断工具利用失败的原因是:反序列化利用工具的exp在JDK1.6以上版本编译,从而不支持jdk 1.5环境,后续发现原因没这么简单。
接下来看一下weblogic目录下,存在哪些具有反序列化漏洞的jar包:
接下来改造一下老外的ysoserial代码,使其在JDK1.5环境下编译,结果遇到了好几个坑。
第一个坑,idea在jdk1.5支持问题
使用Intellij Idea加载ysoserial的代码,将JDK版本更改为1.5,发现idea新版本不支持jdk1.5环境,没法调试代码。
没办法,从idea的官网一顿搜索,找到了一个老版本的idea 11,总算是能支持jdk1.5环境了。
idea11以jdk1.5导入ysoserial后,报一大堆错误,于是将几个必备的依赖jar包替换成较低版本的,以备可以兼容jdk1.5环境。
第2个坑,permit-reflect组件JDK1.5兼容问题
按照前面的步骤替换完低版本jar包后,permit-reflect组件遇到了麻烦,我下载了0.1到0.4版本都不支持JDK1.5。。。
后来找到了解决办法:下载permit-reflect的源码,以JDK1.5环境导入,把报错的代码都给注释掉,然后进行小规模代码修复,将修复好的代码直接放到ysoserial工程里面,这下不报错了。
第3个坑 CC链不适用于JDK1.5
weblogic低版本应该是存在CC链的反序列化漏洞的,本地尝试了各种CC链,发现在JDK1.5下是没法弹计算器的。
Jdk7u21最终解决问题
于是把目光放在Jdk7u21这个链上(先前以为Jdk7u21是不支持JDK1.5的),以JDK1.5环境导入,本地反序列化环境测试,发现是可以弹出计算器的!
接下来使用了之前从github上下载的T3协议发包代码,将上述生成的数据文件发包出去。
发现weblogic9.x成功弹出计算器
Part3总结
-
Jdk7u21利用链可用于JDK1.5,但是必须以JDK1.5环境编译。
-
Weblogic9.x默认依赖于JDK1.5。
-
CC链貌似不能用于JDK1.5。
-
permit-reflect组件改源码,然后导入ysoserial中,因为官网的jar包版本不支持JDK1.5。
-
ysoserial依赖包尽量选用最低版本的jar包,否则JDK1.5不支持。