pbootcms安全问题,查不到木马病毒文件,pbootcms模板和其他CMS一样,安全漏洞也是其无法避免的问题。虽然官方不断发布补丁、升级版本,但安全问题依然存在。
今天我们介绍一个病毒:
http://域名/jjjc/90.html?id=52239633.shtml
http://域名/jjjc/89.html?id=52239634.shtml
pbootcms被入侵的解决办法:
1)替换apps以及core文件,如果本地没有备份保存,那么可以选择升级到最近版本,目前官方也根据这个问题进行了更新处理.
2)修改robots.txt文件添加针对首页问题的拒绝访问规则
# Robots
Disallow: /admin/*
Disallow: /skin/
Disallow: /template/
Disallow: /static/*
Disallow: /api/*
Disallow: /?*
3) 修改源码,在apps/home/controller/IndexController.php 文件中添加针对首页带参数问题的处理。代码大概在200行以后找到//一级目录这里,在上方添加
if(strstr(URL,"?")){
_404('您访问的路径错误,请核对后重试!');
}
如下:在这里的后方加上else流程,进入主页流程的操作,同时加上urlJump方法(或者升级到最新版本以后再进行修改)
urlJump方法
//首页跳转并过滤注入字符
/*
* @param $type url模式
* @param $isSecSiteDir 是否为二级目录 boolean
* */
private function urlJump($type, $isSecSiteDir){
$http = is_https() ? 'https://' : 'http://';
$matches1 = '';
switch ($type){
//普通模式
case 1:
$preg1 = '';
if($isSecSiteDir === true){
if($_SERVER['REQUEST_URI'] == SITE_DIR . '/index.php'){
$preg1 = '/^/.*?/index.php/';
} elseif($_SERVER['REQUEST_URI'] == '/index.php'){
$preg1 = '/^/index.php/';
}
} else {
$preg1 = '/^/index.php/';
}
preg_match($preg1,$_SERVER['REQUEST_URI'],$matches1);
break;
//伪静态
case 2:
$preg2 = '';
if($isSecSiteDir === true){
if($_SERVER['REQUEST_URI'] == SITE_DIR . '/'){
$preg2 = '/^/.*/';
} elseif($_SERVER['REQUEST_URI'] == '/'){
$preg2 = '/^/$/';
}
} else {
$preg2 = '/^/.*/';
}
preg_match($preg2,$_SERVER['REQUEST_URI'],$matches1);
break;
//兼容模式
case 3:
$preg3 = '';
if($isSecSiteDir === true){
if(strpos($_SERVER['REQUEST_URI'], SITE_DIR) === 0){
$preg3 = '/(^/.*?/index.php)|(^/.*)/';
} elseif(strpos($_SERVER['REQUEST_URI'], '/') === 0){
$preg3 = '/(^/index.php)|(^/)/';
}
} else {
$preg3 = '/(^/index.php)|(^/)/';
}
preg_match($preg3,$_SERVER['REQUEST_URI'],$matches1);
break;
}
if($matches1[0]){
if($_SERVER['REQUEST_URI'] == $matches1[0]){
$this->getIndexPage();
} else {
header("Location: " . $http . $_SERVER['HTTP_HOST'] . $matches1[0], true, 301);
}
} else {
_404('您访问的页面不存在,请核对后重试!');
}
}
通过以上三步基本上就可以杜绝本次批量被挂马的问题,后续就是要加强服务器上的安全验证的问题了.