Grep 消息如垃圾 - 没有这样的文件或目录

Grep 消息如垃圾 - 没有这样的文件或目录

我的服务器被黑客入侵了,我现在正在尝试找到所有“奇怪”的文件。我正在运行:

find . -type f -name '*' | xargs grep -l "Mini Shell"

此命令对我查找和删除恶意代码有很大帮助。

但是这也给我带来了很多错误,它覆盖了我所有的 shell,我无法轻松找到找到的 grep 文件。这是我看到的一个例子:

grep: Player: No such file or directory
grep: Quick: No such file or directory
grep: Start: No such file or directory
grep: Guide.pdf: No such file or directory
grep: ./domain1.pl/wp-content/themes/kingsize/images/social/1.: No such file or directory
grep: license.txt: No such file or directory
grep: ./domain1.pl/wp-content/themes/kingsize/documentation/Express: No such file or directory
grep: Install.xml: No such file or directory
grep: ./domain2.net/wp-content/plugins/google-analytics-for-wordpress/assets/dependencies/datatables/images/Sorting: No such file or directory
grep: icons.psd: No such file or directory
./domain3.in/admin/static/radio.php

上面的文本中,只有 1 个恶意文件,这正是我要找的。所有其他消息都是垃圾。我如何避免在 grep 查询中收到此类“没有此文件或目录”消息?

就像当它发现文件名中带有空格时它就会中断。

谢谢

答案1

不需要像这样在‘xargs’中管道传输‘find’。

我会做什么(-r递归):

grep -rl "Mini Shell" .

这些错误是由于你的一些文件的文件名中有空格

如果您想处理每个文件,即使文件名中有特殊字符,我建议(使用NULL byte作为文件分隔符):

grep -Zrl "Mini Shell" . | xargs -I% -0 mv % /path/to/trash

答案2

find仅当要检查的文件具有特定文件扩展名时才有意义,例如.php。然后您可以使用-exec以下参数find

find . -name "*.php" -type f -exec grep -l "Mini Shell" {} \;

这将使查找修改的文件比查找所有文件快得多。

-name='*'单独来看是没有意义的。由于目录将被省略,因此-type f执行速度会更快一些。find

一般建议

如果您的服务器被黑客入侵,您首先必须找到攻击媒介,否则您将再次遭受黑客入侵。此外,最好从头开始设置并从备份中恢复您的 Web 应用程序,因为您不太可能找到攻击者更改的所有文件,因此系统可能不稳定或不安全。

相关内容