WebLogic两处任意文件上传漏洞动态分析(CVE-2018-2894)
字数 1318 2025-08-18 11:37:28

WebLogic 任意文件上传漏洞分析 (CVE-2018-2894)

漏洞概述

Oracle WebLogic Server 管理端存在两处未授权的任意文件上传漏洞,攻击者可通过这两个漏洞上传恶意文件获取服务器权限。漏洞影响版本包括:

  • 10.3.6.0
  • 12.1.3.0
  • 12.2.1.2
  • 12.2.1.3

漏洞危害评分高达9.8分,属于高危漏洞。

漏洞位置

存在漏洞的两个页面:

  1. /ws_utc/begin.do
  2. /ws_utc/config.do

漏洞原理

工作目录配置机制

WebLogic 允许通过/ws_utc/config.do页面修改默认工作目录(WSTestPageWorkDir)。当设置新目录时,系统会将原目录下的子目录和文件转移到新目录,但旧目录仍保留。

攻击流程

  1. 攻击者首先需要配置工作目录,因为默认目录在URL访问时不可达
  2. 攻击者选择通过config.dobegin.do上传恶意文件
  3. 上传成功后,WebLogic会在服务端进行一系列目录操作
  4. 最终上传的恶意文件会被保存在特定位置

begin.do 上传漏洞分析

攻击路径

实际存在上传漏洞的地址:
http://IP:7001/ws_utc/resources/ws/config/import?timestamp=1532403983779

关键表单字段

import_file_name - 该字段值用于构造最终保存的文件名

服务端处理流程

  1. 检查工作目录下是否存在upload目录,不存在则创建
  2. 调用cleanObsoleteFile方法遍历并删除目录中所有文件
  3. 创建以Rs_Upload_开头加格式化时间命名的目录
  4. 获取上传表单的form-data,保存到kvMap集合
  5. 通过saveAttacheFile方法将附件保存到磁盘

异常处理

当上传非WebLogic可处理的文件格式时,程序会在context.createUnmarshaller处抛出空指针异常,导致响应状态码为500。

config.do 上传漏洞分析

攻击路径

  1. 访问/ws_utc/config.do页面
  2. 点击"安全"菜单,添加Keystore
  3. 触发地址:http://IP/ws_utc/resources/setting/keystore?timestamp=1532400069848

关键表单字段

ks_filename - 该字段值用于构造最终保存的文件名

文件保存位置

上传的文件保存在工作台配置目录下的/config/keystore/目录中,文件名格式为timestamp参数值加下划线拼接。

防御措施

  1. 访问控制

    • 设置Config.dobegin.do页面需要登录授权后才能访问
  2. 入侵检测

    • IPS等防御产品可加入以下检测特征:
      • 表单字段import_file_name
      • 表单字段ks_filename
      • 响应状态码500
  3. 系统升级

    • 升级到官方最新版本

参考链接

  1. Oracle安全公告
  2. Secrss相关分析

注:本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

WebLogic 任意文件上传漏洞分析 (CVE-2018-2894) 漏洞概述 Oracle WebLogic Server 管理端存在两处未授权的任意文件上传漏洞,攻击者可通过这两个漏洞上传恶意文件获取服务器权限。漏洞影响版本包括: 10.3.6.0 12.1.3.0 12.2.1.2 12.2.1.3 漏洞危害评分高达9.8分,属于高危漏洞。 漏洞位置 存在漏洞的两个页面: /ws_utc/begin.do /ws_utc/config.do 漏洞原理 工作目录配置机制 WebLogic 允许通过 /ws_utc/config.do 页面修改默认工作目录(WSTestPageWorkDir)。当设置新目录时,系统会将原目录下的子目录和文件转移到新目录,但旧目录仍保留。 攻击流程 攻击者首先需要配置工作目录,因为默认目录在URL访问时不可达 攻击者选择通过 config.do 或 begin.do 上传恶意文件 上传成功后,WebLogic会在服务端进行一系列目录操作 最终上传的恶意文件会被保存在特定位置 begin.do 上传漏洞分析 攻击路径 实际存在上传漏洞的地址: http://IP:7001/ws_utc/resources/ws/config/import?timestamp=1532403983779 关键表单字段 import_file_name - 该字段值用于构造最终保存的文件名 服务端处理流程 检查工作目录下是否存在 upload 目录,不存在则创建 调用 cleanObsoleteFile 方法遍历并删除目录中所有文件 创建以 Rs_Upload_ 开头加格式化时间命名的目录 获取上传表单的 form-data ,保存到 kvMap 集合 通过 saveAttacheFile 方法将附件保存到磁盘 异常处理 当上传非WebLogic可处理的文件格式时,程序会在 context.createUnmarshaller 处抛出空指针异常,导致响应状态码为500。 config.do 上传漏洞分析 攻击路径 访问 /ws_utc/config.do 页面 点击"安全"菜单,添加Keystore 触发地址: http://IP/ws_utc/resources/setting/keystore?timestamp=1532400069848 关键表单字段 ks_filename - 该字段值用于构造最终保存的文件名 文件保存位置 上传的文件保存在工作台配置目录下的 /config/keystore/ 目录中,文件名格式为 timestamp 参数值加下划线拼接。 防御措施 访问控制 : 设置 Config.do 、 begin.do 页面需要登录授权后才能访问 入侵检测 : IPS等防御产品可加入以下检测特征: 表单字段 import_file_name 表单字段 ks_filename 响应状态码500 系统升级 : 升级到官方最新版本 参考链接 Oracle安全公告 Secrss相关分析 注:本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。