温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

DVWA系列之10 命令执行漏洞的挖掘与防御

发布时间:2020-07-18 19:01:40 来源:网络 阅读:2184 作者:yttitan 栏目:安全技术

通用的命令执行漏洞防御方法通常是使用两个函数:EscapeShellCmd和EscapeShellArg,下面分别来分析这两个函数。

EscapeShellCmd()函数可以把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义,比如管道符(|)、分号(;)、重定向(>)、从文件读入(<)等。

下面我们来测试一下这个函数是否管用,以low级别的命令执行漏洞为例,对应的网页文件为D:\AppServ\www\dvwa\vulnerabilities\exec\source\low.php,对文件进行如下图所示的修改,在ping命令之前加上EscapeShellCmd函数进行过滤。

DVWA系列之10 命令执行漏洞的挖掘与防御

将修改保存之后,转换到low级别测试,发现我们之前的那些命令都不管用了。

接下来再分析一下EscapeShellArg()函数,这个函数是专门用来处理命令的参数的,它在给定的字符串两边加上单引号,并把字符串中的单引号转义,这样这个字符串就可以安全地作为命令的参数。

我们同样对网页进行修改,注意,EscapeShellArg()函数是专门对命令参数进行处理的。

DVWA系列之10 命令执行漏洞的挖掘与防御

保存修改之后,返回去进行测试,发现之前的命令同样也不管用了。

事实证明,这两个函数还是很管用的。综合比较一下,EscapeShellCmd函数是基于黑名单的,而黑名单都不是完全可靠的,***总有方法绕过,所以从这个意义上来说EscapeShellArg相对要更安全一些。

下面再分析一下如何挖掘命令执行漏洞,方法其实很简单,就是从代码中查找那些可以执行系统命令的函数。如果这些函数中所执行的命令参数是由用户输入的,而且没有经过任何的过滤,那么便有可能存在漏洞。

PHP中可以调用系统命令的函数主要包括:

exec system popen passthru proc_open shell_exec

在进行代码搜索时,仍然可以借助于之前介绍过的闪电文件搜索软件。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI