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`:
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!