这几天做主机(idc.txizd.cn),因为部分朋友要使用国内主机,但是没有备案域名,我又有几个备案域名没有使用,就百度了个二级域名分发源码搭建了个域名分发网站(dns.txizd.cn)给大家使用,今天晚上突然发现网站信息被篡改,用户账号密码被删除。这才想起来之前有朋友说ThinkPHP5.0与5.11有远程代码执行高危漏洞,二级域名分发源码又是使用ThinkPHP5.0开发的。
-----------------------------------------------------------------------------------------------------------
找了一下影响版本有:
ThinkPHP 5.0系列 < 5.0.23
ThinkPHP 5.1系列 < 5.1.31
安全版本:
ThinkPHP 5.0系列 5.0.23
ThinkPHP 5.1系列 5.1.31
建议:最好更新到安全版本
如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节)
-----------------------------------------------------------------------------------------------------------
我不敢直接升级最新版本,怕出问题。所以找了下手动修正方法。
手动修正方法:
5.0版本
thinkphp/library/think/App.php 类的module方法的获取控制器的代码后面加上
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
5.1版本
thinkphp/library/think/route/dispatch/Url.php 类的parseUrl方法,解析控制器后加上 添加
if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
因为二级域名分发源码又是使用ThinkPHP5.0开发的这里所以这里就不加5.1的图片了。
发表评论