🔴 严重 | CVE-2026-35048 — The Piwigo installer in versions 16.3.0 and earlie...
🔴 【深度分析】严重安全漏洞:CVE-2026-35048
CVSS 评分: 严重(9.8)🔴 状态: Deferred 发布时间: 2026-07-20
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-35048 |
| CVSS 评分 | 9.8 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-20 |
| 发布时间 | 2026-07-20 |
| 最后更新 | 2026-07-21 |
| 状态 | Deferred |
| 数据来源 | security-advisories@github.com |
⚠️ CVSS 9.8 (严重) | 攻击向量:网络 | 攻击复杂度:低 | 所需权限:无 | 用户交互:无 | 影响范围:未改变 | 机密性/完整性/可用性:高
漏洞概述
CVE-2026-35048 是 Piwigo(一款开源相册管理系统)安装程序(installer)中存在的严重远程代码执行漏洞。攻击者无需任何身份认证,仅需向安装脚本发送特制 POST 请求,即可将任意 PHP 代码写入服务器上的配置文件,导致该代码在每次页面加载时被执行。该漏洞影响 Piwigo 16.3.0 及更早版本,CVSS 评分为 9.8(严重),利用难度极低,实际威胁极高。
受影响组件与版本
| 组件 | 受影响版本范围 |
|---|---|
| Piwigo 安装程序(installer) | ≤ 16.3.0 |
注意:该漏洞存在于安装脚本中(通常位于
install/目录),并非运行中的 Piwigo 本身。但若生产环境未删除或未防护该目录,则仍处于风险中。
漏洞原理分析
根本原因
Piwigo 安装程序在接收数据库配置相关 POST 参数(如 prefix、dbpasswd、dbhost、dbname、dbuser)后,将其直接写入 PHP 配置文件 local/config/database.inc.php。本应使用 addslashes() 函数对用户输入进行转义以防止注入,但代码中首先检查了 get_magic_quotes_gpc() 函数的返回值——该函数自 PHP 7.4 起被弃用,并在 PHP 8.0 中被彻底移除。
// 漏洞代码简化示意
if (get_magic_quotes_gpc()) {
// 此分支在 PHP 8+ 永远不执行
$value = stripslashes($input);
} else {
$value = addslashes($input); // 实际使用的保护
}
由于 get_magic_quotes_gpc() 在 PHP 8.0+ 上不存在,调用该函数会导致 PHP 发出致命错误(函数未定义),从而跳过后续的 addslashes() 调用。最终,用户输入的原始字符串被直接拼接到 PHP 代码中,例如:
// 假设攻击者传入 dbpasswd=123'; system('id'); //
$cfg['db_password'] = '123'; system('id'); //';
攻击向量
- 攻击路径:通过 HTTP POST 请求向安装脚本(如
install.php?page=2或类似 URL)发送恶意参数。 - 利用条件:攻击者能够访问到 Piwigo 安装目录(通常为
/install/),且服务器使用 PHP 8.0 及以上版本。 - 执行结果:写入的恶意代码在每次页面加载时被
include或require执行,实现远程命令执行、文件读写、权限提升等操作。
影响评估
攻击难度分析(基于 CVSS 向量)
| 指标 | 值 | 解释 |
|---|---|---|
| AV:N | 网络 | 攻击者可通过远程网络发起攻击 |
| AC:L | 低复杂度 | 无需特殊技巧,直接发送构造的 POST 请求即可 |
| PR:N | 无需权限 | 未认证即可触发 |
| UI:N | 无需用户交互 | 不需要管理员或用户额外点击 |
| C:H / I:H / A:H | 完全受影响 | 可读取、修改所有数据,或导致服务完全瘫痪 |
实际威胁等级:极高
- 利用门槛极低:攻击者只需发送一次 POST 请求,即可植入后门。
- 开发/测试环境常见:很多用户部署后未删除安装目录,导致暴露面大。
- 影响持久:写入的代码永久存在于配置文件中,即使修复漏洞后,旧文件仍可能被利用。
- 扫描可能:该漏洞适合自动化扫描,可批量检测并控制目标服务器。
限制因素
- 依赖 PHP 版本:仅 PHP 8.0+ 环境下
addslashes()保护失效;PHP 7.x 及以下版本中该函数仍起作用。 - 需要安装目录可访问:若生产环境已删除
install/目录,则无法利用。
修复建议
官方补丁(推荐)
- 升级到 Piwigo 16.3.1 或更高版本(假定官方已发布修复版本)。新版本应移除有问题的
get_magic_quotes_gpc()检查,并改用参数化写入或白名单过滤方式。
临时缓解措施
删除安装目录:
在 Piwigo 安装完成后,立即删除或重命名install/文件夹(或将其配置为 Web 服务器禁止访问)。访问控制:
在 Web 服务器(如 Nginx / Apache)中配置规则,仅允许可信 IP 访问/install/路径:location /install/ { deny all; }Web 应用防火墙(WAF)规则:
添加规则拦截包含特殊 SQL 或 PHP 代码片段的 POST 参数(如dbpasswd中出现单引号、分号、系统命令等模式)。手动检查受影响文件:
若怀疑已被利用,立即检查local/config/database.inc.php文件中是否存在异常 PHP 代码,并重新安装或恢复纯净备份。
参考资料
| 类型 | 链接 |
|---|---|
| NVD 官方页面 | https://nvd.nist.gov/vuln/detail/CVE-2026-35048 |
| CWE 分类 | https://cwe.mitre.org/data/definitions/20.html(输入验证不当) |
| 官方安全公告 | 暂未提供(截至公开日期 2026-07-20,建议关注 Piwigo 官方 GitHub 仓库) |
| 相关 CVE | 无 |
免责声明:本文中所有技术细节均基于 NVD 公开数据及通用安全知识推演得出,未对实际软件进行逆向分析。如遇具体部署问题,请参考 Piwigo 官方文档。