[2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)
昨日(2012.04.09)ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码。
ThinkPHP作为国内使用比较广泛的老牌PHP MVC框架,有不少创业公司或者项目都用了这个框架。不过大多数开发者和使用者并没有注意到本次漏洞的危害性,提醒:此漏洞是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码,使用thinkphp框架的各位站长赶快对自己的网站进检测,并修复。
修复方法:
1、下载官方发布的补丁:
http://code.google.com/p/thinkphp/source/detail?spec=svn2904&r=2838
2、或者直接修改源码:
/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php
$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths));
修改为
$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']='\2';', implode($depr,$paths));
将 preg_replace第二个参数中的双引号改为单引号,防止其中的php变量语法被解析执行。