我的服务器被黑客入侵了,我现在正在尝试找到所有“奇怪”的文件。我正在运行:
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 应用程序,因为您不太可能找到攻击者更改的所有文件,因此系统可能不稳定或不安全。