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

Posted Learning is fun.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/$%[email protected]%28%29%7D

就会执行phpinfo()函数,打印出phpinfo页。

预防:

官方已经给出了补丁,也可以自行将双引号改成单引号防止PHP代码被解析。


以上是关于ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞的主要内容,如果未能解决你的问题,请参考以下文章

CI框架3.0版本以后,前后台分离的方法。

对ThinkPHP 框架看法和建议

type没有GetProperties 看下框架版本

type没有GetProperties 看下框架版本

SOTA!目标检测开源框架YOLOv6 3.0版本来啦

ThinkPHP3.2学习——架构_CBD模式