如何使用 SSH 递归地删除 PHP 文件中两个字符串之间的注入代码

如何使用 SSH 递归地删除 PHP 文件中两个字符串之间的注入代码

我们有内部 Linux(Ubuntu)开发服务器。几天前有人注入了可疑代码。这里要提一下,我们有 300 多个项目。几乎每个文件中都递归地注入了代码。

我们尝试在局域网上的Windows系统上使用Dreamweaver进行搜索和替换,但发现了使用DreamWeaver无法正常工作的另一个原因;

注入代码入门PHP起始TAG:

<?php $ldtxxk

中间有很多加密代码,但所有文件的代码都不同,但都以 PHP 结尾 TAG 结尾。因此,由于所有文件的代码都已完全更改,我们无法使用任何软件来查找和替换它。

因此,我们需要某种带有正则表达式的 SSH SED 命令,它可以在特定目录上执行递归作业,以便

查找自

<?php $ldtxxk

?>

并删除包括 PHP 开始和结束标签之间的所有内容。

提前致谢。

答案1

首先尝试这样的操作。它会删除两个模式之间的文本(以斜线分隔):

sed '/<?php $ldtxxk/,/?>/d' file_with_injected_code.php

如果输出看起来不错,您可以插入“-i”以便替换文件的内容:

sed '/<?php $ldtxxk/,/?>/d' file_with_injected_code.php

然后,您可以将 sed 命令与 find 命令结合起来,以递归方式搜索从工作目录开始的 php 文件:

find -name '*.php' -exec sed -i '/<?php $ldtxxk/,/?>/d' '{}' \;

如果你修复了 php 文件,你应该调查攻击者是如何获得访问权限的。检查日志文件!

您的机器可以通过互联网访问吗?

  • 您是否运行 FTP 服务器?密码可能很弱?请考虑更改这些密码或使用带公钥的 SFTP。
  • 您的 php 应用程序是否存在漏洞?也许攻击者会使用它来上传 php 脚本。将上传文件夹移出 webroot,拒绝 php 文件上传或删除文件的权限,这样它们就不会被 web 服务器解释/传送。

相关内容