Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。
Command Execution命令执行漏洞的产生原因一般就是将用户输入未经过滤或者过滤不严就直接当作系统命令进行执行,通过批处理技巧来一次执行多条命令,这样就可以执行任意命令。
在命令执行中,常用的连接符号有四个:&& & || | ;
&&:先执行前一个指令,执行成功后,继续执行后面的指令
||:先执行前一个指令,执行失败后,再执行后一个指令
&:用于直接连接后面的多条指令
|:管道符,将前面的命令执行结果,作为后一条命令的参数输入
;:用于连接多个命令
1、首先打开dvwa的command Execution
2、在view source下观察三种不同安全级别的代码,可以发现如下信息。
Low Command Execution Source
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if (stristr(php_uname('s'), 'Windows NT')) {
$cmd = shell_exec( 'ping ' . $target );
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target );
echo '<pre>'.$cmd.'</pre>';
}