DVWA1.10之命令注入


命令注入简介

命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的


LOW级别

服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞

正常执行

1.png

  1. 使用&同时执行多条命令

    1
    127.0.0.1 & pwd

    2.png

  2. 使用|(管道符)同时执行多条命令

    1
    127.0.0.1 | cat /etc/passwd

    3.png

  3. 使用&&(与)同样可以执行多条命令

    1
    127.0.0.1 && pwd

    7.png

  4. 使用||(或)同样可以执行多条命令

    1
    1 || cat /etc/passwd

    9.png

  5. 使用;同样可以执行多条命令

    1
    127.0.0.1 ; pwd

    8.png

  6. 使用`、$()在有些情况下也可执行多条指令

&&&的区别:

  1. Command 1&Command 2

    先执行Command 1,不管是否成功,都会执行Command 2

  2. Command 1&&Command 2

    先执行Command 1,执行成功后执行Command 2,否则不执行Command 2

|||的区别:

  1. Command 1|Command 2

    管道符,Command 2会以Command 1的输出结果为输入进行执行

  2. Command 1||Command 2

    先执行Command 1失败,才会执行Command 2


Medium级别

服务器端对ip参数做了一定过滤,即把&&;删除,本质上采用的是黑名单机制,因此依旧存在安全问题

  1. 使用&绕过过滤

    1
    127.0.0.1 & cat /etc/passwd

    4.png

  2. 使用&;&绕过过滤

    1
    127.0.0.1 &;& pwd

    5.png


High级别

High级别的代码进一步完善了黑名单,过滤了&;|-$()||、` 但由于黑名单机制的局限性,我们依然可以绕过

黑名单看似过滤了所有的非法字符,但仔细观察到是把|(注意这里|后有一个空格)替换为空字符,于是 |(注意这里|前有一个空格)成了“漏网之鱼”

1
127.0.0.1 |cat /etc/passwd

6.png


Impossible级别

Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞


命令注入防御

  1. 如特殊需要,尽量不要使用系统命令

  2. 对敏感字符进行白名单过滤

  3. 参数值使用引号包括

---------------The End---------------
0%