74cms 最新 getshell 漏洞
字数 876 2025-08-29 08:30:30

74cms最新getshell漏洞分析与复现

漏洞概述

74cms(骑士人才系统)存在一个文件上传漏洞,攻击者可以通过构造特殊的base64编码数据上传PHP文件,从而获取服务器webshell权限。

环境搭建

  1. 下载源码:从官网下载 https://www.74cms.com/download/detail/161.html
  2. 使用phpstudy搭建环境
  3. 配置数据库地址和管理员密码
  4. 完成安装(参考官方文档:http://doc.74cms.com/#/se/quickstart?id=%e5%ae%89%e8%a3%85%e7%a8%8b%e5%ba%8f)

漏洞复现步骤

  1. 注册企业账号

    • 访问 /member/reg/company 注册一个企业账号
    • 登录该企业账号
  2. 构造恶意请求

    • 在企业logo上传处,构造base64编码的PHP文件
    • 示例POC:
      imgBase64=data:image/php;base64,PD9waHAgcGhwaW5mbygpOw==
      
      (此为<?php phpinfo();?>的base64编码)
  3. 获取webshell

    • 发送请求后会返回文件路径
    • 访问该路径即可执行上传的PHP代码

漏洞分析

  1. 漏洞位置

    • 文件:application/v1_0/controller/company/Index.php
    • 问题代码:处理上传的base64数据时未严格校验文件类型
  2. 漏洞原理

    • 系统允许通过base64方式上传文件
    • 未严格限制文件类型,攻击者可伪造文件头
    • 虽然文件名包含随机time值,但响应中会返回完整路径
  3. 触发条件

    • 需要企业账号权限(通过注册企业账号获得)
    • 需要调用checkLogin方法进行初始化

修复建议

  1. 严格限制文件类型

    • 强制要求上传文件必须是图片格式
    • 验证文件内容与扩展名是否匹配
  2. 防止文件扩展名伪装

    • 禁止通过修改文件头伪装文件类型
    • 对上传文件进行二次渲染验证
  3. 其他安全措施

    • 禁止直接执行上传目录中的PHP文件
    • 对返回路径进行模糊处理

免责声明

本文仅用于安全研究和技术交流目的。未经授权对系统进行测试或攻击属于违法行为。传播、利用本文信息造成的任何后果由使用者自行承担。

74cms最新getshell漏洞分析与复现 漏洞概述 74cms(骑士人才系统)存在一个文件上传漏洞,攻击者可以通过构造特殊的base64编码数据上传PHP文件,从而获取服务器webshell权限。 环境搭建 下载源码:从官网下载 https://www.74cms.com/download/detail/161.html 使用phpstudy搭建环境 配置数据库地址和管理员密码 完成安装(参考官方文档:http://doc.74cms.com/#/se/quickstart?id=%e5%ae%89%e8%a3%85%e7%a8%8b%e5%ba%8f) 漏洞复现步骤 注册企业账号 : 访问 /member/reg/company 注册一个企业账号 登录该企业账号 构造恶意请求 : 在企业logo上传处,构造base64编码的PHP文件 示例POC: (此为 <?php phpinfo();?> 的base64编码) 获取webshell : 发送请求后会返回文件路径 访问该路径即可执行上传的PHP代码 漏洞分析 漏洞位置 : 文件: application/v1_0/controller/company/Index.php 问题代码:处理上传的base64数据时未严格校验文件类型 漏洞原理 : 系统允许通过base64方式上传文件 未严格限制文件类型,攻击者可伪造文件头 虽然文件名包含随机time值,但响应中会返回完整路径 触发条件 : 需要企业账号权限(通过注册企业账号获得) 需要调用 checkLogin 方法进行初始化 修复建议 严格限制文件类型 : 强制要求上传文件必须是图片格式 验证文件内容与扩展名是否匹配 防止文件扩展名伪装 : 禁止通过修改文件头伪装文件类型 对上传文件进行二次渲染验证 其他安全措施 : 禁止直接执行上传目录中的PHP文件 对返回路径进行模糊处理 免责声明 本文仅用于安全研究和技术交流目的。未经授权对系统进行测试或攻击属于违法行为。传播、利用本文信息造成的任何后果由使用者自行承担。