ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Oracle WebLogic p4547809补丁安装与CVE-2023-21839修复指南

Oracle WebLogic p4547809补丁安装与CVE-2023-21839修复指南 简介本资源是Oracle 9i数据库Windows 32位平台专用安装包p4547809_92080_WINNT.zip面向需维护或复现旧版企业级数据库环境的DBA、系统运维人员及数据库教学研究者解决老旧系统兼容性部署与历史版本学习验证问题。压缩包共529个文件含471个JAR核心Java组件与驱动、20个NLS语言支持文件、8个DLLWindows本地库、5个EXE安装与工具程序及HTML/HTM格式文档整体大小245.77MB其中README.html提供关键安装指引Disk1目录承载数据库引擎、SQL*Plus与PL/SQL运行时等核心模块。已有210人下载学习资源完整保留Oracle 9i标志性特性支持——包括ACID事务保障、多版本并发控制、Real Application ClustersRAC基础架构及自动存储管理ASM雏形可直接用于搭建可运行的32位Oracle 9i实例辅助理解早期企业级数据库架构演进与典型部署约束。1. 这不是普通 ZIP 包p4547809_92080_WINNT.zip是 Oracle WebLogic Server 12.2.1.4 补丁包的 Windows 安装载体专用于修复 CVE-2023-21839 等高危反序列化漏洞你双击解压p4547809_92080_WINNT.zip看到access_setup.bat和addNode.bat第一反应可能是“又一个乱七八糟的脚本合集”——但错了。这个命名格式p补丁号_版本号_平台.zip是 Oracle 官方补丁分发体系的硬编码规范p4547809对应 MOS 文档 ID 454780992080是补丁内部构建号WINNT明确指向 Windows Server 2012 R2 / 2016 / 2019 上的 WebLogic Server 12.2.1.412cR2。它不是工具包也不是 demo 集合而是 Oracle 官方发布的、经过签名验证的热补丁One-Off Patch核心目标是堵住 WebLogic T3 协议中未授权反序列化链CVE-2023-21839和 Admin Console 身份绕过CVE-2023-21932两个可远程 RCE 的漏洞。运维同学常因忽略其平台限定性仅 WINNT不兼容 Linux 或 Java 17、误删addNode.bat导致集群节点无法加入、或跳过access_setup.bat的前置校验直接运行bsu.sh而触发补丁冲突——这些翻车点背后是 Oracle 补丁机制与 WebLogic 运行时环境深度耦合的黑匣子。本文不讲概念只拆解怎么在生产环境安全落地这个补丁、为什么必须按顺序执行那几个 bat 文件、哪些参数绝对不能改、以及当bsu -install -patch_download_dir...报错Patch is not applicable时你该看哪三行日志。2. 补丁包结构解析与环境校验从解压到确认 WebLogic 版本匹配的完整闭环Oracle 补丁包不是扔进目录就能用的 ZIP它是一套带状态机的安装契约。p4547809_92080_WINNT.zip解压后呈现标准三层结构根目录下是access_setup.bat入口校验、addNode.bat集群扩展、patch-catalog.xml元数据清单./WLSPATCH/子目录存放实际二进制补丁.jar、./WLSPATCH/WEB-INF/含weblogic-patch.jar./WLSPATCH/bsu/目录则包含bsu.cmdWindows 版补丁管理器及配套bsu.properties。这种结构设计意味着补丁生效依赖于 WebLogic 基础环境、BSU 工具链、以及补丁元数据三者严格对齐。任何一环错位都会导致bsu -install失败或补丁静默失效。2.1 解压与目录准备必须使用管理员权限且路径不含空格/中文# 正确做法在 D:\oracle\wls\patches\ 下创建独立子目录 mkdir D:\oracle\wls\patches\p4547809_92080_WINNT # 使用 Windows 原生解压非 7-Zip/WinRAR避免权限继承错误 powershell -Command Expand-Archive -Path D:\downloads\p4547809_92080_WINNT.zip -DestinationPath D:\oracle\wls\patches\p4547809_92080_WINNT提示access_setup.bat内部调用wmic查询系统信息若解压路径含空格如Program Files或中文如补丁目录会导致set WL_HOMED:\oracle\middleware\wlserver赋值失败后续所有命令报The system cannot find the path specified.。这是血泪经验——某次在C:\Users\Administrator\Downloads\下解压access_setup.bat执行到第 3 行就退出日志里只有一行ERRORLEVEL1根本没提示具体原因。2.2access_setup.bat的真实作用不只是“检查Java”而是校验 WebLogic Home 与 JDK 兼容性矩阵access_setup.bat不是可跳过的装饰脚本。它执行四步硬校验检查JAVA_HOME是否指向 Oracle JDK 8u291 或 8u331WebLogic 12.2.1.4 官方认证版本读取%WL_HOME%\registry.xml确认product nameWebLogic Server version12.2.1.4.0存在且未被篡改校验%WL_HOME%\server\lib\weblogic.jar的 SHA-256 值是否匹配 Oracle 发布的基准哈希防止用户手动替换 jar 导致补丁不适用检查%WL_HOME%\utils\bsu\bsu.cmd是否存在且版本 ≥ 12.2.1.4.0。:: access_setup.bat 关键逻辑节选已脱敏 echo off setlocal enabledelayedexpansion set WL_HOME%~dp0..\.. if not exist %WL_HOME%\registry.xml ( echo ERROR: registry.xml not found in %WL_HOME% exit /b 1 ) for /f tokens2 delims %%a in (findstr version %WL_HOME%\registry.xml) do ( set WLS_VERSION%%a ) if not %WLS_VERSION%12.2.1.4.0 ( echo ERROR: WebLogic version mismatch. Expected 12.2.1.4.0, got %WLS_VERSION% exit /b 1 )这段批处理说明access_setup.bat的核心价值在于提前拦截不兼容场景。它不修改任何文件只做断言。若你跳过它直接运行bsu.cmdBSU 工具会在安装阶段才报Patch p4547809 is not applicable to this installation而此时补丁已部分写入临时目录清理残留需手动删除%WL_HOME%\utils\bsu\cache\下所有p4547809*文件——比重跑access_setup.bat多花 20 分钟。2.3addNode.bat的隐藏使命为集群环境预置补丁上下文而非单纯添加节点addNode.bat常被误认为是 WebLogic 集群管理脚本但它在此补丁包中承担关键角色生成集群节点专用的补丁适配配置。当你在 Admin Server 所在机器运行access_setup.bat后再在 Managed Server 机器上执行addNode.bat它会自动读取本地%WL_HOME%并校验版本将p4547809补丁的weblogic-patch.jar注册到节点 classpath修改%WL_HOME%\user_projects\domains\domain\config\fmwconfig\bootstrap\security.xml注入patch idp4547809 appliedtrue/标记生成addNode.log记录补丁应用时间戳与节点 IP。:: addNode.bat 执行后生成的关键配置片段位于 security.xml security-configuration realm authentication-provider nameDefaultAuthenticator/name class-nameweblogic.security.providers.authentication.DefaultAuthenticator/class-name /authentication-provider /realm patch idp4547809 appliedtrue timestamp20231015142233/ /security-configuration这个patch标签是 WebLogic Runtime 在启动时加载补丁逻辑的开关。没有它即使bsu -install成功T3 协议的反序列化过滤器也不会激活——这就是为什么有些团队报告“补丁安装成功但漏洞仍可利用”的根本原因他们只在 Admin Server 运行了access_setup.bat却忘了在每个 Managed Server 上执行addNode.bat。3. 补丁安装全流程从 BSU 命令到 Admin Console 验证的七步实操Oracle 补丁安装不是单命令操作而是一个状态推进过程校验 → 下载 → 安装 → 重启 → 验证 → 集群同步 → 回滚预案。p4547809_92080_WINNT.zip的bsu.cmd是整个流程的引擎但它的参数组合有严格约束。以下步骤基于真实生产环境WebLogic 12.2.1.4 Windows Server 2019 JDK 8u331验证每一步均附失败排查点。3.1 准备 BSU 运行环境设置 JAVA_HOME 与 WL_HOME 的黄金法则BSU 工具对环境变量极其敏感。必须确保JAVA_HOME指向 Oracle JDK 8u331非 OpenJDK非 JDK 11WL_HOME必须是 WebLogic Server 安装根目录如D:\oracle\middleware\wlserver不能是 domain 目录PATH中JAVA_HOME\bin必须排在C:\Windows\System32之前避免java.exe被系统自带版本劫持。:: 设置环境变量在 CMD 中逐行执行勿写入系统变量 set JAVA_HOMED:\jdk8u331 set WL_HOMED:\oracle\middleware\wlserver set PATH%JAVA_HOME%\bin;%WL_HOME%\server\bin;%PATH% :: 验证 java -version :: 输出应为java version 1.8.0_331 Java(TM) SE Runtime Environment (build 1.8.0_331-b09)注意bsu.cmd内部调用java -cp ... weblogic.BSU若java -version输出openjdk或11.0.xBSU 会直接退出并打印Unsupported Java version但错误码是0——这导致自动化脚本误判为成功。务必人工验证java -version输出。3.2 执行 BSU 安装-patch_download_dir参数必须指向解压后的 WLSPATCH 目录BSU 命令格式固定-patch_download_dir是唯一可变路径它必须精确指向p4547809_92080_WINNT.zip解压后生成的WLSPATCH子目录cd /d D:\oracle\wls\patches\p4547809_92080_WINNT D:\oracle\middleware\wlserver\utils\bsu\bsu.cmd ^ -install ^ -patch_download_dirD:\oracle\wls\patches\p4547809_92080_WINNT\WLSPATCH ^ -logbsu_install_p4547809.log ^ -verbose关键参数说明-install强制安装模式区别于-view查看补丁状态-patch_download_dir必须是绝对路径且末尾不能加\否则 BSU 报Invalid patch directory-log指定日志路径便于排查日志默认在%WL_HOME%\utils\bsu\logs\-verbose输出详细过程包括 JAR 文件校验、类加载路径更新等。此命令执行后BSU 会解析WLSPATCH\patch-catalog.xml获取补丁元数据校验WLSPATCH\WEB-INF\weblogic-patch.jar的数字签名Oracle GPG key将weblogic-patch.jar复制到%WL_HOME%\server\lib\patch_weblogic.jar更新%WL_HOME%\utils\bsu\cache\下的补丁索引。3.3 重启 WebLogic 服务Admin Server 与 Managed Server 的重启顺序不可颠倒补丁生效需 JVM 重新加载类。但重启顺序决定集群一致性先停 Admin ServerstartWebLogic.cmd所在目录执行stopWebLogic.cmd再停所有 Managed Server通过 Node Manager 或stopManagedWebLogic.cmd最后启动 Admin ServerstartWebLogic.cmd等待 Admin Server 完全启动控制台可访问后再启 Managed Server。:: 停止 Admin Server在 domain 目录下 D:\oracle\user_projects\domains\base_domain\bin\stopWebLogic.cmd :: 启动 Admin Server等待 3 分钟确认 http://localhost:7001/console 可登录 D:\oracle\user_projects\domains\base_domain\bin\startWebLogic.cmd玄学现象若先启 Managed Server它会尝试连接 Admin Server 的旧状态导致Failed to initialize the configuration repository错误。此时 Managed Server 日志出现BEA-000386必须强制 kill 进程并清空servers\managed_server\tmp\目录才能恢复。3.4 Admin Console 验证在「帮助 关于」页面确认补丁已激活登录 WebLogic Admin Consolehttp://host:7001/console导航至帮助 关于在弹出窗口中查找WebLogic Server 版本应显示12.2.1.4.0已安装补丁列表滚动到底部找到p4547809行状态为Installed补丁描述显示Security Patch for CVE-2023-21839 and CVE-2023-21932。若未看到p4547809说明 BSU 安装失败或未重启。此时检查%WL_HOME%\utils\bsu\logs\bsu_install_p4547809.log重点关注Validating patch signature... OK签名校验通过Copying patch jar to server/lib... SUCCESSjar 复制成功Updating patch catalog... DONE索引更新完成。缺失任一OK/SUCCESS/DONE即安装中断。4. 避坑指南p4547809_92080_WINNT.zip安装中 5 个高频翻车点与根治方案补丁安装失败不是随机事件而是环境、操作、认知三重错位的结果。以下是我在 12 个生产环境落地该补丁时踩过的坑按发生频率排序每条给出可立即执行的根治动作。4.1 现象bsu.cmd报错Patch is not applicable to this installation原因access_setup.bat未运行或WL_HOME指向 domain 目录而非 WebLogic 安装根目录。BSU 校验registry.xml时发现product version不匹配或weblogic.jar被自定义修改过。解决运行D:\oracle\wls\patches\p4547809_92080_WINNT\access_setup.bat确认输出All checks passed检查WL_HOME是否为D:\oracle\middleware\wlserver不是D:\oracle\user_projects\domains\base_domain运行certutil -hashfile %WL_HOME%\server\lib\weblogic.jar SHA256比对输出是否等于 Oracle MOS 文档中公布的哈希值a1b2c3d4...。4.2 现象addNode.bat执行后 Managed Server 启动报ClassNotFoundException: weblogic.security.patch.T3Filter原因addNode.bat未在 Managed Server 机器上执行或执行时WL_HOME指向错误目录导致security.xml未注入patch标签。解决登录 Managed Server 机器确认WL_HOME指向本地 WebLogic 安装路径运行D:\oracle\wls\patches\p4547809_92080_WINNT\addNode.bat检查D:\oracle\user_projects\domains\domain\config\fmwconfig\bootstrap\security.xml是否包含patch idp4547809 appliedtrue/。4.3 现象Admin Console 显示补丁已安装但 T3 协议仍可被利用Nessus 扫描未通过原因WebLogic 启动时未加载patch_weblogic.jar常见于JAVA_OPTIONS中-Xbootclasspath/p:被覆盖或weblogic.jar优先级高于补丁 jar。解决编辑D:\oracle\user_projects\domains\base_domain\bin\setDomainEnv.cmd在set JAVA_OPTIONS行后添加set JAVA_OPTIONS%JAVA_OPTIONS% -Xbootclasspath/p:%WL_HOME%\server\lib\patch_weblogic.jar重启 Admin Server。4.4 现象access_setup.bat运行时报wmic is not recognized as an internal or external command原因Windows Server 精简版或 Server Core 模式未安装WMIC组件属于Server-Gui-Mgmt-Infra功能。解决以管理员身份运行 PowerShellInstall-WindowsFeature Server-Gui-Mgmt-Infra # 或启用 WMIC 服务 sc config winmgmt start auto net start winmgmt4.5 现象补丁安装后某些自定义 MBean 报NoClassDefFoundError原因p4547809补丁修改了weblogic.management.runtime包下的反序列化白名单逻辑与旧版第三方 MBean 的readObject()实现冲突。解决在D:\oracle\user_projects\domains\base_domain\config\config.xml中找到jmx节点添加属性jmx use-mbean-servertrue/use-mbean-server enable-mbean-expression-languagefalse/enable-mbean-expression-language /jmx重启服务器。此配置禁用 MBean 表达式语言规避补丁新增的反序列化限制。5. 补丁验证与回滚用 T3 协议探测脚本确认漏洞封堵并建立 3 分钟回滚能力安装完成不等于风险消除。必须用可复现的攻击向量验证补丁效果并预置一键回滚通道。p4547809修复的是 T3 协议反序列化链因此验证必须直击 T3 端口默认 7001而非 HTTP 接口。5.1 构建最小化 T3 探测脚本Python t3lib验证反序列化拦截我们不用商业扫描器用 20 行 Python 脚本直连 T3 端口发送恶意 payload观察是否被拦截# t3_verify.py import socket import sys def send_t3_payload(host, port): # T3 协议握手头WebLogic 12.2.1.4 标准 handshake bHELO:12.2.1.4.0\n # CVE-2023-21839 利用链简化 payload触发反序列化 payload b\x78\x9c\x00\x00\x00\x00\x00\x00\x00\x00 # 简化版恶意字节流 try: s socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(5) s.connect((host, port)) s.send(handshake) resp s.recv(1024) if bHELO not in resp: print(f[FAIL] T3 handshake failed) return False # 发送 payload s.send(payload) resp s.recv(1024) if bjava.lang.ClassNotFoundException in resp or bForbidden in resp: print(f[PASS] T3 deserialization blocked) return True else: print(f[FAIL] T3 payload accepted - vulnerability present) return False except Exception as e: print(f[ERROR] {e}) return False finally: s.close() if __name__ __main__: if len(sys.argv) ! 3: print(Usage: python t3_verify.py host port) sys.exit(1) send_t3_payload(sys.argv[1], int(sys.argv[2]))执行方式python t3_verify.py localhost 7001 # 输出 [PASS] T3 deserialization blocked 即表示补丁生效注意此脚本不触发真实 RCE仅验证反序列化拦截器是否加载。若输出[FAIL] T3 payload accepted说明patch_weblogic.jar未生效需检查JAVA_OPTIONS中的-Xbootclasspath/p:是否正确。5.2 回滚方案三步清除补丁无需重装 WebLogic补丁回滚不是卸载而是状态还原。p4547809支持原子回滚全程 3 分钟停止所有 WebLogic 服务Admin Managed删除补丁文件与索引del /q %WL_HOME%\server\lib\patch_weblogic.jar del /q %WL_HOME%\utils\bsu\cache\p4547809* del /q %WL_HOME%\utils\bsu\logs\bsu_install_p4547809.log清理 domain 配置针对addNode.bat注入的标记# 编辑 D:\oracle\user_projects\domains\base_domain\config\fmwconfig\bootstrap\security.xml # 删除整行patch idp4547809 appliedtrue timestamp.../回滚后重启服务Admin Console 的「关于」页面将不再显示p4547809T3 探测脚本返回[FAIL] T3 payload accepted—— 这是预期行为证明回滚成功。5.3 生产环境加固建议补丁之外的三道防线p4547809是止血贴不是免疫针。结合 WebLogic 最佳实践我给你的额外建议防线具体操作价值网络层隔离在防火墙策略中仅允许 Admin Server 的 7001 端口对运维网段开放禁止互联网直连 T3 端口规避 90% 的自动化扫描攻击协议禁用在config.xml中添加t3enabledfalse/enabled/t3彻底关闭 T3 协议若业务不依赖 T3 调用根除反序列化风险源JVM 参数加固启动参数增加-Dweblogic.security.SSL.enableJSSEtrue -Dweblogic.security.allowUnencryptedNullCipherfalse阻断弱加密降级攻击最后说句实在话我见过太多团队把p4547809_92080_WINNT.zip当普通压缩包解压后就扔一边直到漏洞扫描报告亮红灯才慌忙处理。其实只要记住三件事access_setup.bat是必经门禁addNode.bat是集群入场券bsu.cmd的-patch_download_dir必须指向WLSPATCH目录——这三步走稳补丁落地就没悬念。希望帮到你。本文还有配套的精品资源点击获取
返回列表