ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

栏目: PHP · 发布时间: 5年前

内容简介:大概看了下,这个洞跟5.0的原理大致相同,都是利用Reuqest类的Method方法覆盖了

大概看了下,这个洞跟5.0的原理大致相同,都是利用Reuqest类的Method方法覆盖了 $this->filter 属性,然后进入 filterValue 调用 call_user_func($filter, $value)$value当前请求参数和URL地址中的参数合并 ,从而导致RCE。

漏洞验证

测试版本:Thinkphp_5.1.1

补丁:https://github.com/top-think/framework/commit/2454cebcdb6c12b352ac0acd4a4e6b25b31982e6

需要在入口文件处关闭报错。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

payload

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

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

流程分析

在获取应用调度信息时会调用Request类的method方法获取当前的请求类型

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

$this->config->get('var_method') 外部可控,即 $this->method 我们可控,从而我们可以通过 $this->{$this->method}($_POST) 调用任意方法。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析 ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

跟进 filter 方法,发现我们post的数据可以覆盖 $this->filter 属性。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

回到App类,由于我们开启了 $this->debug 从而可以进入 Request 类的 param 方法。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

跟进 param 方法, $this->param当前请求参数和URL地址中的参数合并 。然后进入 input 方法。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析 跟进 input 方法,因为 $data 为上面提到的 $this->param 即数组,从而进入if条件执行 array_walk_recursive($data, [$this, 'filterValue'], $filter);
ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

查阅 array_walk_recursive 函数可知,该函数会调用 $this->filterValue 函数,把 $data 数组的每个值作为其第一个参数,键名作为第二个参数,并且把 $this->filter 作为第三个参数。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

继续跟进 filterValue 方法,发现调用了 call_user_func($filter, $value)$filter 为刚开始我们覆盖的 $this->filter 属性的遍历键值,等于 $_POST 数组。 $value当前请求参数和URL地址中的参数合并 数组 $this->param 的键值。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

当遍历到 $this->param 的第二个键值 calc.exe$filters 的第一个键值 exec 时,成功执行命令,弹出了计算器。

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析

补丁分析

ThinkPHP 5.1.x~5.2.x全版本 RCE 漏洞分析 与5.0一样,对表单请求类型伪装变量添加了白名单。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

免费

免费

克里斯•安德森 / 蒋旭峰、冯斌、璩静 / 中信出版社 / 2012-10 / 68.00元

一种商业模式既可以统摄未来的市场,也可以挤垮当前的市场——在我们这个现代经济社会里,这并不是一件不可能的事情。 “免费”就是这样的一种商业模式,它所代表的正是数字化网络时代的商业未来。 在《免费》这本书中,克里斯•安德森认为,新型的“免费”并不是一种左口袋出、右口袋进的营销伎俩,而是一种把货物和服务的成本压低到零的新型卓越能力。在20世纪“免费”是一种强有力的推销手段,而在21世纪它已经成为......一起来看看 《免费》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换