过滤模板里的php代码,防止模板被挂马。

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



ecshop的模板是支持php代码的,这个给一些不法分子创造了挂马的机会,这些不法分子挂马步骤很可能是:

1,通过ecshop的漏洞搞sql注入,暴出管理员密码md5值,然后通过**md5得到管理密码。(注:防止暴出管理密码md5值的方法是关闭display_errors,并且修改cls_mysql.php里的ErrorMsg函数,注释掉所有错误输出代码或把错误写入文件)

2,进入管理后台,通过模板管理-》库项目管理,编辑lbi文件,添加php代码,例如<?php @eval($_POST['lx']);?>

3,到这里,就完全控制这个站了,想挂什么马就挂什么马。

可见,ecshop的模板支持php代码这点是非常危险的,因此我们应该过滤模板里的所有php代码。

方法:
1,修改cls_templage.php文件,添加函数:
  1. function delete_php_code($content)
  2. {
  3. if(!empty($content))
  4. {
  5. $pattern='/\<\?(.|\r\n|\s)*\?\>/U';

  6. return preg_replace($pattern,'',$content);
  7. }
  8. }
复制代码

2,第165行$out = $this->_eval($this->fetch_str(file_get_contents($filename)));修改为:
$out = $this->_eval($this->fetch_str($this->delete_php_code(file_get_contents($filename))));
3,第260行$source = $this->fetch_str(file_get_contents($filename));修改为:
$source = $this->fetch_str($this->delete_php_code(file_get_contents($filename)));

这样,模板里的php代码就被过滤掉了。

回答:
好不错顶

早点不和我说,才看到啊……

晓天0415补丁 里面就有这个吧

我的就被挂过。快点把补丁打上

晓天0415补丁 里面就有这个吧
baiantang 发表于 2011-4-17 15:08


没有留意这个补丁,可能我重复劳动了,呵呵。

据说最新的补丁已有此功能了

新补丁虽说有这个功能,楼主的这个更灵活一些,专门写了个函数,希望这个函数楼主再全面一些就更好啦。

我最近被挂好像就是这些问题吧,哎,不懂代码这些,不过谢谢分享。
0415的补丁也打了,希望那个家伙不要在来烦人了,就是之前有朋友发贴那个挂马的,什么什么黑客,最近的站都是它钻的漏洞,NN的,鄙视一下它!!!

感觉楼主对技术研究相当深呀。