年1月11日,CERT觉察某平安社区浮现对于ThinkPHP5RCE弱点的恐吓谍报,未几以后ThinkPHP5官方与GitHub公布革新。
该革新修理了一处严峻弱点,该弱点可致使长途夂箢代码施行
0x01影响局限ThinkPHP5.0.x
5.0.x~5.0.23
0x02修理提议官方在GitHub中举办了革新:版本革新
进级代码到最新版本5.0.24
同时提议用户在线上处境中紧闭debug形式
0x03修理提议该弱点毒害高,影响严峻:
0x04弱点剖析弱点紧要浮此刻ThinkPHPRequest类的method法子中(thinkphp/library/think/Request.php)
Request类也许完成对HTTP乞求的一些设置,个中成员法子method用来获得暂时乞求类别,其界说以下:
当传入的参数为false的时辰,会取设置项var_method,其默许值为_method
$this-{$this-method}($_POST);经过post参数_method也许完成对暂时类的随意法子举办挪用。
经过挪用暂时类的构造法子也许遮盖随意成员属性的值:
这边经过遮盖filter属性,filter属性保管了用于全面过滤的函数。
然则在thinkphp5.0.23中,会对filter值从头赋值为空,致使没法行使。
在thinkphp/library/think/App.php中开启debug的时辰会挪用Request类的param法子。
在thinkphp/library/think/Request.phpparam法子中会挪用到method法子,并将参数设置为true。
当参数为true的时辰,会挪用server法子
会走到input法子,经过以前法子遮盖server成员属性值为array(),input法子代码以下:
最后会挪用filterValue构成随意代码施行:
0x05光阴线-01-11CERT觉察弱点恐吓谍报
-01-11ThinkPHP公布补钉革新
-01-11CERT公布预警剖析
0x06参考链接ThinkPHP5github革新
[