phpyun人才招聘系统最新版v5.1.5漏洞挖掘
字数 2024 2025-08-07 08:22:07

PHPYun人才招聘系统v5.1.5漏洞分析与利用指南

环境搭建

  1. 源码下载:从官方论坛获取v5.1.5版本源码 https://www.phpyun.com/bbs/thread-16786-1-1.html
  2. 安装:按照正常流程安装系统
  3. 测试环境:假设本地搭建地址为 http://www.phpyun515.com/
  4. 后台默认凭证:admin/admin

系统防御机制分析

PHPYun系统对安全防护做了多层处理:

  1. 输入过滤

    • 加载config/db.safety.php进行基础过滤
    • $_GET$_POST$_COOKIE执行addSlash处理
    • 使用common_htmlspecialchars函数过滤特殊字符
    • 通过strip_tagsgpc2sql函数进行二次过滤
  2. SQL注入防护

    • 将单引号、双引号、括号等替换为中文符号
    • 关键字替换机制有效防止SQL注入

漏洞目录

  1. 后台任意文件删除漏洞
  2. 后台任意文件写入漏洞
  3. 后台命令执行漏洞
  4. 后台任意文件读取漏洞

漏洞详情与利用

1. 后台任意文件删除漏洞

漏洞位置:数据库备份删除功能

复现步骤

  1. 登录后台访问:工具 -> 数据 -> 数据库管理 -> 备份数据
  2. 创建一个备份(可选)
  3. 在"恢复数据"页面点击删除并抓包
  4. 修改GET参数sql../../../../../test(要删除的目录)
  5. 发送请求

漏洞分析

  • 路由:admin/index.php?m=database&c=del
  • 处理文件:admin/model/database.class.php中的del_action方法
  • 漏洞代码:
    $handle = opendir(PLUS_PATH.'/bdata/'.$_GET['sql']);
    
  • 问题:未过滤../导致目录穿越,后续unlink操作可删除任意文件

2. 后台任意文件写入漏洞

漏洞位置:首页生成功能

复现步骤

  1. 登录后台访问:工具 -> 生成 -> 首页生成
  2. 修改"首页保存路径"为../index.php
  3. 发送请求覆盖目标文件

漏洞分析

  • 路由:admin/index.php?m=cache&c=index
  • 处理文件:admin/model/cache.class.php中的index_action方法
  • 关键代码:
    $this->webindex($_POST['make_index_url']);
    
  • 问题:make_index_url参数未过滤,可直接写入任意路径

3. 后台命令执行漏洞

漏洞位置:网站设置与首页生成组合漏洞

复现步骤

  1. 步骤一

    • 访问:系统 -> 设置 -> 网站设置 -> 基本设置
    • 修改"网站名称"为PHP代码:<?php echo whoami;?>
    • 保存设置
  2. 步骤二

    • 访问:工具 -> 生成 -> 首页生成
    • 设置"首页保存路径"为../aaa.php
    • 生成后访问http://www.phpyun515.com/aaa.php执行命令

漏洞分析

  • 网站设置保存:

    • 路由:admin/index.php?m=config&c=save
    • 处理文件:admin/model/config.class.php中的save_action方法
    • 数据最终存入数据库phpyun_admin_config
  • 首页生成:

    • 使用Smarty模板引擎编译
    • 编译后的模板包含用户可控的sy_webname
    • 生成的PHP文件包含恶意代码

限制:由于过滤机制,无法使用括号,只能使用反引号执行命令

4. 后台任意文件读取漏洞

漏洞位置:数据库备份下载与网站设置组合漏洞

复现步骤

  1. 步骤一

    • 访问:系统 -> 设置 -> 网站设置 -> 基本设置
    • 修改"网站地址"为单个点.
    • 保存设置
  2. 步骤二

    • 直接发送请求读取文件:
      GET /admin/index.php?m=database&c=down_sql&name=../../../qqlogin.php
      

漏洞分析

  • 网站设置修改:

    • 修改sy_weburl值为.影响文件路径解析
  • 文件读取:

    • 路由:admin/index.php?m=database&c=down_sql
    • 处理文件:admin/model/database.class.php中的down_sql_action方法
    • 关键代码:
      $fileurl = $this->config['sy_weburl']."/data/backup/".$_GET['name'];
      
    • 通过修改sy_weburl.并结合../实现任意文件读取

总结与防御建议

  1. 漏洞共性

    • 全部需要后台权限
    • 主要问题在于未正确处理路径遍历
    • 部分漏洞需要组合利用
  2. 修复建议

    • 对所有用户输入进行严格的路径规范化处理
    • 禁止使用../等目录遍历符号
    • 对写入文件内容进行严格过滤
    • 限制配置文件的可修改范围
  3. 注意事项

    • 这些漏洞在v6.x版本中可能已修复
    • 所有漏洞均已提交CNVD
    • 文件删除漏洞可能存在争议(CNVD认为撞洞)
  4. 研究局限

    • 未发现前台漏洞
    • 命令执行受限(无法使用括号)
    • 需要进一步研究绕过过滤的方法

本教学文档详细分析了PHPYun v5.1.4的四个高危后台漏洞,包括复现步骤、技术原理和防御建议,可供安全研究人员参考学习。

PHPYun人才招聘系统v5.1.5漏洞分析与利用指南 环境搭建 源码下载 :从官方论坛获取v5.1.5版本源码 https://www.phpyun.com/bbs/thread-16786-1-1.html 安装 :按照正常流程安装系统 测试环境 :假设本地搭建地址为 http://www.phpyun515.com/ 后台默认凭证 :admin/admin 系统防御机制分析 PHPYun系统对安全防护做了多层处理: 输入过滤 : 加载 config/db.safety.php 进行基础过滤 对 $_GET 、 $_POST 、 $_COOKIE 执行 addSlash 处理 使用 common_htmlspecialchars 函数过滤特殊字符 通过 strip_tags 和 gpc2sql 函数进行二次过滤 SQL注入防护 : 将单引号、双引号、括号等替换为中文符号 关键字替换机制有效防止SQL注入 漏洞目录 后台任意文件删除漏洞 后台任意文件写入漏洞 后台命令执行漏洞 后台任意文件读取漏洞 漏洞详情与利用 1. 后台任意文件删除漏洞 漏洞位置 :数据库备份删除功能 复现步骤 : 登录后台访问:工具 -> 数据 -> 数据库管理 -> 备份数据 创建一个备份(可选) 在"恢复数据"页面点击删除并抓包 修改GET参数 sql 为 ../../../../../test (要删除的目录) 发送请求 漏洞分析 : 路由: admin/index.php?m=database&c=del 处理文件: admin/model/database.class.php 中的 del_action 方法 漏洞代码: 问题:未过滤 ../ 导致目录穿越,后续 unlink 操作可删除任意文件 2. 后台任意文件写入漏洞 漏洞位置 :首页生成功能 复现步骤 : 登录后台访问:工具 -> 生成 -> 首页生成 修改"首页保存路径"为 ../index.php 发送请求覆盖目标文件 漏洞分析 : 路由: admin/index.php?m=cache&c=index 处理文件: admin/model/cache.class.php 中的 index_action 方法 关键代码: 问题: make_index_url 参数未过滤,可直接写入任意路径 3. 后台命令执行漏洞 漏洞位置 :网站设置与首页生成组合漏洞 复现步骤 : 步骤一 : 访问:系统 -> 设置 -> 网站设置 -> 基本设置 修改"网站名称"为PHP代码: <?php echo whoami ;?> 保存设置 步骤二 : 访问:工具 -> 生成 -> 首页生成 设置"首页保存路径"为 ../aaa.php 生成后访问 http://www.phpyun515.com/aaa.php 执行命令 漏洞分析 : 网站设置保存: 路由: admin/index.php?m=config&c=save 处理文件: admin/model/config.class.php 中的 save_action 方法 数据最终存入数据库 phpyun_admin_config 表 首页生成: 使用Smarty模板引擎编译 编译后的模板包含用户可控的 sy_webname 值 生成的PHP文件包含恶意代码 限制 :由于过滤机制,无法使用括号,只能使用反引号执行命令 4. 后台任意文件读取漏洞 漏洞位置 :数据库备份下载与网站设置组合漏洞 复现步骤 : 步骤一 : 访问:系统 -> 设置 -> 网站设置 -> 基本设置 修改"网站地址"为单个点 . 保存设置 步骤二 : 直接发送请求读取文件: 漏洞分析 : 网站设置修改: 修改 sy_weburl 值为 . 影响文件路径解析 文件读取: 路由: admin/index.php?m=database&c=down_sql 处理文件: admin/model/database.class.php 中的 down_sql_action 方法 关键代码: 通过修改 sy_weburl 为 . 并结合 ../ 实现任意文件读取 总结与防御建议 漏洞共性 : 全部需要后台权限 主要问题在于未正确处理路径遍历 部分漏洞需要组合利用 修复建议 : 对所有用户输入进行严格的路径规范化处理 禁止使用 ../ 等目录遍历符号 对写入文件内容进行严格过滤 限制配置文件的可修改范围 注意事项 : 这些漏洞在v6.x版本中可能已修复 所有漏洞均已提交CNVD 文件删除漏洞可能存在争议(CNVD认为撞洞) 研究局限 : 未发现前台漏洞 命令执行受限(无法使用括号) 需要进一步研究绕过过滤的方法 本教学文档详细分析了PHPYun v5.1.4的四个高危后台漏洞,包括复现步骤、技术原理和防御建议,可供安全研究人员参考学习。