命令注入漏洞medium级别
本帖最后由 bailancheng 于 2019-10-16 22:53 编辑命令注入漏洞medium级别
medium级别的防御:
$substitutions = array('&&' => '' , ';' => '', );
定义一个数组并赋值给变量$substitutions,数组中包括2个键:&&和;,它们对应的值都是NULL。
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
用str_replace函数对$target变量中的字符进行替换,替换的方法是将array_keys( $substitutions )替换成$substitutions,也就是将&&和;都替换成空值。
通过定义黑名单,对敏感字符进行过滤。
黑名单不完整,漏洞仍然存在。
high级别命令注入漏洞:
$octet = explode(".", $target);
通过explode函数以“.”为分隔符将$target变量中的IP地址进行分割,分割后会得到一个数组,并赋值给变量$octet。
if ((is_numeric($octet)) && (is_numeric($octet)) && (is_numeric($octet)) && (is_numeric($octet)) && (sizeof($octet) == 4))
用is_numeric函数依次判断$octet数组中的每个值是否是数字型数据,并且还使用sizeof函数判断$octet数组中元素的个数是否是4个。
常见防范措施:
对传入的命令进行严格过滤;
在后台对应用的权限进行控制(比如可以给 PHP 建立单独的账号,控制 PHP 的启动权限)。
漏洞防御:
EscapeShellCmd()函数
把字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义,如管道符(|)、分号(;)、重定向(>)、从文件读入(<)等
页:
[1]