QCMS代码审计:XSS+SQL+后台getshell
字数 1494 2025-08-26 22:11:57

QCMS代码审计:XSS+SQL+后台getshell漏洞分析

系统概述

QCMS是一款小型网站管理系统,具有以下特点:

  • 支持多种结构类型:ASP+ACCESS、ASP+SQL、PHP+MYSQL
  • 采用UTF-8和GB2312编码
  • 功能包括文章管理、产品展示、下载、社区、博客等
  • 程序与网页代码分离
  • 支持生成Google、Baidu网站地图

漏洞分析

1. 存储型XSS漏洞

漏洞位置:留言功能模块

漏洞成因

  1. /System/Controller/guest.phpindex_Action方法中,直接接收用户输入并传递给模型
  2. 经过QCMS_Guest->insert()方法传递到数据库操作
  3. Db->get_sql_insert()方法中仅对单双引号和反斜杠进行转义,未过滤HTML标签

利用方式

<script>alert(1)</script>

影响

  • 前端用户访问留言页面时触发XSS
  • 后台管理员查看留言时也会触发XSS

2. SQL注入漏洞

漏洞位置:后台下载管理模块

漏洞成因

  1. /System/Controller/backend/down.phpindex_Action方法中直接拼接用户输入的title参数
  2. 通过QCMS_Down->selectAll()方法传递到数据库操作
  3. Db->get_sql_cond()方法中,当参数不是数组时直接返回原始数据,未进行过滤

利用方式

http://127.0.0.1/backend/down.html?title=1';select if(ascii(substr((select database()), 1, 1))-113, 1, sleep(5));%23

影响

  • 可进行基于时间的盲注
  • 可获取数据库敏感信息

3. 任意文件上传漏洞

漏洞位置:系统设置上传logo功能

漏洞成因

  1. /System/Controller/backend/index.phpajaxupload_Action方法中调用上传功能
  2. 上传类upload.php的白名单检查不严格:
    • 允许application/octet-stream类型
    • 使用原始文件扩展名而非根据MIME类型重命名
  3. 仅通过文件内容hash进行重复检查,修改内容后可重新上传

利用方式

  1. 上传包含恶意代码的PHP文件(如<?php phpinfo();?>
  2. 系统返回上传路径
  3. 直接访问上传的PHP文件

影响

  • 可直接获取Webshell
  • 完全控制服务器

4. 任意文件读取漏洞

漏洞位置:后台模板代码预览功能

漏洞成因

  1. /System/Controller/backend/template.phptempview_Action方法中直接解码并读取文件
  2. 未对路径进行任何过滤,可进行目录遍历

利用方式

http://127.0.0.1/backend/template/tempview/Li4vLi4vLi4vQ29udHJvbGxlci9hZG1pbi5waHA=.html

(其中Li4vLi4vLi4vQ29udHJvbGxlci9hZG1pbi5waHA=../../../Controller/admin.php的base64编码)

影响

  • 可读取系统任意文件源码
  • 可能导致敏感信息泄露

漏洞修复建议

  1. XSS漏洞修复

    • 对所有用户输入进行HTML实体编码
    • 使用htmlspecialchars()函数处理输出
  2. SQL注入修复

    • 使用预处理语句替代字符串拼接
    • 对非数组参数也进行严格的过滤
  3. 文件上传漏洞修复

    • 严格限制上传文件类型
    • 根据MIME类型强制修改文件扩展名
    • 将上传文件存储在Web目录之外
  4. 文件读取漏洞修复

    • 限制文件读取路径为模板目录
    • 对输入参数进行严格的路径校验

总结

QCMS系统存在多处严重安全漏洞,主要问题包括:

  1. 输入验证不严格
  2. 数据库操作不安全
  3. 文件操作缺乏权限控制
  4. 上传功能设计缺陷

这些漏洞组合利用可导致系统完全沦陷,建议用户及时更新或采取防护措施。

QCMS代码审计:XSS+SQL+后台getshell漏洞分析 系统概述 QCMS是一款小型网站管理系统,具有以下特点: 支持多种结构类型:ASP+ACCESS、ASP+SQL、PHP+MYSQL 采用UTF-8和GB2312编码 功能包括文章管理、产品展示、下载、社区、博客等 程序与网页代码分离 支持生成Google、Baidu网站地图 漏洞分析 1. 存储型XSS漏洞 漏洞位置 :留言功能模块 漏洞成因 : 在 /System/Controller/guest.php 的 index_Action 方法中,直接接收用户输入并传递给模型 经过 QCMS_Guest->insert() 方法传递到数据库操作 在 Db->get_sql_insert() 方法中仅对单双引号和反斜杠进行转义,未过滤HTML标签 利用方式 : 影响 : 前端用户访问留言页面时触发XSS 后台管理员查看留言时也会触发XSS 2. SQL注入漏洞 漏洞位置 :后台下载管理模块 漏洞成因 : 在 /System/Controller/backend/down.php 的 index_Action 方法中直接拼接用户输入的 title 参数 通过 QCMS_Down->selectAll() 方法传递到数据库操作 在 Db->get_sql_cond() 方法中,当参数不是数组时直接返回原始数据,未进行过滤 利用方式 : 影响 : 可进行基于时间的盲注 可获取数据库敏感信息 3. 任意文件上传漏洞 漏洞位置 :系统设置上传logo功能 漏洞成因 : 在 /System/Controller/backend/index.php 的 ajaxupload_Action 方法中调用上传功能 上传类 upload.php 的白名单检查不严格: 允许 application/octet-stream 类型 使用原始文件扩展名而非根据MIME类型重命名 仅通过文件内容hash进行重复检查,修改内容后可重新上传 利用方式 : 上传包含恶意代码的PHP文件(如 <?php phpinfo();?> ) 系统返回上传路径 直接访问上传的PHP文件 影响 : 可直接获取Webshell 完全控制服务器 4. 任意文件读取漏洞 漏洞位置 :后台模板代码预览功能 漏洞成因 : 在 /System/Controller/backend/template.php 的 tempview_Action 方法中直接解码并读取文件 未对路径进行任何过滤,可进行目录遍历 利用方式 : (其中 Li4vLi4vLi4vQ29udHJvbGxlci9hZG1pbi5waHA= 是 ../../../Controller/admin.php 的base64编码) 影响 : 可读取系统任意文件源码 可能导致敏感信息泄露 漏洞修复建议 XSS漏洞修复 : 对所有用户输入进行HTML实体编码 使用 htmlspecialchars() 函数处理输出 SQL注入修复 : 使用预处理语句替代字符串拼接 对非数组参数也进行严格的过滤 文件上传漏洞修复 : 严格限制上传文件类型 根据MIME类型强制修改文件扩展名 将上传文件存储在Web目录之外 文件读取漏洞修复 : 限制文件读取路径为模板目录 对输入参数进行严格的路径校验 总结 QCMS系统存在多处严重安全漏洞,主要问题包括: 输入验证不严格 数据库操作不安全 文件操作缺乏权限控制 上传功能设计缺陷 这些漏洞组合利用可导致系统完全沦陷,建议用户及时更新或采取防护措施。