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

  介绍

这期内容当中小编将会给大家带来有关ThinkPHP6.0任意文件如何创建Getshell复现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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


<节> <强> 0 x02漏洞概述   ,,,
  ,,

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


<强> 0 x03影响版本

ThinkPHP 6.0.0-6.0.1


<强> 0 x04环境搭建

<节> <节> <强> 1,安装作曲家   ,,, <>部分下载Composer-Setup.exe   ,,,
  ,,, <节>
 https://getcomposer.org/download/
  ,,,


<节>执行安装文件,选择。exe位置,即可安装成功   ,,,
  ,,,


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


<>部分作曲家拉取环境有时候可能会卡住,可以换国内镜像   ,,,
  ,,,
 
  ,,,<节> <>以前composer  config  -g  repo.packagist  composer  https://packagist.phpcomposer.com   ,,,


,,,

<强> 2,安装thinkphp

<节>
 composer  create-project  topthink/think  tp6  (tp6自定义)
  ,,, <节>
  ,,,

出现报错可参考:

<节>
 http://www.jrnw.net/index.php/2019/05/30/thinkphp6%E6%A1%86%E6%9E%B6%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B/
  ,,,


,,,

<强> 3版本选择

将tp6/作曲家。json文件的“topthink/framework":“^ 6.0.0"改成0版本,并执行更新命令

 
  ,,,<节> <>之前进入tp6目录cd  tp6composer 更新   ,,,
 <代码> 
  ,,,

<>强PS:

<李>

如果是linux就再执行启动环境:。/想运行——主机=0.0.0.0——端口=8000

<李>

如果不能拉取到环境,公众号内回复”tp60环境”获取


<强> 0 x05漏洞利用

<>节首先在得到可控会议参数名,这是本地构造的,实战需要自己模糊。   ,,, <节>
构造位置:tp60控制器\ app \ \ index . php   ,,,


需要增加构造的内容:

 
  ,,,<节> <>以前use 认为\外观\会话,会话:设置(& # 39;用户# 39;$ _GET[& # 39;用户名# 39;]);   ,,,
 <代码> 
  ,,,

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

<节>
  ,,, <>节开启会话且写入的会话可控   ,,, <节>/tp6/应用/中间件。php文件开启会话   ,,, <>节去掉注释会话的//,,, <节>
  ,,, ThinkPHP6.0任意文件如何创建Getshell复现”>
  ,,,<br/>
  ,,,</节> <p> <br/> </p> <>节构造请求:
  ,,,</节> <节>用户名就是我们刚才构造的接受参数,然后将PHPSESSID的值修改为32位的保存路径
  ,,,</节> <节> <br/>
  ,,,<img src=


<强> 0 x06坑点

<节>

1,本地测试localhost失败

问题:

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