链接如下: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)。
放一个文件夹吧,误报也不少
三、简要分析
不懂词法分析、语法分析,大致瞄一眼扫描的核心: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”字符串这些不会记录的,不过看到这里基本上可以断定这个东西的实用价值基本很小了。
四、总结
作者开源的精神还是值得肯定,期待作者的后续发力
如对本文有疑问, 点击进行留言回复!!
网友评论