Linux
像垃圾一樣的 Grep 消息 - 沒有這樣的文件或目錄
我的伺服器被黑了,我現在正試圖找到所有“奇怪”的文件。我在跑步:
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 應用程序,因為您不太可能找到攻擊者更改的所有文件,因此可能有一個不穩定或不安全的系統。