终端命令删除多个文件-CPanel,共享主机感染病毒
Posted
技术标签:
【中文标题】终端命令删除多个文件-CPanel,共享主机感染病毒【英文标题】:Command in terminal to delete multiple files - CPanel, shared hosting infected with virus 【发布时间】:2021-11-20 20:42:33 【问题描述】:今天,Hosted gator 报告说我的共享主机上感染了 30K 文件。大约 25K 是同一个文件,多次。我通过终端一次性删除了它们:
find . -name "0x1337.php" -delete
参考:Delete large batch of files with same file name in different directories - cpanel/LAMP
一个这样的示例路径是:
/home1/..../public_html/.........com/wp-includes/js/tinymce/skins/lightgray/fonts/0x1337.php: SL-PHP-BACKDOOR-GENERIC-md5-cavg.UNOFFICIAL FOUND
还剩下大约 6K:
/home1/.../public_html/......com/blog/wp-content/plugins/related-posts-slider/styles/.htaccess: SL-HTACCESS-GENERIC-xo.UNOFFICIAL FOUND
如果我用这个来删除:
find . -name ".htaccess" -delete
→ 所有.htaccess
将被删除。
是否需要重构以便只删除受感染的文件?
这是否可以作为线索→-xo.UNOFFICIAL FOUND
?
【问题讨论】:
如果你有一个包含所有被感染文件名的文本文件,你可以cat filelist.txt | xargs rm
。请务必小心,该文件仅包含您实际要删除的文件名。
不,它有一个混合名称,Hostgator 创建了一个名为malware.txt 的文件,但它还有其他病毒名称,例如:0x1337.php
虽然它们已经被删除:find . -name "index1.php" -delete
你能把那个文件变成要删除的文件列表吗?可能是grep
和cut
的混合体(例如grep BACKDOOR malware.txt | cut -d ':' -f1
之类的东西可以找到所有带有SL-PHP-BACKDOOR-GENERIC-md5-cavg.UNOFFICIAL FOUND
的文件)?
是的,我能做到。目前,mwlare.txt 保存在家里,malaware.txt 有兄弟文件夹 public_html,在家里作为父母我创建了 newmawlare.txt = ibb.co/kgLjJXT 我是终端的新手,执行它的确切命令是什么?谢谢。
旁白:漏洞是否已经修复,允许首先上传/创建这些文件?
【参考方案1】:
为了澄清我在 cmets 中提到的步骤,我将在这里全部写出来。
我将在这里超级详细解释发生了什么。
我的假设是 Hostgator 为您提供了一个名为 malware.txt
的文件,其中包含如下所示的条目:
/path/to/file.php: SOME-MALWARE FOUND
/path/to/another/file.php: SOME-OTHER-MALWARE FOUND
/path/to/clean/file.php: CLEAN
换句话说:malware.txt
包含被标记为包含恶意软件的文件和被认为是干净且您想要保留的文件的混合。
第一步是把这个文件变成一个只包含文件路径的新文件。我们将为此使用grep
和cut
。
grep 'SOME-MALWARE' malware.txt | cut -d ':' -f1 > filelist.txt
grep 'SOME-MALWARE' malware.txt
将在 malware.txt
中的任何位置找到包含字符串 SOME-MALWARE
的所有行。这是故意的,因此您可以将列表分解为更小的集合,并一次针对单个恶意软件。
|
会将每一行发送到下一个命令
cut -d ':' -f1
将用分隔符 (:
) 分割每一行并仅保留给定字段(1
- 第一个字段,因此从行首到第一个 :
字符的所有内容)李>
> filelist.txt
会将结果发送至filelist.txt
。
现在,对于样本集,filelist.txt
应该包含以下内容:
/path/to/file.php
(以/path/to/another/file.php
为目标,将grep
改为寻找SOME-OTHER-MALWARE
)
下一步是删除这些文件。我们将为此使用cat
和rm
。由于我们不能使用|
直接通过管道连接到rm
,因此我们将使用xargs
命令来执行此操作。
cat filelist.txt | xargs -n1 -p rm
cat filelist.txt
会一一读取filelist.txt
中的所有行
|
会将每一行发送到下一个命令
xargs -n1 -p rm
会将每一行作为参数发送给rm
命令。
-n1
将确保它一次处理一行(如果没有这个,它会将行合并成一个 rm
命令以一次删除多个文件)
-p
会在实际执行rm
命令之前提示您确认是否要继续
-p
的原因是您可以验证这一切是否正常。验证后,您可以根据需要删除 -p
参数。
请注意,这假设您的所有文件名都是非常基本的。如果它们包含特殊字符或空格,则需要对其进行转义,否则会中断。
例如,如果您有一个名为 /path/to/some file.php
的文件,此代码将尝试删除文件 /path/to/some
和 file.php
。
如果您发现这里有问题,您可以像这样调整xargs
命令:
cat filelist.txt | xargs -I "" -n1 -p rm
-I ""
部分将输入参数(来自cat
的文件名)用双引号括起来,最后的 将确保
rm
使用包装参数而不是原始参数。
如果您多次运行此命令,您可能会看到很多“找不到文件”错误。这对于您上次运行它时已被删除的文件是正常的,因此无需担心。
我希望这可以澄清事情,如果有任何不清楚的地方请告诉我。
【讨论】:
谢谢,先生,这行→grep 'SOME-MALWARE' malware.txt | cut -d ':' -f1 > filelist.txt
不能以更通用的方式使用→grep malware.txt | cut -d ':' -f1 > filelist.txt' Anything after
:`应该从路径中删除并创建新文件。
如果你不想过滤文件列表而只想要所有文件,那么使用cat malware.txt | cut -d ':' -f1 > filelist.txt
以上是关于终端命令删除多个文件-CPanel,共享主机感染病毒的主要内容,如果未能解决你的问题,请参考以下文章
如何在 cpanel 中克隆 github 私有存储库(没有终端或 ssh 的共享主机)?
如何在 cPanel 共享主机上上传 laravel 项目?