PHP代码审计WCMS11
字数 1151 2025-08-29 08:30:05
WCMS11 CMS 代码审计与漏洞分析教学文档
环境搭建
- 使用小皮面板搭建环境
- 下载源码到本地
- 通过小皮面板配置环境信息
- 访问
/install.php文件完成安装流程
注意:安装后可能找不到默认密码,解决方案:
- 注册一个新账户
- 在数据库中修改该账户的
groupid值为1(管理员权限) - 使用该账户登录后台
路由分析
入口文件:index.php
核心路由处理:
- 检查
controllers目录下是否存在对应访问文件 - 检查
Admin目录下是否存在对应访问文件 - 结合功能点访问的数据包,可以构造路由触发特定功能
鉴权机制分析
文件位置:app/admin/AdminController.php
校验逻辑:
- 检查COOKIE中是否存在
openid字段,不存在则跳转到登录页面 - 通过
openid获取用户信息,检查status字段是否大于0 - 检查
groupid字段是否为1(管理员权限)
openid生成逻辑:
- 通过
isLogin方法处理用户输入的mobile_phone和password - 查询数据库获取用户数据
- 生成
openid需要uid和用户数据data,难以伪造
漏洞分析
1. 任意文件上传导致RCE
文件上传处理流程:
- 全局搜索
upload相关关键词定位到上传方法 - 上传方法处理流程:
- 接收文件内容
- 使用
substr获取文件后缀(可控) - 拼接随机前缀生成新文件名
- 使用
move_uploaded_file上传文件
漏洞点:
- 文件后缀完全可控
- 无文件内容检测
- 可上传任意文件类型(如PHP文件)
漏洞验证:
- 在编辑器图片上传功能点上传恶意文件
- 访问上传的文件执行代码
2. 存储型XSS漏洞
漏洞位置:账户注册功能
攻击步骤:
- 注册账户时修改用户名为XSS payload
- 管理员在后台查看用户列表时触发XSS
过滤机制:
- 使用正则表达式
#[i过滤以下字符:*、,、.、/、?、-、%、!
绕过POC:
防御建议
-
文件上传漏洞修复:
- 严格限制上传文件类型(白名单方式)
- 检测文件内容而不仅是后缀
- 上传文件存储在非web可访问目录
- 重命名上传文件(不可预测的名称)
-
XSS漏洞修复:
- 对所有用户输入进行HTML实体编码
- 实现更严格的输入过滤
- 使用CSP(内容安全策略)限制脚本执行
-
权限系统加固:
- 加强
openid生成机制,使用加密签名 - 实现CSRF防护
- 对敏感操作进行二次验证
- 加强
总结
通过对WCMS11 CMS的代码审计,发现了以下高危漏洞:
- 任意文件上传导致远程代码执行
- 存储型跨站脚本攻击漏洞
这些漏洞的组合可能导致网站完全被攻击者控制,建议开发者立即修复并加强安全防护措施。