dvwa command injection(命令注入)

0x1

命令执行漏洞的产生原因一般就是将用户输入未经过滤或者过滤不严就直接当作系统命令进行执行,我们可以通过批处理中的一些技巧来一次执行多条命令,这样就可以执行任意命令。在命令执行中,常用的命令连接符号有四个:&& & || | ;
&&:前一个指令执行成功,后面的指令才继续执行,就像进行与操作一样
||:前一个命令执行失败,后面的才继续执行,类似于或操作
&:直接连接多个命令
|:管道符,将前一个命令的输出作为下一个命令的输入
;:直接连接多个命令
我们接下来就用dvwa的command injection来演示该漏洞的危害

low

可以看到此处让我们输入ip地址,后台执行的应该就是ping命令,现在我用【&&】符号来连接两个命令,&&符号必须在前面的命令执行成功后才能执行下一条,我举个例子:
&&连接ping与whoami,因为前面的ping执行成功了,所以后面的whoami也成功了
dvwa command injection(命令注入)_第1张图片
下面我ping一个错误的ip地址试一下:
dvwa command injection(命令注入)_第2张图片
woami命令没有执行。言归正传,我们来看一下在这一题中,我们的命令能否执行成功:
dvwa command injection(命令注入)_第3张图片

medium

还是用&&连接试一下,错误:
dvwa command injection(命令注入)_第4张图片
我推断可能是&&被替换为空了,那我们就试一下其它的连接方法呗。
输入:123||whoami
执行成功:
dvwa command injection(命令注入)_第5张图片
我们来看一下源码:
dvwa command injection(命令注入)_第6张图片

high

这题可以用管道符绕过,我们直接来看一下源码:
dvwa command injection(命令注入)_第7张图片
我觉得这一题有点…
大家可能会很疑惑,命名这个黑名单中把该过滤的东西都过滤掉了,为什么还是可以用管道符进行绕过呢?答案就在我箭头所指处,考眼力的时候到了。
####impossible
再来看一下impossible的源码,看看别人是如何防范的:
dvwa command injection(命令注入)_第8张图片
先将ip地址用点分为一个数组,然后判断每一位是否是数字,如果是数字,然后再把他们拼起来。针对特定命令有特定的防范措施,这样才能最大限度的降低漏洞产生的可能性

你可能感兴趣的:(Web安全,dvwa教程)