加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 02:10:04 所属栏目:大数据 来源:网络整理
导读:通用的命令执行漏洞防御方法通常是使用两个函数:EscapeShellCmd和EscapeShellArg,下面分别来分析这两个函数。 EscapeShellCmd()函数可以把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义,比如管道符(|)、分号(;)、重定向()、从文件

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

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

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

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

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

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

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

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

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

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

exec system popen passthru proc_open shell_exec

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读