环境搭建
我打算安装在kali上面,首先下载tp6到kali上
// 1. 下载composer.phar: curl -sS https://getcomposer.org/installer | php // 2. 将 composer 命令移动到bin目录,使之全局可用 mv composer.phar /usr/local/bin/composer// 3. 设置中国全量镜像,提升访问速度 composer config -g repo.packagist composer https://packagist.phpcomposer.com // 如果上面错误存在问题,请使用这个镜像地址 composer config -g repo.packagist composer https://packagist.laravel-china.org//安装thinkphp6.0cd /var/www/htmlsudo composer create-project topthink/think=6.0 tp
下载的时候遇到报错
解决方法:安装扩展依赖
sudo apt-get install php-mbstringsudo apt-get install php-dom
安装成功
运行:
cd tpphp think run
运行在8000端口上,在浏览器上打开
版本为6.06,需要降低版本
编辑根目录下的composer.json
然后执行composer update
,成功降级
ThinkPHP6默认不开启session,我们需要修改app\middleware.php文件
<?php// 全局中间件定义文件return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middleware\LoadLangPack::class,// Session初始化 \think\middleware\SessionInit::class];
最后执行php think run
即可
漏洞复现_任意文件写入
首先修改app/controller/index.php
<?phpnamespace app\controller;use app\BaseController;class Index extends BaseController{public function index(){$a = isset($_GET['a']) && !empty($_GET['a']) ? $_GET['a'] : '';$b = isset($_GET['b']) && !empty($_GET['b']) ? $_GET['b'] : '';session($a,$b);return '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:) </h1><p> ThinkPHP V6<br/><span style="font-size:30px">13载初心不改 - 你值得信赖的PHP框架</span></p></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=64890268" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="eab4b9f840753f8e7"></think>';}public function hello($name = 'ThinkPHP6'){return 'hello,' . $name;}}
开启session且写入的session可控
/tp6/app/middleware.php 文件开启session
去掉注释session的//
构造payload如下
访问http://192.168.8.8:8000/aaaaaaaaaaa.php