漏洞介绍
weblogic反序列化漏洞大致有两种,一种是基于t3协议的,一种是基于xml的
基于T3协议漏洞大致有: CVE-2015-4582、CVE-2016-0638、CVE-2016-3510、CVE-2018-2628、CVE-2020-2555、CVE-2020-2883
其中CVE-2020-2883是CVE-2020-2555补丁的绕过,实则差不多
调试环境搭建
本篇测试CVE-2020-2883漏洞使用docker搭建环境
使用vulfocus/weblogic-cve_2020_2883镜像(weblogic:12.1.3)、idea远程调试
docker-compose.yml配置如下
version: '2'
services:
weblogic:
image: vulfocus/weblogic-cve_2020_2883:latest
ports:
- "7001:7001"
- "8453:8453"
然后docker-compose up -d启动镜像,
再docker exec -it <镜像ID> /bin/bash,进入容器shell vi /u01/oracle/weblogic/user_projects/domains/base_domain/bin/setDomainEnv.sh
搜索debugFlag
在if上添加
debugFlag="true"
export debugFlag
如图

然后:wq保存,exit退出容器`docker restart <容器id>`重启容器,服务端调试环境就搭建好了
还有个问题就是,本地调试需要远程运行项目的jar包或源码,可以直接dokcer cp从镜像里把jar包都拿出来,但是下载速度太慢了,我选择本机在官网下载weblogic12.1.3的安装包,然后解压,把.jar后缀的放到一个文件夹下,当做依赖
在本地打开idea,创建空项目,然后将上面整理好的文件夹,设置为依赖,如图

再设置远程调试,如图

这样调试环境就搭建好了
漏洞测试exp用的是GitHub - Y4er/CVE-2020-2883: Weblogic coherence.jar RCE,运行前修改地址和端口
服务端启动docker后,本地idea开启调试,就可以连接到服务端
然后在wlthint3client.jar!/weblogic/rjvm/InboundMsgAbbrev.class#read处加断点,如图

在此处就可以看见反序列化流程了
t3协议组成分析
首先在发出t3协议数据包之前,要先发一个header,例:t3 10.3.1\nAS:255\nHL:19\n\n
10.3.1是本地客户端请求,AS是abbrevs的大小,HL是header长度
发送完header后再发送t3协议

本文介绍了WebLogic中的反序列化漏洞利用,包括基于T3协议的CVE-2020-2883,通过Docker搭建测试环境,详细解释了T3协议组成及利用流程,并展示了利用链和回显利用方法,以及如何在受限环境下通过RMI实现代码执行。
最低0.47元/天 解锁文章
4856

被折叠的 条评论
为什么被折叠?



