将DVWA Security切换到high级别,在Command Execution中查看网页源码。
这里首先也是用stripslashes函数对获取到的IP地址进行了处理,主要是为了去掉转义后添加的斜杠,原因之前已经解释过,由于在high级别下会自动启用PHP的magic_quotes_gpc魔术引号,对所有的传值数据自动用addslashes()函数转义,所以需要用stripslashes()函数去除。
接下来使用了explode函数,以“.”为分隔符将$target变量中的IP地址进行分割,分割后会得到一个数组,并赋值给变量$octet。
接下来使用if语句,用is_numeric函数依次判断$octet数组中的每个值是否是数字型数据,并且还使用sizeof函数判断$octet数组中元素的个数是否是4个。这个判断条件就非常苛刻了,基本可以保证用户输入的必须是正确的IP地址,之前所使用的所有命令执行漏洞都无法生效了。
但是这里的问题也同样明显,这种过滤方法只能针对命令参数是IP地址的情况才起作用,如果我们希望去执行的是其它的系统命令,这种方法就不起作用了。
那么是否有通用的命令执行漏洞防御方法呢?方法当然有,在下篇博客将对这部分内容进行分析。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1721365