Weblogic T3反序列化

  • A+
所属分类:安全文章

一、影响产品和版本

Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0

二、Gadget Chain

Gadget chain(仅在JDK17u21下测试)如下:

Weblogic T3反序列化

三、Gadget分析

首先贴出Gadget代码:

Weblogic T3反序列化

Weblogic T3反序列化

效果如下:

Weblogic T3反序列化

1.按照Gadget Chain进行分析,首先反序列化一个HashMap,调用HashMap#readObject()时,由于HashMap内的两个元素的key的hashcode相等,于是产生了hash碰撞,得以在HashMap#putForCreate中调用如下图中的key.equals(k),进行key的比较:

Weblogic T3反序列化

2.跟进AnnotationInvocationHandler#invoke(),发现如果是调用代理类的equals方法,则会调用AnnotationInvocationHandler#equalsImpl(),如下图所示:

Weblogic T3反序列化

3.继续跟进AnnotationInvocationHandler#equalsImpl(),分析如下:

Weblogic T3反序列化

4.于是跟进MarshalledObject#get(),发现存在反序列化操作,且反序列化的字节码是完全可控的

Weblogic T3反序列化

后续就是二次反序列化可控的字节码造成RCE了。

四、高版本JDK不可打原因分析

上面提到,此链的一个关键点是:AnnotationInvocationHandler.type必须是MarshalledObject类,但是高版本JDK中,AnnotationInvocationHandler构造器中对传入的type进行检查,强制要求type有且仅实现了Annotation接口。

Weblogic T3反序列化

五、漏洞利用

直接使用WLSec卧龙安全团队写好的漏洞利用工具进行测试,发现成功getshell

 

下载链接: https://pan.baidu.com/s/1Q0SVQARCGGc5jZ4HBLTQSg 密码: 6jek

Weblogic T3反序列化

 

 

 

 

 

 

相关推荐: 一个“登录框”引发的安全问题

前言搞安全的小伙伴只有一个登录框你都能测试哪些漏洞?通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给给你登录账号的。这个时候,考…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: