cms审计小结
字数 1765 2025-08-07 08:22:00
CMS安全审计实战指南:漏洞挖掘与利用技术
1. 后台文件上传漏洞挖掘
1.1 后台设置文件上传
漏洞特征:
- 后台设置中通常包含网站logo上传功能
- 部分CMS允许在后台设置中修改允许上传的文件类型
典型案例:SchoolCMS
- 漏洞点:上传文件名后缀直接从Content-Type字段中以"/"为分隔符获取
- 文件名固定为"html_logo",绕过后缀限制
- 可直接上传恶意文件获取Webshell
审计要点:
- 检查上传文件的后缀处理逻辑
- 验证文件名生成机制是否可预测
- 测试Content-Type字段是否可被操纵
1.2 后台管理文件上传
漏洞特征:
- 存在于分类管理、权限管理等模块的文件上传点
- 常见于表单提交、图片上传等功能
典型案例:FastAdmin (CVE编号漏洞)
- 文件上传限制存在逻辑缺陷:使用逻辑或(OR)而非逻辑与(AND)
- 虽然限制了.php后缀,但允许.phtml、.php3等可解析后缀
- 不同Apache环境默认解析规则差异(kali/ubuntu默认解析.phtml)
审计要点:
- 检查文件上传限制函数的逻辑运算符
- 测试各种PHP可解析后缀(.php, .phtml, .php3, .php5等)
- 在不同Web环境下验证解析行为
1.3 CMS更新/插件本地上传
漏洞特征:
- 后台提供的更新文件上传或插件本地上传功能
- 通常涉及压缩包上传与解压操作
审计要点:
- 检查允许上传的压缩包格式(ZIP/RAR等)
- 确认是否使用PHP原生类(ZipArchive)进行解压
- 验证压缩包内容检查机制是否完善
- 测试是否可通过精心构造的压缩包植入Webshell
利用方法:
- 构造包含恶意文件的压缩包
- 确保压缩包结构满足CMS校验要求
- 上传后触发解压操作实现代码执行
2. 文件写入漏洞挖掘
漏洞特征:
- 无明显的功能界面,需通过代码审计发现
- 类似前端模板注入导致代码执行
典型案例:WuzhiCMS
- 存在于ueditor相关方法中
- 通过submit参数控制写入/读取缓存文件
- 攻击流程:
- 带submit参数请求写入恶意代码到缓存
- 不带submit参数请求读取缓存执行代码
审计要点:
- 关注编辑器相关函数(如ueditor)
- 检查文件写入操作是否可控
- 验证缓存文件读取机制是否存在安全隐患
3. 任意文件删除漏洞挖掘
漏洞特征:
- 后台文件管理功能中常见
- 通常结合路径穿越实现
审计要点:
- 定位后台文件删除操作API
- 检查路径处理是否存在穿越漏洞
- 验证文件名过滤机制是否完善
高级利用技巧:
- 删除安装锁文件(如install.lock)
- 触发重新安装流程
- 在安装过程中通过参数注入植入Webshell
组合攻击思路:
弱口令/默认凭证 → 后台登录 → 任意文件删除 → 重置安装状态 → 安装过程getshell
4. 任意文件读取漏洞挖掘
审计方法:
- 从后台模板功能入手
- 搜索关键函数:file_get_contents、file()等
- 检查文件读取操作是否受控
利用价值:
- 读取配置文件获取数据库凭证
- 获取源码分析更多漏洞
- 读取系统敏感文件提升权限
5. 综合审计方法论
-
功能点定位:
- 优先检查后台设置、文件管理、模板编辑等功能
- 关注所有涉及文件操作的功能点
-
代码审计技巧:
- 全局搜索关键函数(file_put_contents、unlink等)
- 分析文件操作相关方法的参数处理逻辑
- 验证所有过滤和校验机制
-
环境差异测试:
- 在不同Web服务器环境下验证漏洞
- 测试不同PHP版本的行为差异
-
漏洞联动思维:
- 将信息泄露与代码执行漏洞结合
- 利用权限绕过配合文件操作漏洞
- 通过多个低危漏洞组合实现高危利用
6. 防御建议
开发者:
- 严格限制上传文件类型和后缀
- 使用白名单而非黑名单机制
- 对上传文件重命名并限制执行权限
- 禁用危险函数如eval、assert等
- 对文件操作实施严格的路径校验
管理员:
- 及时更新CMS和插件
- 修改默认凭证
- 限制后台访问IP
- 定期审计系统日志
- 使用Web应用防火墙(WAF)
本指南基于实战经验总结,涵盖了CMS审计中最常见的高危漏洞类型及其挖掘方法。通过系统性地应用这些技术,安全研究人员可以更高效地发现和验证CMS系统中的安全隐患。