对于网站开发人员来说,php是最常用的一种开发语言。其官方在近期停止更新5.x版本的安全更新后,众多基于5.x开发的网站基本上没有了安全保证。大多数公司已经开始着手更新php网站版本。
而作为国内最大的开源框架thinkphp拥有成千上万的用户。其最近也被爆出有相关漏洞可以被操纵服务器,具体可以看下面。众开发者可以查看修改,以下内容部分摘自thinkphp官方论坛。
其中通过parseModuleAndClass方法解析出$module和$class,然后实例化$class。 rseModuleAndClass方法中,当$name以反斜线\开始时直接将其作为类名。利用命名空间的特点,如果可以控制此处的$name(即路由中的controller部分),那么就可以实例化任何一个类。
代码简单,就是使用/对$url进行分割,未进行过滤。路由地址Request::path()中获取。
var_pathinfo的默认配置为s,我们可利用$_GET['s']来传递路由信息,也可用pathinfo来传递,但测试时windows环境下会将$_SERVER['pathinfo']中的\替换为/。结合前面分析可得初步利用代码如下:index.php?s=index/\namespace\class/method,这将会实例化\namespace\class类并执行method方法。然而利用过程中会存在一些限制,部分类在实例化时由于缺少参数而报错。经过一番寻找,在\think\Request类中找到可以利用的方法input。
请广大开发者自己查阅并及时调整代码,避免被不法分子有可乘之机。