记D盾_Web查杀中的一个Bug

公司最近的接的项目,需要对40000个webshell样本分析,由于时间紧,也没写东西,先拿D盾凑合着用一次吧,记使用过程中遇到的一个bug。


大家看这个图片

D盾报的等级才是“1”,我们看下file_put_contents函数。

1
2
3
4
5
6
7
8
9
10
file_put_contents(file,data,mode,context)
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode 可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。

很明显,这个文件的名字要看后端怎么处理,如果是接收POST参数中的“K”,那就是自定义文件名了,就是不是,肯定也是会创建一个新的文件而文件内容就是<?php eval($_POST[k]);?>

这种很明显不是正常操作啊,但是D盾竟然报等级为“1”!我们使用的时候 有时候会经常忽略等级“3”以下的文件,这就很危险啊。

我猜测:可能是由于D盾的策略是只要在他的规则里出现,就显示出来出现的第一条的那个等级。这明显不符合常理啊!

最起码要做个全文检测,然后把最高等级的给显示出来,这样,用户再人工排查,就不会出现漏报的情况了。(绕的咱就暂且不说)

大爷,赏个铜板呗!