某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
漏洞修复建议
-
文件包含漏洞:
- 使用白名单限制包含文件
- 禁止目录穿越字符
-
SQL注入漏洞:
- 使用预处理语句(PDO/mysqli)
- 对输入进行严格过滤
- 关闭错误回显
-
XSS漏洞:
- 输出时使用htmlspecialchars转义
- 对用户输入进行严格过滤
-
垂直越权:
- 使用Session而非Cookie验证
- 增加更严格的权限验证
-
CSRF漏洞:
- 增加CSRF Token验证
- 重要操作使用POST请求
总结
XHCMS存在多处高危漏洞,包括文件包含、SQL注入、XSS、越权和CSRF等,主要原因是缺乏输入验证和输出过滤,直接拼接用户输入到敏感操作中。建议开发者全面重构安全机制,用户应立即停止使用该CMS或进行彻底的安全加固。