ThinkPHP framework 任意代码执行漏洞预警
发布时间:2012-04-11 15:32:28 作者:佚名 我要评论
最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码
ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架。貌似国内有不少创业公司或者项目都用了这个框架。
最近官方发布了一个安全补丁,官方表述是:该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
最近官方发布了一个安全补丁,官方表述是:该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
相关文章
- 本文来介绍一下thinkphp官方修复的一个getshell漏洞,框架对控制器没有进行足够的检测导致的一处getshell,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随2018-12-12
记 FineUI 官方论坛discuz所遭受的一次真实网络攻击
这篇文章主要介绍了记 FineUI 官方论坛discuz所遭受的一次真实网络攻击,需要的朋友可以参考下2018-11-30- 这篇文章主要介绍了Linux 下多种反弹 shell 方法,需要的朋友可以参考下2017-09-06
- 这篇文章主要为大家介绍了基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击,需要的朋友可以参考下2017-05-20
- 这篇文章主要介绍了SQL注入黑客防线网站实例分析,需要的朋友可以参考下2017-05-19
- 这里为大家分享一下sql注入的一些语句,很多情况下由于程序员的安全意识薄弱或基本功不足就容易导致sql注入安全问题,建议大家多看一下网上的安全文章,最好的防范就是先学2017-05-19
- 对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,就会自动的记录下你的IP地址,提交的非法参数和动作等,2017-04-29
- 我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这三类2016-12-27
- 这篇文章主要介绍了Python 爬虫使用动态切换ip防止封杀的相关资料,需要的朋友可以参考下2016-10-08
- 这篇文章主要介绍了使用爬虫采集网站时,解决被封IP的几种方法的相关资料,需要的朋友可以参考下2016-10-08
最新评论