一、影响产品和版本
Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
二、Gadget Chain
Gadget chain(仅在JDK17u21下测试)如下:
三、Gadget分析
首先贴出Gadget代码:
效果如下:
1.按照Gadget Chain进行分析,首先反序列化一个HashMap,调用HashMap#readObject()时,由于HashMap内的两个元素的key的hashcode相等,于是产生了hash碰撞,得以在HashMap#putForCreate中调用如下图中的key.equals(k),进行key的比较:
2.跟进AnnotationInvocationHandler#invoke(),发现如果是调用代理类的equals方法,则会调用AnnotationInvocationHandler#equalsImpl(),如下图所示:
3.继续跟进AnnotationInvocationHandler#equalsImpl(),分析如下:
4.于是跟进MarshalledObject#get(),发现存在反序列化操作,且反序列化的字节码是完全可控的
后续就是二次反序列化可控的字节码造成RCE了。
四、高版本JDK不可打原因分析
上面提到,此链的一个关键点是:AnnotationInvocationHandler.type必须是MarshalledObject类,但是高版本JDK中,AnnotationInvocationHandler构造器中对传入的type进行检查,强制要求type有且仅实现了Annotation接口。
五、漏洞利用
直接使用WLSec卧龙安全团队写好的漏洞利用工具进行测试,发现成功getshell
下载链接: https://pan.baidu.com/s/1Q0SVQARCGGc5jZ4HBLTQSg 密码: 6jek
前言搞安全的小伙伴只有一个登录框你都能测试哪些漏洞?通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给给你登录账号的。这个时候,考…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论