CVE-2025-1743 漏洞代码审计分析
字数 1341 2025-08-29 08:30:05
CVE-2025-1743 PicHome 前台任意文件读取漏洞分析
漏洞概述
漏洞编号: CVE-2025-1743
影响产品: PicHome 开源网盘程序
漏洞类型: 前台任意文件读取
危害等级: 高危
影响版本: 漏洞披露时所有版本
PicHome 是一款功能强大的开源网盘程序,具有文件管理、图像和媒体文件管理、文件共享和AI辅助管理等功能。
漏洞描述
PicHome 系统中存在一个前台任意文件读取漏洞,攻击者无需认证即可通过构造特殊请求读取服务器上的任意文件,可能导致敏感信息泄露。
技术分析
1. 路由机制分析
PicHome 采用典型的基于钩子(Hook)和路由的应用程序初始化流程,类似于Discuz!、WordPress等系统:
- 请求首先进入
index.php - 包含
/data/cache/route.php - 检查
route.php中是否存在pathinfo数组 - 如果不存在,则包含
/core/dzzstart.php dzzstart.php进一步包含/core/VBase.php
路由格式: index.php?mod=模块名(文件名)&op=函数名
2. 漏洞位置
漏洞位于 /dzz/textviewer/index.php 文件中,通过以下路由访问:
index.php?mod=textviewer&op=index
3. 漏洞代码分析
关键漏洞代码如下:
// 在/dzz/textviewer/index.php中
if(isset($_GET['src'])) {
$src = urldecode($_GET['src']);
$content = file_get_contents($src);
// ...后续处理...
}
漏洞成因:
- 直接接收用户输入的
src参数 - 仅进行URL解码后直接传递给
file_get_contents() - 无任何路径限制或过滤措施
4. 利用方式
攻击者可以构造以下URL读取任意文件:
- Windows系统:
/index.php?mod=textviewer&op=index&src=C:/windows/win.ini - Linux系统:
/index.php?mod=textviewer&op=index&src=/etc/passwd
漏洞复现
复现步骤
- 搭建PicHome环境
- 访问以下URL之一:
- Windows:
http://target/index.php?mod=textviewer&op=index&src=C:/windows/win.ini - Linux:
http://target/index.php?mod=textviewer&op=index&src=/etc/passwd
- Windows:
- 观察返回内容,确认是否读取到目标文件
复现截图
[此处应插入复现成功的截图]
修复建议
-
输入验证:
- 对
src参数进行严格过滤 - 限制只能访问特定目录下的文件
- 对
-
路径检查:
$allowed_path = '/var/www/pichome/uploads/'; $src = realpath(urldecode($_GET['src'])); if(strpos($src, $allowed_path) !== 0) { die('Access denied'); } -
使用白名单:
- 只允许特定的文件扩展名
- 维护可访问文件的白名单
-
权限控制:
- 即使修复后也应确保web服务器用户权限最小化
总结
CVE-2025-1743漏洞源于PicHome系统中对用户输入缺乏充分验证,直接使用file_get_contents()读取任意文件路径。这类漏洞危害性高,攻击者可能读取服务器上的敏感文件(如配置文件、密码文件等),建议用户及时更新到修复版本或按照上述建议进行手动修复。