Command Injection

 Command Injection

"Command Injection"(命令注入),其目标是通过一个应用程序在主机操作系统上执行任意命令。当一个应用程序将用户提供的数据(如表单、cookies、HTTP头等)传递给系统shell时,就可能发生命令注入攻击。在这种攻击中,攻击者提供的操作系统命令通常会以该应用程序的权限执行。命令注入攻击主要是由于输入验证不足造成的。

Low

        这里提示我们输入IP地址,我们输入本机的环回地址,如下图所显示的结果和在系统终端中使用ping命令的结果一致。

Command Injection_第1张图片

        下面看一下源代码 ,这段代码存在一个问题,直接将用户提供的输入(即$target)传递给shell_exec函数。如果用户提供的输入包含恶意命令,那么这些命令将被执行。exec是一个在Unix和Linux中常用的系统函数,用于在同一进程中运行一个命令。

Command Injection_第2张图片

       

        因为并没有对用户的输入进行验证和清理,所以 在系统函数exec的ping 操作 的同时,我们可以利用该系统命令,在执行ping的同时执行其他命令

       下面先介绍window中几个常见的命令连接符,

                ;        分号操作符,可以运行几个命令,按顺序执行

                &&    与操作符 ,如果第一个命令执行成功,才会执行第二个命令

                ||       或操作符 ,第一个命令执行失败,执行第二个命令

       

还是因为未对用户的输入进行任何限制和验证,所以上面的连接符都可一试,

如下图,使用&&进行注入成功

Command Injection_第3张图片

        

Medium

        先看源码,相较于low,medium会移除在黑名单中的字符'&&' 和 ';'   故,使用这两个字符以外的连接符即可。

Command Injection_第4张图片

         使用  &  进行注入成功

Command Injection_第5张图片

High

        high相较于medium没有什么新意,只是在黑名单中加入了更多的字符包含了’&', ‘;’, '| ', ‘-’, ‘$’, ‘(’, ‘)’, ‘`’, ‘||’,'|  '细看第三个 | 后面有空格,这点可以利用

Command Injection_第6张图片

        如下图,注入成功

Command Injection_第7张图片

你可能感兴趣的:(DVWA学习篇,php)