手机
当前位置:查字典教程网 >电脑 >电脑安全教程 >ThinkPHP framework 任意代码执行漏洞预警
ThinkPHP framework 任意代码执行漏洞预警
摘要:ThinkPHP是一个国内使用很广泛的老牌PHPMVC框架。貌似国内有不少创业公司或者项目都用了这个框架。最近官方发布了一个安全补丁,官方表...

ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架。貌似国内有不少创业公司或者项目都用了这个框架。

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。

我们来分析一下官方的补丁:

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php

复制代码代码如下:

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']="2";', implode($depr,$paths));

125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']='2';', implode($depr,$paths));

这个代码是把pathinfo当作restful类型url进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。

然而在用正则解析pathinfo的时候,主要是这一句:

复制代码代码如下:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']="2";', implode($depr,$paths));

这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。

复制代码代码如下:

'$var['1']="2";'

而这里又是双引号,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码:

复制代码代码如下:

index.php/module/action/param1/${@print(THINK_VERSION)}

由于是双引号执行,这里为了保险起见,不给出更有危害性的代码,利用这个还是需要点技巧的。

总之这个问题非常严重,找了一下,发现目前没有修补漏洞的网站还是很多的。而ThinkPHP框架的特征其实非常好识别,有意者直接写个scanner进行扫描也未必不可能。

为了不造成更大损失,特地发帖希望引起各位使用thinkphp做开发的同学关注。尽早升级官方的安全补丁

【ThinkPHP framework 任意代码执行漏洞预警】相关文章:

WinRemotePC Full Lite 2008 r.2server Denial of Service Exploit

关于ThinkPHP framework 任意代码执行漏洞预警

Kaminsky DNS Cache Poisoning Flaw Exploit for Domains

诸多网页恶意代码应对之法

360安全卫士怎么添加信任程序

七招教你抵御ARP欺骗攻击

关于杀毒软件安装使用的几个误区 杀毒软件也要慎用

ESET NOD32 最新激活码

六条建议帮你防反间谍软件

PHP多字节编码漏洞小结

精品推荐
分类导航