专栏首页字节脉搏实验室ThinkPHP6.0任意文件创建Getshell复现

ThinkPHP6.0任意文件创建Getshell复现

0x01 简介

ThinkPHP框架是MVC结构的开源PHP框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。该漏洞源于ThinkPHP 6.0的某个逻辑漏洞,成功利用此漏洞的攻击者可以实现“任意”文件创建,在特殊场景下可能会导致GetShell。

0x02 漏洞概述

2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文件操作漏洞。该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。

0x03 影响版本

ThinkPHP 6.0.0-6.0.1

0x04 环境搭建

利用PHPStudy对环境进行搭建

1.安装Composer

下载Composer-Setup.exe ,链接:https://getcomposer.org/download/

执行安装文件,选择php.exe位置,一路默认安装成功

composer拉取环境会卡住,换成国内镜像。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

2.安装thinkphp

TP6下载:https://github.com/top-think/think 下载后放到phpstudy的根目录即可

创新项目之前,先切换到web项目目录windows+R 进入cmd命令窗口

composer create-project topthink/think tp6 (tp6自定义,这个会生成一个文件夹) 这里说一个问题,我这个时间Thinkphp的最新版是6.0.2,用上面的命令下载下来framework是6.0.2版本的,我们需要再执行一条命令:composer require topthink/framework:6.0.0:此时就会把将6.0.0的版本把6.0.2给替换掉

成功后配置php对应的环境变量(这个自行百度),注意php开启和配置的环境变量要对应且要php7.1以上,我这里用的是phpstudypro的最高版本php7.3

接着进入刚刚生成的tp6的目录,输入php think run, 默认运行在localhost:8000

接下来访问127.0.0.1:8000就可以看到搭建成功了

0x05 漏洞利用

在目标环境为Windows且开启session的情况下,容易遭受任意文件删除攻击。

在目标环境开启session且写入的session可控的情况下,容易遭受任意文件写入攻击。

修改/app/controller/Index.php 文件

session(‘demo’,$_GET[‘c’]);

修改 /app/middleware.php 文件如下

这里注意PHPSESSID的值一定要是32位(算上.php)这样才可以,接着再通过变量c传递任意代码。

可以看到文件在runtime\session下生成,内容并写入

接下来进行访问即可,同时将phpinfo代码改成一句话代码,即可Getshell。

0x06 修复

目前官网已经更新了thinkphp6.0.2版本(目前最新),修复了该漏洞,建议尽快升级最新版本。

本文分享自微信公众号 - 字节脉搏实验室(zijiemaiboshiyanshi),作者:purplet

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vulnhub-Bsides Vancouver 2018

    https://www.vulnhub.com/entry/bsides-vancouver-2018-workshop,231/#release

    字节脉搏实验室
  • 文件上传实战总结

    很多初学者,拿到一个上传点,不知道应该怎么快速的去判断它的绕过方式。这就导致我们大量的时间浪费在了这里,到最后才发现这个地方其实绕不过去或者说自己压根做不出来。

    字节脉搏实验室
  • HTB靶机-base实战分享

    之后准备长期更新HTB系列,由易到难,开了VIP,所有靶机的思路都会更新,让大家尽可能多的学习到挖洞技巧,请大家持续关注咱们的微信公众号,字节脉搏实验室。

    字节脉搏实验室
  • 天津数据中心群英传——之呼风唤水篇(下)

    励炼四:运营模式的精细化是如何炼成的? 4.1: 不断“试优”造就了运行模式的“多样化”: 随着运行环境的变动和运营经验的积累,空调系统的运营模式也“丰富多彩”...

    腾讯数据中心
  • 快速学习ES6-查询

    在上面的案例中,不仅会查询到电视,而且与小米相关的都会查询到,多个词之间是or的关系。

    cwl_java
  • Oracle SPA取报告阶段xml解析失败解决方案

    故障描述:数据库字符集:US7ASCII,在SPA分析阶段正常,但在取报告阶段xml解析失败,具体现象如下:

    Alfred Zhao
  • [搜索]ElasticSearch Java Api(一) -添加数据创建索引

    转载:http://blog.csdn.net/napoay/article/details/51707023

    用户1518699
  • 深入源码探索 ReactNative 通信机制

    本文从源码角度剖析 ReactNative 中 Java <> Js 的通信机制(基于最新的 ReactNative for Android Release 2...

    腾讯Bugly
  • 架构和框架的区别

    人们对软件架构存在非常多的误解,其中一个最为普遍的误解就是:将架构(Architecture)和框架(Framework)混为一谈。其实很简单,一句话:框架是软...

    哲洛不闹
  • 记录一次通过性能日志处理线上性能问题的过程

    在项目发展初期,可能由于数据量和用户访问量的原因,系统不会出现性能问题,但是随着项目发展,数据量发生具体变化,系统访问量也不断增多,此时对代码的优化就显得...

    用户4143945

扫码关注云+社区

领取腾讯云代金券