Linux

像垃圾一樣的 Grep 消息 - 沒有這樣的文件或目錄

  • June 21, 2020

我的伺服器被黑了,我現在正試圖找到所有“奇怪”的文件。我在跑步:

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

這個命令對我查找和刪除惡意程式碼有很大幫助。

然而,這也給了我很多錯誤,它涵蓋了我所有的外殼,我無法輕易找到找到的 grepped 文件。這是我看到的一個例子:

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 查詢中收到此類“沒有此類文件或目錄”消息?

就像它在找到帶有空格的文件名時中斷一樣。

謝謝

無需像這樣在“xargs”中使用“find”管道。

我會做什麼(-r遞歸):

grep -rl "Mini Shell" .

錯誤是由於您有一些文件名中有空格的文件

如果要處理每個文件,即使文件名中有特殊字元,我建議(NULL byte用作文件分隔符):

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

find僅當要檢查的文件具有特定的文件副檔名時才有意義,例如.php. 然後你可以使用-exec參數find

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

這將使查找修改後的文件比 grepping 所有文件快得多。

-name='*'單獨沒有意義。-type f將使執行find更快一些,因為將省略目錄。

一般建議

如果您的伺服器被黑客入侵,您首先必須找到攻擊向量,否則您將再次被黑客入侵。此外,最好從頭開始設置它並從備份中恢復您的 Web 應用程序,因為您不太可能找到攻擊者更改的所有文件,因此可能有一個不穩定或不安全的系統。

引用自:https://serverfault.com/questions/1022370