我有一个具有多个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
我必须更改什么,所以它在第一个停下来?>
,而不是在第二个停下来?
注意:我知道这是一个快速的临时修复程序,但是它将在客户端确定要修复的站点以及要擦除的站点之前一直有效。
除了建议重新安装的评论外,手头的正则表达式问题可能是贪婪。本.*?
应该占位符匹配字符最短,但sed
可能有关于线路长度等一些限制(不知道。)
但是为了进一步限制它,你可以使用[^>]*
它的位置:
's#<?php /\*\*/ eval(base64_decode("aWY[^>]*?>##g'
这将确保它不能在结束时运行?>
。在base64
不可能含有这种反正。
很好,但仅供参考。要知道,重新安装是100%确保WordPress安装是干净安全的唯一方法。