WSO2 API Manager是WSO2公司的一套API生命周期管理解决方案。最近发现CNNVD爆出了WSO2 API Manager存在安全漏洞:
漏洞编号CVE-2022-29464。从漏洞描述来看,由于对文件上传接口缺少严格检查,导致存在任意文件上传漏洞,可直接GetShell。影响版本:
-
WSO2 API Manager 2.2.0 and above
-
WSO2 Identity Server 5.2.0 and above
-
WSO2 Identity Server Analytics 5.4.0, 5.4.1, 5.5.0, 5.6.0
-
WSO2 Identity Server as Key Manager 5.3.0 and above
-
WSO2 Enterprise Integrator 6.2.0 and above
本地搭建环境,启动:
这是一个文件上传漏洞,首先搜索涉及文件上传处理的接口。WSO2 API Manager默认开启了多个接口,在对`carbon`进行抓包分析的过程中,发现文件上传数据包:
查看接口配置:
从配置来看,访问接口不需要认证。查看URL映射配置文件:
找到多个和文件上传有关的映射:
org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor
org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor
org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor
org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor
org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor
上面的类都继承于`AbstractFileUploadExecutor`。定义了函数`execute`对上传文件进行处理,子类对该函数进行了重写。以其中的`ToolsAnyFileUploadExecutor`为例:
没有对表单名称进行任何处理,直接进行路径拼接,存在路径穿越的隐患。构造请求进行调试:
同时上传文件名和文件内容也可控,可通过构造特定请求,直接写入webshell:
通过补丁对比,发现新版本将`AbstractFileUploadExecutor`子类的函数`execute`弃用,直接返回`false`,比如`ToolsAnyFileUploadExecutor`:
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-29464 WSO2 API Manager远程命令执行漏洞