某最新版cms审计之前台到getshell历程
字数 1304 2025-08-29 08:32:09
某CMS前台到Getshell漏洞审计与分析
前言
本文详细分析某CMS系统中存在的多个安全漏洞,包括前台变量覆盖、后台任意文件删除、文件上传漏洞等,最终通过组合利用这些漏洞实现从前台到Getshell的攻击路径。这些漏洞已提交CNVD,部分漏洞至今仍未修复。
漏洞概述
该CMS系统存在以下关键漏洞:
- 后台任意文件删除漏洞
- 后台文件上传漏洞
- 后台跨目录解压漏洞
- 前台变量覆盖漏洞(可导致XSS攻击)
详细漏洞分析
1. 后台任意文件删除漏洞
漏洞位置:***fo/app/system/databack/admin/index.class.php 第821~836行
漏洞描述:
$file参数可控且未进行过滤- 可进行任意目录遍历和文件删除
漏洞代码分析:
// 代码中$file参数未过滤直接使用
// 允许通过../进行目录遍历
复现方法:
构造恶意请求删除服务器上任意文件
2. 后台文件上传漏洞
漏洞位置:upfilety.php 第269行开始
漏洞描述:
- 默认上传类型为sql
- 允许上传zip文件并解压
- 当zip内文件非sql时仅输出提示信息而不终止上传
- 可上传任意文件
漏洞代码分析:
// 312~328行处逻辑缺陷
if(zip内文件非sql){
// 仅输出提示信息
echo "压缩包里的文件非sql文件";
// 未终止上传流程
exit; // 但文件已上传完成
}
特殊发现:
开发者在代码中将"后缀"(houzhui)误写为"houzui"
3. 后台跨目录解压漏洞
漏洞描述:
- 与漏洞1、2类似
$file参数可控且未过滤../- 可解压文件到任意目录
利用方法:
结合漏洞2的文件上传,可将恶意文件解压到web目录实现Getshell
4. 前台变量覆盖漏洞
漏洞位置:
admin/login/login_check.php加载了/admin/include/common.inc.php/admin/include/common.inc.php存在变量覆盖问题
漏洞描述:
- 可实现变量覆盖
- 可覆盖
$url_array变量 - 导致XSS攻击
EXP示例:
http://127.0.0.1/***info/admin/login/login_check.php?url_array[]=123&url_array[]=123&url_array[]=aa%22+autofocus+onfocus=alert(2)+a=%0a%0ba=&url_array[]=123
攻击流程:
- 管理员正常登录后,authcode加密的值会被取出并解密
- 解密后的值输出在
app/system/safe/admin/templates/index.php - 无需登录即可触发XSS
- 当管理员访问后台"安全与效率"界面时自动触发XSS
- 可窃取管理员Cookie
组合利用攻击链
-
获取后台权限:
- 利用前台变量覆盖漏洞触发XSS
- 窃取管理员Cookie
- 获得后台访问权限
-
Getshell:
- 利用后台任意文件删除漏洞清除障碍
- 利用文件上传漏洞上传恶意zip文件
- 利用跨目录解压漏洞将恶意文件解压到web目录
- 最终获得服务器控制权限
防御建议
-
输入验证:
- 对所有用户输入进行严格过滤
- 禁止
../等目录遍历字符 - 对文件操作参数进行白名单验证
-
安全编码:
- 修复变量覆盖问题
- 确保上传逻辑严谨
- 解压前验证文件内容和目标路径
-
权限控制:
- 后台操作需要二次验证
- 文件操作限制在特定目录
-
安全配置:
- 设置合理的文件权限
- 禁用危险函数
总结
该CMS系统存在多处严重安全漏洞,通过组合利用这些漏洞可以实现从前台到Getshell的完整攻击链。开发人员应重视安全编码规范,对所有用户输入进行严格验证,并定期进行安全审计。