Command Injection宙拉,即命令注入例朱,是指通過提交惡意構造的參數破壞命令語句結構,從而達到執(zhí)行惡意命令的目的只锭。PHP命令注入攻擊漏洞是PHP應用程序中常見的腳本漏洞之一著恩,國內著名的Web應用程序Discuz!、DedeCMS等都曾經存在過該類型漏洞蜻展。
多命令順序執(zhí)行連接符喉誊,&&,||铺呵,;裹驰,|隧熙,介紹
- cmd1 && cmd2? cmd1執(zhí)行成功再執(zhí)行cmd2
- cmd1 ; cmd2 ? ?? cmd1執(zhí)行成功與否都執(zhí)行cmd2
- cmd1 || cmd2? ?? cmd1執(zhí)行失敗執(zhí)行cmd2
- cmd1 | cmd2 ? ?? cmd1執(zhí)行成功與否都執(zhí)行cmd2
1 low level
1.1 利用拼接字符 "&&" 查看/etc/passwd
1.2 源碼分析
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
查看源碼片挂,獲取提交的內容,判斷系統(tǒng)類型并執(zhí)行贞盯,對內容并沒有進行任何過濾音念。
2 medium level
2.1.利用拼接字符 "||" 或 "&;&" 依然能注入成功
2.2 源碼分析
// Set blacklist
$substitutions = array(
'&&' => '',
';' => '',
);
// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
}
查看源碼,在low等級的基礎上躏敢,對闷愤,'&&' ,';' 進行了過濾件余,但是過濾條件不完整讥脐,依然能注入成功。
3 high level
3.1.利用拼接字符 "|"依然能注入成功
3.2 源碼分析
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
查看源碼啼器,在medium 等級的基礎上旬渠,對過濾條件進行了擴充,但是過濾條件還是不完整端壳,依然能注入成功告丢。
4.impossible level
沒有辦法,選擇放棄