命令执行漏洞

命令执行漏洞

  1. 判断命令注入漏洞的流程:

    1. 是否调用系统漏洞
    2. 函数或函数参数是否可控
    3. 是否拼接注入命令
  2. 命令连接符:(在windows和linux上通用)

    1. command1 && command2
      

      &&表示先执行command1,且执行成功后才能执行command2,否则不执行

    2. command1 & command2
      

      &表示先执行command1,无论结果如何,都再执行command2

    3. command1 || command2
      

      ||表示先执行command1,执行失败后再执行command2

    4. command1 | command2
      

      |表示将command1的输出作为command2的输入,只打印command2的结果

  3. DVWA各等级的攻击

    1. 低等级:

      调用系统命令,但是对命令末尾不做检查

      输入“命令连接符+想要执行的命令”的形式,获取主机的控制权

    2. 中等级:

      会将命令连接符“&&”和“||”替换成空

      • 先补充完整网站要求的部分,再加上“& 要执行的命令”(也可以是“| 要执行的命令”)
      • 利用黑名单规则(只过滤一遍),拼凑出命令连接符
    3. 高等级:

      完善了黑名单的内容,使得利用黑名单,拼凑命令连接符这一操作变得困难

      仍然存在黑名单无法过滤的规则,仍旧可以利用黑名单拼凑命令连接符

    4. 不可能等级:

      增加了许多用于过滤的函数,使得黑名单的防护更加完善

      例如:

      • stripslashes(string):函数删除字符串string中的反斜杠,返回已剥离反斜杠的字符串
      • explode(separator,string,limit):函数将字符串拆解成数组,返回字符串对应的数组
      • is_numeric(string):检测是否为字符串或数字字符串

      简单来说,就是将用户的输入限制在某一种不可能对服务器造成危害的格式,进而保证服务器的安全

posted @ 2022-03-10 21:57  远志梦边  阅读(395)  评论(0编辑  收藏  举报