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

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

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

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

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

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

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

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

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

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

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


exec system popen passthru proc_open shell_exec

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

时间: 2024-11-05 18:47:16

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

DVWA系列之9 high级别命令执行漏洞

将DVWA Security切换到high级别,在Command Execution中查看网页源码. 这里首先也是用stripslashes函数对获取到的IP地址进行了处理,主要是为了去掉转义后添加的斜杠,原因之前已经解释过,由于在high级别下会自动启用PHP的magic_quotes_gpc魔术引号,对所有的传值数据自动用addslashes()函数转义,所以需要用stripslashes()函数去除. 接下来使用了explode函数,以"."为分隔符将$target变量中的IP地

DVWA系列之7 low级别命令执行漏洞

下面我们开始分析DVWA中的Command Execution命令执行漏洞. 首先仍是将DVWA Security设置为Low,选择Command Execution,这里在文本框中输入一个IP,点击Submmit提交便可以执行ping命令. 点击"View Source"查看网页源码. 可以看到,这里的数据是以post方式提交过来的,然后被赋值给了变量$target. 接下来有一个if语句,判断条件是"stristr(php_uname('s'), 'Windows NT'

NETGEAR 系列路由器命令执行漏洞简析

NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和修复,有些人忙于利用,而我们则在复现的过程中寻找漏洞的本质. 一.漏洞简介 1.漏洞简介 2016年12月7日,NETGEAR R7000路由器在exploit-db上被爆出存在远程命令执行漏洞,随着安全研究人员的不断深入,R8000和R6400这两款路由器也被证实有同样的问题. 2016年12月1

Samba 4.x.x全版本存在命令执行漏洞

Samba 4.0.0到4.1.10版本的nmbd(the NetBIOS name services daemon)被发现存在远程命令执行漏洞.CVE编号为CVE-2014-3560.目前官方已经发布最新的补丁. 下面是官方公布的漏洞概要: =========================================================== == Subject:     Remote code execution in nmbd == == CVE ID#:     CVE

struts2远程命令执行漏洞S2-045

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,漏洞评级为:高危. 漏洞详情:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 风险等级:高风险. 漏洞风险:黑客通过利用漏洞可以实现远程命令执行. 影响版本:Struts 2.3.5 - Struts 2.3.31, Struts 2

小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘原则[会比自动扫描器发现的漏洞要多,要全面] 1.每一个变量都进行尝试 2.所有头[如:cookie中的变量] 3.逐个变量删除 #####################################################################################

WordPress &lt;= 4.6 命令执行漏洞(PHPMailer)复现分析

漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(CMS)来使用.WordPress 使用 PHPMailer 组件向用户发送邮件.PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害. 漏洞编号 CVE-2016-10033 影响版本 WordPress

利用Vulnhub复现漏洞 - Couchdb 任意命令执行漏洞(CVE-2017-12636)

漏洞原理:Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库.应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序). 在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12

由一道工控路由器固件逆向题目看命令执行漏洞

前言 2019 工控安全比赛第一场的一道固件逆向的题目,好像也比较简单,好多人都做出来了.这里就分别从静态和动态调试分析复现一下这个命令执行的洞. 赛题说明 题目给的场景倒是挺真实的:路由器在处理 tddp 协议时出现了命令注入,导致了远程命令执行.就是后面做出来的这个答案的格式咋提交都不对... 题目给了一个压缩文件,解压出来时一个 bin 文件. 使用 binwalk -Me 直接解压,得到了与一个标准的 linux 风格的文件系统: 后来知道这个固件其实就是 tp_link SR20 路由