熊海cms代码审计-学习篇
字数 1416 2025-08-15 21:33:00

熊海CMS代码审计教学文档

0x00 前言

本教学文档基于对熊海CMS的代码审计实践,总结发现的多个安全漏洞,包括文件包含漏洞、逻辑漏洞和SQL注入漏洞。通过本教学,您将学习到如何识别和利用这些常见的安全问题。

0x01 文件包含漏洞

漏洞位置

  • index.php 文件
  • admin/index.php 文件

漏洞分析

  1. 漏洞原理

    • 代码通过$_GET['r']获取参数,使用三元运算符判断是否为空
    • 如果为空则包含index,否则包含r参数指定的文件
    • r参数完全可控,未做任何过滤
  2. 关键代码

    $r = isset($_GET['r']) ? $_GET['r'] : 'index';
    include($r);
    
  3. 利用方法

    • 构造Payload:r=../xx 实现目录遍历
    • 可以包含任意文件,包括本地文件(LFI)或远程文件(RFI)
  4. 影响范围

    • 前台index.php和后台admin/index.php均存在此漏洞
    • 可能导致敏感信息泄露、代码执行等严重后果

0x02 逻辑漏洞(认证绕过)

漏洞位置

  • ./inc/check_login.php 文件

漏洞分析

  1. 认证流程

    • 正常登录流程涉及4个文件:
      1. 默认r=login,包含login.php
      2. login.php包含inc/conn.php(处理账号密码验证)
      3. inc/conn.php负责MySQL连接和认证
      4. 最后返回login.php完成登录,设置user cookie
  2. 漏洞代码

    $user = $_COOKIE['user'];
    if ($user == ""){
        header("Location: ?r=login");
        exit;
    }
    
  3. 漏洞原理

    • 仅检查user cookie是否为空
    • 如果user不为空(无论值是什么),都会通过认证检查
    • 没有验证user值的有效性
  4. 利用方法

    1. 退出后台
    2. 添加任意user cookie(如user=1
    3. 访问?r=index即可绕过登录
  5. 影响

    • 完全绕过后台认证机制
    • 攻击者可无密码访问后台所有功能

0x03 SQL注入漏洞

漏洞位置

  • admin/login.php 文件

漏洞分析

  1. 漏洞代码

    // 用户输入直接拼接到SQL语句中
    $user = $_POST['user'];
    $password = $_POST['password'];
    
    // 执行SQL查询
    $query = "SELECT * FROM manage WHERE user='$user'";
    $res = mysql_query($query);
    
    // 检查密码
    if ($password != $row['password']){
        exit;
    }
    
  2. 漏洞特点

    • 用户输入的$user直接拼接到SQL语句,无过滤
    • 不能使用万能密码绕过,因为会单独检查密码
    • 使用了mysql_error()函数,适合报错注入
  3. 利用方法

    • 构造报错注入Payload:
      1' or updatexml(1,concat_ws(database(),0x7e,0x7e),1) #
      
    • 通过错误信息获取数据库信息
  4. 影响

    • 可能导致数据库信息泄露
    • 可能进一步获取管理员凭据或其他敏感数据

0x04 其他安全问题

文档提到该系统还存在多处XSS漏洞,但未详细说明。在实际审计中,应检查:

  1. 所有用户输入输出点
  2. 是否使用了htmlspecialchars等过滤函数
  3. 反射型和存储型XSS的可能性

0x05 防护建议

  1. 文件包含防护

    • 使用白名单限制可包含的文件
    • 禁止包含用户可控的文件路径
    • 使用basename()等函数过滤路径
  2. 认证逻辑加固

    • 检查cookie值是否有效(如与session比对)
    • 实现完整的会话管理机制
    • 使用服务器端session而非仅依赖cookie
  3. SQL注入防护

    • 使用预处理语句(PDO/mysqli)
    • 对用户输入进行严格过滤
    • 禁用错误信息显示
  4. 其他建议

    • 对所有用户输入进行验证和过滤
    • 实现CSRF防护机制
    • 定期进行安全审计和代码审查

0x06 总结

熊海CMS存在多处严重安全漏洞,包括文件包含、认证绕过和SQL注入等。这些漏洞的组合可能导致系统完全被攻陷。开发人员应重视安全编码实践,审计人员应重点关注用户输入处理、认证逻辑和数据库操作等关键点。

熊海CMS代码审计教学文档 0x00 前言 本教学文档基于对熊海CMS的代码审计实践,总结发现的多个安全漏洞,包括文件包含漏洞、逻辑漏洞和SQL注入漏洞。通过本教学,您将学习到如何识别和利用这些常见的安全问题。 0x01 文件包含漏洞 漏洞位置 index.php 文件 admin/index.php 文件 漏洞分析 漏洞原理 : 代码通过 $_GET['r'] 获取参数,使用三元运算符判断是否为空 如果为空则包含 index ,否则包含 r 参数指定的文件 r 参数完全可控,未做任何过滤 关键代码 : 利用方法 : 构造Payload: r=../xx 实现目录遍历 可以包含任意文件,包括本地文件(LFI)或远程文件(RFI) 影响范围 : 前台 index.php 和后台 admin/index.php 均存在此漏洞 可能导致敏感信息泄露、代码执行等严重后果 0x02 逻辑漏洞(认证绕过) 漏洞位置 ./inc/check_login.php 文件 漏洞分析 认证流程 : 正常登录流程涉及4个文件: 默认 r=login ,包含 login.php login.php 包含 inc/conn.php (处理账号密码验证) inc/conn.php 负责MySQL连接和认证 最后返回 login.php 完成登录,设置 user cookie 漏洞代码 : 漏洞原理 : 仅检查 user cookie是否为空 如果 user 不为空(无论值是什么),都会通过认证检查 没有验证 user 值的有效性 利用方法 : 退出后台 添加任意 user cookie(如 user=1 ) 访问 ?r=index 即可绕过登录 影响 : 完全绕过后台认证机制 攻击者可无密码访问后台所有功能 0x03 SQL注入漏洞 漏洞位置 admin/login.php 文件 漏洞分析 漏洞代码 : 漏洞特点 : 用户输入的 $user 直接拼接到SQL语句,无过滤 不能使用万能密码绕过,因为会单独检查密码 使用了 mysql_error() 函数,适合报错注入 利用方法 : 构造报错注入Payload: 通过错误信息获取数据库信息 影响 : 可能导致数据库信息泄露 可能进一步获取管理员凭据或其他敏感数据 0x04 其他安全问题 文档提到该系统还存在多处XSS漏洞,但未详细说明。在实际审计中,应检查: 所有用户输入输出点 是否使用了 htmlspecialchars 等过滤函数 反射型和存储型XSS的可能性 0x05 防护建议 文件包含防护 : 使用白名单限制可包含的文件 禁止包含用户可控的文件路径 使用 basename() 等函数过滤路径 认证逻辑加固 : 检查cookie值是否有效(如与session比对) 实现完整的会话管理机制 使用服务器端session而非仅依赖cookie SQL注入防护 : 使用预处理语句(PDO/mysqli) 对用户输入进行严格过滤 禁用错误信息显示 其他建议 : 对所有用户输入进行验证和过滤 实现CSRF防护机制 定期进行安全审计和代码审查 0x06 总结 熊海CMS存在多处严重安全漏洞,包括文件包含、认证绕过和SQL注入等。这些漏洞的组合可能导致系统完全被攻陷。开发人员应重视安全编码实践,审计人员应重点关注用户输入处理、认证逻辑和数据库操作等关键点。