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进行扫描也未必不可能。
新华社首尔12月6日电(记者陆睿 耿学鹏)新冠疫情近期在韩国再次出现反弹且持续扩散,政府6日宣布从8日零时起再次上调全国保持社交距离防疫级别,进一步收紧防疫措施。 根据韩国中央灾难安全对策本...
一、帝国全系列黑客接单流程 1、黑客方法黑客主要在互联网上有以下新技术。一旦黑客出现,他们必须立即学习并在最短的时间内掌握这项技术。帝国全系列装x软件手机黑客通常会找到一种方法来添加自己的后门帐户,然...
有的妈妈会在宝宝不长牙齿的时候担心孩子是因为缺钙,但是又怕不是这个原因不敢给孩子补钙,那么孩子长牙齿慢有什么办法呢,友谊长存小编就来说说孩子长牙的问题吧。 宝宝迟迟不长牙是缺钙吗 一般情况下,小宝...
178号是我国挪动营运商,属于中国移动通信178号段。移动号段有关截止到2015年10月,挪动的号码段包含:134、135、136、137、138、139、150、151、152、157、158、15...
本文目录一览: 1、尼尔机械纪元黄金兔子怎么黑入 黑客流打法 2、尼尔机械纪元9S黑客BOSS攻略 黑客弹幕怎么玩 3、《尼尔机械纪元》的“开始入侵”这一剧情怎么通过? 4、尼尔机械纪元9...
想要这样的话,必须要有像你们申请手机号的那样,用链接器将新的手机卡与电脑链接好,并且你还要入侵到它们的服务器里,将里面的(你想要的)数据和驱动拷。 太简单了。什么复制SIM卡,信号拦截,间谍卫星就不谈...