关于ThinkPHP framework 任意代码执行漏洞预警

所属分类: 软件教程 / 安全相关 阅读数: 1386
收藏 0 赞 0 分享

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。 

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。 

我们来分析一下官方的补丁: 

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php 

复制代码
代码如下:

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths)); 
125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']='\2';', implode($depr,$paths)); 


这个代码是把pathinfo当作restful类型url进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。 
然而在用正则解析pathinfo的时候,主要是这一句: 

复制代码
代码如下:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths)); 

这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。 

复制代码
代码如下:

'$var['\1']="\2";' 

而这里又是双引号,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码: 

复制代码
代码如下:

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

由于是双引号执行,这里为了保险起见,不给出更有危害性的代码,利用这个还是需要点技巧的。 

总之这个问题非常严重,找了一下,发现目前没有修补漏洞的网站还是很多的。而ThinkPHP框架的特征其实非常好识别,有意者直接写个scanner进行扫描也未必不可能。 
为了不造成更大损失,特地发帖希望引起各位使用thinkphp做开发的同学关注。尽早升级官方的安全补丁 

作者:GaRY
更多精彩内容其他人还在看

腾讯电脑管家如何恢复被误删的手机通讯录

有时候会不小心将手机通讯录删掉,那么,遇到这种情况该怎么办呢?使用腾讯电脑管家就可以解决这个问题,下面以图文的形式为大家介绍下具体的操作步骤
收藏 0 赞 0 分享

金山毒霸加速球怎么开启或关闭?

金山毒霸加速球怎么开启或关闭?山毒霸的加速球,有的人喜欢,但是在安装的时候,没有发现这个加速球,有的人不喜欢,但是不知道在哪里才能找到金山毒霸的加速球在哪里关闭,下面分享具体教程
收藏 0 赞 0 分享

360安全卫士防护弹窗怎么设置成自动处理模式?

360安全卫士防护弹窗怎么设置成自动处理模式?这篇文章主要为大家介绍了如何设置360防护弹窗模式为自动处理模式,需要的朋友可以参考下
收藏 0 赞 0 分享

怎么用鲁大师检查笔记本电脑电池损耗程度?

怎么用鲁大师检查笔记本电脑电池损耗程度?每当笔记本电脑上的电池没电的时候,电脑就无法使用。但是经常会遇到这种情况,就是电池刚充满,但是没用多久又没电了,这是怎么回事?下面教你用鲁大师检查一下
收藏 0 赞 0 分享

360安全卫士的防护弹窗如何设置成自动处理模式

360安全卫士在给大家带来防护时也带来了很多不便,比如防护弹窗总是会让用户们不胜其扰,下面有个不错的方法可以在一定程度上降低烦恼
收藏 0 赞 0 分享

360浏览器主页被篡改的两个解决方法

自己的360浏览器主页被篡改,觉得很不爽,解决方法并没有那么复杂,下面整理了两个可行的方法,需要的朋友可以看看哦
收藏 0 赞 0 分享

彻底卸载杀毒软件avast(爱维士)的几大方法

avast是一款来自捷克的杀毒软件,在国外市场一直处于领先地位,中文名为爱维士,没办法卸载以及卸载不干净的问题,想必大家都有遇到过,下面为大家介绍个可行的卸载方法,需要朋友不要错过
收藏 0 赞 0 分享

电脑管家帐号宝包丢失怎么找回?

电脑管家帐号宝包丢失怎么找回?在QQ中有我们的亲朋好友在里面经常一起聊天,但是很多不法人士,就企图盗走我们的QQ,然后以此假借QQ号主人的身份进行诈骗,怎么快速找回呢?请看下文
收藏 0 赞 0 分享

360杀毒恢复误删隔离文件的方法

360杀毒误删隔离文件怎么恢复?有时候用360杀毒会无意删除一些安全的文件,但是删除以后,有些程序就没办法运行了,万一不小心删除隔离文件该怎么办呢?下面分享360杀毒恢复误删隔离文件的方法
收藏 0 赞 0 分享

360安全卫士社会自接收到压缩文件安全时提示的教程

如何设置360安全卫士接收到压缩文件安全时提示?电脑经常接收压缩文件,想让360安全卫士安全卫士在收到压缩文件时提示,该怎么设置呢?下面我们一起来看看吧
收藏 0 赞 0 分享
查看更多