webshell为什么无法通过挂马检测 浅谈其原因及解决方法

作为个人站长,一个特别头疼的问题就是网站会在不知不觉中被黑,被挂。在上一篇文章中,作者介绍了使用脚本分析访问日志和密封恶意攻击的方法。那么,如何处理已经被挂马插入Webshe

本文最后更新时间:  2023-04-23 08:34:25

作为个人站长,一个特别头疼的问题就是网站会在不知不觉中被黑,被挂。在上一篇文章中,作者介绍了使用脚本分析访问日志和密封恶意攻击的方法。

那么,如何处理已经被挂马插入Webshell的网站呢?在这里,笔者给大家介绍一种相对简单,操作性强的方法,这就是今天文章的内容。

根据Webshell中的一些特征字段,可以搜索出可能含有木马的文件,特征字段可以根据需要进行添加或删除。

perl-lne ‘打印“$ ARGV $ _ & # 8221if/(PHP spy | c99sh | milw 0 RM | eval(guner press | eval(base64 _ decoolcode | spider _ BC)/‘`查找类型f-name “*.php & # 8221`

这行代码的脚本解释:这行代码结合了find和Perl杀死Webshell。第一,通过‘寻找型f-name “*.php & # 8221`列出这个目录和子目录中的所有php文件,注意`反斜杠(建立在tab之上)。find命令参数-type f表示该类型是一个文件,-name “*.php & # 8221`表示文件名以php结尾(当然也可以是其他类型和其他特性)。

find的具体用法可以用find -h解释,也可以用搜索引擎搜索它的用法。

然后,所有搜索到的php文件都被传递给一个perl单行。Perl逐行对每个文件进行常规搜索,搜索phpspy、c99sh、milw0rm、eval (gunerpress、eval (base64_decoolcode、spider_bc等关键字。(注意,在常规匹配中”(“For关键字需要在前面加一个反斜杠进行转义)。最后输出匹配的文件名和行内容。

注意,输出$ARGV表示文件列表中每个文件的文件名,$ _表示当前列表中的当前项,这里表示匹配行的内容。

上面的脚本输出了每一个匹配行,可以用来对每一项进行详细的检查。实际上,您只需要输出有问题的文件名,这其实很简单。只需对上面的脚本稍加修改。

佩尔-讷‘{ $ files { $ ARGV } ++ if/(PHP spy | c99sh | milw0rm | eval(guner press | eval(base64 _ decoolcode | spider _ BC)/} END { print for keys % files } ‘`查找类型f-name “*.php & # 8221`

上面的脚本在脚本1的基础上使用了一个哈希变量%files作为键。如果有匹配,就+1。最后END模块会输出%files的key,也就是有匹配的文件名。当然,您也可以首先输出所有文件名,然后将它们重定向到一个uniq。

perl-lne ‘打印“$ ARGV & # 8221if/(PHP spy | c99sh | milw 0 RM | eval(guner press | eval(base64 _ decoolcode | spider _ BC)/‘`查找类型f-name “*.php & # 8221` |唯一的

需要注意的是,上面查出的文件可能是正常的php文件,需要根据实际情况进行处理(批量替换),不要误杀(处理前请备份)。

使用grep方法,见下文。

grep-r–include = *。php '[^a-z]eval($_POST'。& gt/tmp/eval.txt

grep-r–include = *。php 'file_put_contents(。*$_POST[。*]);'。& gt/tmp/file _ put _内容. txt

其他注意事项:

快速查询Web文件的修改时间,可以使用文件权限:

查找最近一天修改过的PHP文件。

查找-类型f -mtime -1 -name *。服务器端编程语言(Professional Hypertext Preprocessor的缩写)

允许修改网站

查找-类型f -name *。PHP-exec chmod 444 { };

找到。/-类型d-exec chmod 555 { };

做最后一次知识延伸:

1.linux下的批量搜索和替换。

找到。-键入f -name "*。html“| xargs grep ' your string '

2.找到并用perl一行程序替换它

“Find-name”用于查找“| xargs perl-pi-e的|替换字符串|替换字符串|g”的文件名

下面的例子是将“<>http://com-indexl . com/ask/admin . html width = 0 height = 0 >& lt/iframe >替换为“(空)”。

找到。-键入f -name "*。shtml"|xargs perl -pi -e的| & ltiframe src = http://com-indexl . com/ask/admin . html width = 0 height = 0 >& lt/iframe >| |g '

perl -pi -e

将-e选项添加到Perl命令中,后跟一行代码,它将像普通的Perl脚本一样运行代码。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。