PHP代码审计WCMS11
字数 1151 2025-08-29 08:30:05

WCMS11 CMS 代码审计与漏洞分析教学文档

环境搭建

  1. 使用小皮面板搭建环境
  2. 下载源码到本地
  3. 通过小皮面板配置环境信息
  4. 访问/install.php文件完成安装流程

注意:安装后可能找不到默认密码,解决方案:

  • 注册一个新账户
  • 在数据库中修改该账户的groupid值为1(管理员权限)
  • 使用该账户登录后台

路由分析

入口文件:index.php

核心路由处理:

  1. 检查controllers目录下是否存在对应访问文件
  2. 检查Admin目录下是否存在对应访问文件
  3. 结合功能点访问的数据包,可以构造路由触发特定功能

鉴权机制分析

文件位置:app/admin/AdminController.php

校验逻辑:

  1. 检查COOKIE中是否存在openid字段,不存在则跳转到登录页面
  2. 通过openid获取用户信息,检查status字段是否大于0
  3. 检查groupid字段是否为1(管理员权限)

openid生成逻辑:

  • 通过isLogin方法处理用户输入的mobile_phonepassword
  • 查询数据库获取用户数据
  • 生成openid需要uid和用户数据data,难以伪造

漏洞分析

1. 任意文件上传导致RCE

文件上传处理流程:

  1. 全局搜索upload相关关键词定位到上传方法
  2. 上传方法处理流程:
    • 接收文件内容
    • 使用substr获取文件后缀(可控)
    • 拼接随机前缀生成新文件名
    • 使用move_uploaded_file上传文件

漏洞点:

  • 文件后缀完全可控
  • 无文件内容检测
  • 可上传任意文件类型(如PHP文件)

漏洞验证

  1. 在编辑器图片上传功能点上传恶意文件
  2. 访问上传的文件执行代码

2. 存储型XSS漏洞

漏洞位置:账户注册功能

攻击步骤:

  1. 注册账户时修改用户名为XSS payload
  2. 管理员在后台查看用户列表时触发XSS

过滤机制:

  • 使用正则表达式#[i过滤以下字符:*,./?-%!

绕过POC


防御建议

  1. 文件上传漏洞修复:

    • 严格限制上传文件类型(白名单方式)
    • 检测文件内容而不仅是后缀
    • 上传文件存储在非web可访问目录
    • 重命名上传文件(不可预测的名称)
  2. XSS漏洞修复:

    • 对所有用户输入进行HTML实体编码
    • 实现更严格的输入过滤
    • 使用CSP(内容安全策略)限制脚本执行
  3. 权限系统加固:

    • 加强openid生成机制,使用加密签名
    • 实现CSRF防护
    • 对敏感操作进行二次验证

总结

通过对WCMS11 CMS的代码审计,发现了以下高危漏洞:

  1. 任意文件上传导致远程代码执行
  2. 存储型跨站脚本攻击漏洞

这些漏洞的组合可能导致网站完全被攻击者控制,建议开发者立即修复并加强安全防护措施。

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的代码审计,发现了以下高危漏洞: 任意文件上传导致远程代码执行 存储型跨站脚本攻击漏洞 这些漏洞的组合可能导致网站完全被攻击者控制,建议开发者立即修复并加强安全防护措施。