CNTA-2019-0014 wls9-async 反序列化 rce 分析
字数 1511 2025-08-29 08:32:18
WebLogic wls9-async 反序列化漏洞分析报告 (CNTA-2019-0014)
漏洞概述
- 漏洞编号: CNTA-2019-0014
- 影响组件: WebLogic wls9_async_response 包
- 漏洞类型: XML反序列化远程代码执行(RCE)
- 测试版本: WebLogic 10.3.6 (高版本如12.2.1.2默认不部署该war包)
- 漏洞位置:
/_async/路径下的异步响应处理
漏洞背景
该漏洞是WebLogic中一个典型的XML反序列化漏洞,与2017年出现的类似漏洞属于同一类型。漏洞存在于wls9_async_response组件的处理流程中,攻击者可以通过构造恶意的SOAP请求触发XMLDecoder反序列化,最终导致远程代码执行。
技术分析
1. 漏洞入口点
漏洞的入口位于WebLogic的异步响应处理组件中,具体路径为/_async/,对应的处理类为AsyncResponseBean。然而,直接分析该类发现只有handleFault和handleResult两个方法,并非直接漏洞触发点。
2. 请求处理流程
完整的漏洞触发调用链如下:
BaseWSServlet#service
-> SoapProcessor#process
-> ServerDispatcher#dispatch
-> HandlerIterator#handleRequest
-> WorkAreaServerHandler#handleRequest
-> WorkContextMapInterceptor#receiveRequest
-> WorkContextXmlInputAdapter#readUTF
-> XMLDecoder#readObject
3. 关键分析点
3.1 责任链模式处理
WebLogic使用责任链模式处理SOAP请求,包含21个Handler:
- 请求首先由
BaseWSServlet接收 - 通过
SoapProcessor处理 - 由
ServerDispatcher分发 - 在
HandlerIterator中遍历21个Handler进行处理
3.2 关键Handler分析
在21个Handler中,WorkAreaServerHandler是关键漏洞触发点:
- 从SOAP Header中获取
workarea相关内容 - 将内容送入
WorkContextXmlInputAdapter进行初始化处理 - 调用
receiveRequest函数
3.3 反序列化触发点
最终的反序列化发生在以下路径:
WorkContextMapInterceptor#receiveRequest调用readEntryreadEntry调用WorkContextXmlInputAdapter#readUTFreadUTF中直接调用XMLDecoder#readObject进行反序列化
4. 漏洞利用条件
- 目标系统部署了wls9_async_response组件
- 攻击者能够发送特制的SOAP请求到WebLogic服务器
- 请求中包含恶意的序列化XML数据
漏洞验证
在WebLogic 10.3.6环境中,通过构造特定的POC可以触发该漏洞,导致任意代码执行。
防护建议
- 升级补丁: 应用Oracle官方发布的安全补丁
- 组件移除: 对于不需要的组件,可以移除wls9_async_response.war
- 访问控制: 限制对/_async/路径的访问
- 输入验证: 对SOAP请求中的XML内容进行严格验证
技术细节补充
- 该漏洞利用的是Java XMLDecoder的反序列化问题
- 高版本WebLogic(如12.2.1.2)默认不部署该war包,降低了风险
- 漏洞利用需要构造特定的SOAP Header,包含恶意的workarea内容
总结
CNTA-2019-0014漏洞是WebLogic中一个典型的XML反序列化漏洞,通过精心构造的SOAP请求可以触发远程代码执行。理解其完整的调用链和触发条件对于防御此类漏洞具有重要意义。管理员应及时应用补丁或移除不必要的组件来降低风险。