内容简介:大概看了下,这个洞跟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
需要在入口文件处关闭报错。
payload
c=exec&f=calc.exe&&_method=filter&
流程分析
在获取应用调度信息时会调用Request类的method方法获取当前的请求类型
且 $this->config->get('var_method')
外部可控,即 $this->method
我们可控,从而我们可以通过 $this->{$this->method}($_POST)
调用任意方法。
跟进 filter
方法,发现我们post的数据可以覆盖 $this->filter
属性。
回到App类,由于我们开启了 $this->debug
从而可以进入 Request
类的 param
方法。
跟进 param
方法, $this->param
为 当前请求参数和URL地址中的参数合并 。然后进入 input
方法。
input
方法,因为
$data
为上面提到的
$this->param
即数组,从而进入if条件执行
array_walk_recursive($data, [$this, 'filterValue'], $filter);
查阅 array_walk_recursive
函数可知,该函数会调用 $this->filterValue
函数,把 $data
数组的每个值作为其第一个参数,键名作为第二个参数,并且把 $this->filter
作为第三个参数。
继续跟进 filterValue
方法,发现调用了 call_user_func($filter, $value)
, $filter
为刚开始我们覆盖的 $this->filter
属性的遍历键值,等于 $_POST
数组。 $value
为 当前请求参数和URL地址中的参数合并 数组 $this->param
的键值。
当遍历到 $this->param
的第二个键值 calc.exe
和 $filters
的第一个键值 exec
时,成功执行命令,弹出了计算器。
补丁分析
与5.0一样,对表单请求类型伪装变量添加了白名单。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 【漏洞分析】CouchDB漏洞(CVE–2017–12635, CVE–2017–12636)分析
- 【漏洞分析】lighttpd域处理拒绝服务漏洞环境从复现到分析
- 漏洞分析:对CVE-2018-8587(Microsoft Outlook)漏洞的深入分析
- 路由器漏洞挖掘之 DIR-815 栈溢出漏洞分析
- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数学与生活(修订版)
[日] 远山启 / 吕砚山、李诵雪、马杰、莫德举 / 人民邮电出版社 / 2014-10 / 42.00元
数学是高等智慧生物的共有思维,是对真理的探索,对矛盾的怀疑,但它绝非一门晦涩难懂的学问,非应试目的的数学是纯粹而朴实的智慧。《数学与生活》为日本数学教育改革之作,旨在还原被考试扭曲的数学,为读者呈现数学的真正容颜,消除应试教学模式带来的数学恐惧感。 本书既包含了初等数学的基础内容,又包含了微分、积分、微分方程、费马定理、欧拉公式等高等数学的内容。作者运用了多个学科的知识。结合日常生活和东西方......一起来看看 《数学与生活(修订版)》 这本书的介绍吧!