1、命令注入的概念:命令指的是操作系统的命令,注入表示通过WEB程序在服务器上拼接系统命令。
2、命令注入实战:
首先我们先打开DVWA,将安全级别调至为low级别,忘记了的可以参考之前的章节进行设置,然后我们去到Command Injection进行测试。
由图可知,这里让我们输入ip地址,我们输入127.0.0.1,咦,发现返回值与我们的系统ping命令返回很像,于是我们在cmd执行对比发现,的确是一样的。
这里有的人可能显示的是乱码,乱码解决办法:打开项目的目录:x://.../DVWA/dvwa/includes,打开dvwaPage.inc.php文件
那么接着来做第二步,判断可控字段,判断函数可控还是参数可控,我们可以发现,ping和空格是固定的,ip地址可控,完成确定可控字段。
最后一步,确认注入的字段,下图蓝色部分为注入命令:127.0.0.1&&net user
结果发现,&&后面字段也被执行,至此注入漏洞确定:
破解完low级别后,是不是很轻松呢?那么将级别调为中等吧,我们再次相同命令注入发现,页面报错为“未知错误 net”,那么windows下还有什么符号可以连接两条命令呢?其实一个&符号也可以连接。
输入127.0.0.1&net user后,我们命令注入成功,界面成功显示。
我们接着来破解high级别的,尝试前面的命令都不可以了。那么还有其他命令可以连接呢?管道符(|),我们试着来注入下:127.0.0.1 |net user
我们发现第一个命令未执行,但是这不影响我们注入,因为我们的目的就是执行第二个命令,ok,这也被成功注入了,那么我们接着改为impossible级别。
这个级别我们发现对ip的写法的限制:
四种符号区别如下:
下面是一些实战技巧,大家可以看下:
windows下:
linux下还支持单引号: