我们有内部 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 服务器解释/传送。