2

我有一个客户安装了多个 Wordpress,但他没有及时更新。结果,他被黑了。虽然我试图找出黑客是如何进入的,并永久解决问题,但我正在尝试创建一个脚本来快速、自动地修复它们。

我找到了这个脚本,它可以满足我的要求:http ://designpx.com/tutorials/wordpress-security/

它会自动<?php eval(base64_decode("aWY..."); ?>从每个 php 文件中删除 ,但它用于执行此操作的正则表达式,<?php get_header(); ?>如果它遵循恶意代码,也会删除。

所以,我想要改变它,所以它只删除恶意代码,而不是第一行 php 代码。这是执行替换的脚本部分:

find $dir -name "*.php" -type f \  
|xargs sed -i 's#<?php /\*\*/ eval(base64_decode("aWY.*?>##g' 2>&1

我必须改变什么,所以它停在第一个?>,而不是第二个?

注意:我知道这是一个快速的临时修复,但它会一直持续到客户决定要修复哪些站点,以及删除哪些站点。

4

3 回答 3

7
  1. 备份数据库和主题。
  2. 删除 WordPress。
  3. 删除任何可疑文件。
  4. 安装最新的WordPress。
  5. 保持新的 WordPress 文件写保护
  6. 拍打所谓的“管理员”不及时更新。
  7. 利润。

不需要一些疯狂的脚本之类的。除非文件被感染,否则对 PHP 的黑客攻击无法发挥作用。删除它解决了这个问题。

是的,即使您在同一台服务器上安装了多个 wordpress,也可以这样做(为什么?!)。

于 2012-10-21T17:19:44.170 回答
3

除了建议重新安装的评论外,手头的正则表达式问题可能是贪婪。.*?占位符应该匹配最少的字符,但在sed行长等方面可能有一些限制。(不确定。)

但是为了进一步限制它,你可以[^>]*在它的位置使用:

 's#<?php /\*\*/ eval(base64_decode("aWY[^>]*?>##g'

这将确保它不会越过收盘?>base64无论如何不可能包含这个。

于 2012-10-21T18:24:09.447 回答
1

备份所有内容并使用防病毒软件对其进行扫描。在您的服务器中删除除 wp-config.php 之外的所有 wp 文件,然后转到 wordpress.org 下载最新版本。提取到您的计算机并上传。

检查您的备份主题文件是否受到感染。

于 2012-10-21T17:36:06.840 回答