公司最近的接的项目,需要对40000个webshell样本分析,由于时间紧,也没写东西,先拿D盾凑合着用一次吧,记使用过程中遇到的一个bug。
大家看这个图片
D盾报的等级才是“1”,我们看下file_put_contents
函数。12345678910file_put_contents(file,data,mode,context)file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。mode 可选。规定如何打开/写入文件。可能的值: FILE_USE_INCLUDE_PATH FILE_APPEND LOCK_EXcontext 可选。规定文件句柄的环境。 context 是一套可以修改流的行为的选项。若使用 null,则忽略。
很明显,这个文件的名字要看后端怎么处理,如果是接收POST
参数中的“K”,那就是自定义文件名了,就是不是,肯定也是会创建一个新的文件而文件内容就是<?php eval($_POST[k]);?>
。
这种很明显不是正常操作啊,但是D盾竟然报等级为“1”!我们使用的时候 有时候会经常忽略等级“3”以下的文件,这就很危险啊。
我猜测:可能是由于D盾的策略是只要在他的规则里出现,就显示出来出现的第一条的那个等级。这明显不符合常理啊!
最起码要做个全文检测,然后把最高等级的给显示出来,这样,用户再人工排查,就不会出现漏报的情况了。(绕的咱就暂且不说)