DVWA-命令注入(Command Injection)模块 包含代码审计

Low等级

查看代码如图1,发现Low等级的源代码中没有对输入的值进行过滤,所以存在命令注入漏洞。

img

图1

输入127.0.0.1,运行结果如图1.1所示

img

图1.1

可以发现与windows主机中的cmd命令窗口执行ping 127.0.0.1后一致Windows执行的结果如图1.2,因此可以发现此页面是执行ping命令。

img

图1.2

在DVWA中输入127.0.0.1 && ipconfig,并且点击运行,具体运行结果如图。

img

图1.3(127.0.0.1 && ipconfig)

可以发现该页面原本的业务是执行ping命令,但是通过&&符号连接ipconfig时,发现在执行原本的ping命令时还执行了ipconfig命令,因此该页面存在命令注入的漏洞。使用&&、&、||以及|符号来连接命令,具体的运行如图所示。

img

图1.4(127.0.0.1 & ipconfig)

img

图1.5(127.0.0.1 || ipconfig)

img

图1.5(127.0.0.1 | ipconfig)

结果多次的试验发现:

①&&符号前面的命令为错误的时候,该命令直接报错,不运行后面的代码,直接报错;而&&符号前面命令正确时,先执行完前面的命令,然后再检查并执行后面的命令,如果后面的命令为错误的时候,就只执行完&&前面的语句,而把后面的命令直接报错。

关于&&符号的详细的证明过程如图1.6-1.8所示:

img

图1.6(&&符号前面为正确,而后面的符号为错误)

img

图1.7(&&符号前面为错误,而后面的符号为正确)

img

图1.8(&&符号前面为正确,而后面的符号为正确)

②&符号不管前面的命令是否错误,后面的命令还会去检查并执行。

关于&&符号的详细的证明过程如图1.9-1.11所示:

img

图1.9(&符号前面为错误,&符号后面为正确)

img

图1.10(&符号前面为正确,&符号后面为错误)

img

图1.11(&符号前后命令都为正确)

③||符号在前一个命令为正确的时候,就只执行前面的命令;如果前面的命令为错误的时候,就检查并运行后面的命令;如果两个命令都是错误的,就无法运行。

关于||符号的详细信息的证明过程如图1.12-1.14所示:

img

图1.12(两个命令都是正确)

img

图1.13(前一个命令是错误的,后一个的命令是正确的)

img

图1.14(两个命令都是错误)

Medium等级

查看代码如图2,发现虽然对输入的值有一些过滤,但是发现只是对‘&&’和‘;’进行过滤而已,我们可以采用‘&’、‘||’和‘|’来进行命令的注入。

img

图2

这里就使用‘&’符号进行注入攻击,具体运行结果如图2.1所示,具体的运行分析因为在Low等级中已经细说了,这里就不再重复了。

img

图2.1(127.0.0.1 & ipconfig)

High等级

查看代码如图2.2,发现虽然过滤的值变多了,但是并没有对‘|’进行过滤,而是对‘| ’进行过滤,请注意,这里的‘| ’是多了个空格的,即对‘|’不带空格的并没有过滤,因此还是存在命令注入漏洞。

img

图2.2

因此这里使用‘|’进行命令注入,运行图如图2.3所示

img

图2.3(127.0.0.1 |ipconfig)

Impossible等级的修复方法

查看代码如图3,发现对参数的过滤变得更加严格,他是先将检查token的值,防止CSRF攻击,然后有对输入的参数根据’.’进行拆分,如果拆分发现你输入的不是数字或者’.’输入的注入命令就直接被“杀掉了”,而且还考虑到输入的参数形式。该Impossible等级的防范对命令注入十分有效,就我目前对命令注入的知识来说,不存在漏洞。

img

如图3

4.额外部分

查看当前有那些用户(net user),运行图如图4所示:

img

图4

给win 7 添加一个用户(127.0.0.1 && net user xxx622 password /add),运行图如图4.1所示:

img

图4.1

查看是否添加成功(127.0.0.1 && net user),运行如图4.2所示

img

图4.2

查看是不是普通的用户,如图4.3所示

img

图4.3

将普通用户提权为系统管理员,如图4.4所示

img

图4.4

查看是否提权成功,如图4.5所示

img

图4.5

开启3389端口前需要看是否已经开启3389端口,具体运行图4.6如所示

img

图4.6

发现3389已经开启了,所以需要先关闭,运行如图4.7所示

img

图4.7

查看3389端口是否关闭成功,运行如图4.8所示

img

图4.8

开启3389端口,运行如图4.9所示:

img

图4.9

查看是否开启正常,运行如图4.10所示

img

图4.10

使用kail里面的rdesktop程序开启远程桌面,具体步骤如图4.11所示

img

图4.11(在shell命令框中输入rdesktop 靶机ip地址之后的运行图)

等待上图代码运行成功之后会自动跳转出如图4.12所示的靶机登录窗口

img

图4.12(登陆页面窗口)

输入正确的账号密码后,即可登录成功,具体运行如图4.13-4.14所示

img

图4.13(登录图)

img

图4.14(登录成功之后的图)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值