74cms 最新 getshell 漏洞
字数 876 2025-08-29 08:30:30
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:
(此为imgBase64=data:image/php;base64,PD9waHAgcGhwaW5mbygpOw==<?php phpinfo();?>的base64编码)
-
获取webshell:
- 发送请求后会返回文件路径
- 访问该路径即可执行上传的PHP代码
漏洞分析
-
漏洞位置:
- 文件:
application/v1_0/controller/company/Index.php - 问题代码:处理上传的base64数据时未严格校验文件类型
- 文件:
-
漏洞原理:
- 系统允许通过base64方式上传文件
- 未严格限制文件类型,攻击者可伪造文件头
- 虽然文件名包含随机time值,但响应中会返回完整路径
-
触发条件:
- 需要企业账号权限(通过注册企业账号获得)
- 需要调用
checkLogin方法进行初始化
修复建议
-
严格限制文件类型:
- 强制要求上传文件必须是图片格式
- 验证文件内容与扩展名是否匹配
-
防止文件扩展名伪装:
- 禁止通过修改文件头伪装文件类型
- 对上传文件进行二次渲染验证
-
其他安全措施:
- 禁止直接执行上传目录中的PHP文件
- 对返回路径进行模糊处理
免责声明
本文仅用于安全研究和技术交流目的。未经授权对系统进行测试或攻击属于违法行为。传播、利用本文信息造成的任何后果由使用者自行承担。