DVWA Command Injection 练习总结
low:
首先查看源碼沒有對字符進(jìn)行任何過濾
target參數(shù)為將要ping的ip地址,比如在輸入框輸入127.0.0.1后,對于windows系統(tǒng),會發(fā)出ping 127.0.0.1操作。
這里可以引入命令行的幾種操作方式:
A && B: 先執(zhí)行A,如果成功,執(zhí)行B;
A || B :先執(zhí)行A,如果失敗,執(zhí)行B;
A | B:管道,先執(zhí)行A后,將A的結(jié)果作為B的輸入,打印的是B的結(jié)果;
A & B:先執(zhí)行A,然后不管成功與否,執(zhí)行B;
意味著我們可以通過輸入 【ip】+【連接字符】+ 【命令】 的格式進(jìn)行命令注入
medium
可以看到增加了黑名單
但是還有 || ,& 等命令可以使用
high
可以看到high完善了這個黑名單
但是仔細(xì)看還是能發(fā)現(xiàn) , | 符號的后面多加了一個空格
意味著我們?nèi)匀荒苁褂?| 符號加命令繼續(xù)命令注入
impossible
<?phpif( isset( $_POST[ 'Submit' ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$target = $_REQUEST[ 'ip' ];$target = stripslashes( $target );// Split the IP into 4 octects$octet = explode( ".", $target );// Check IF each octet is an integerif( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {// If all 4 octets are int's put the IP back together.$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];// 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 userecho "<pre>{$cmd}</pre>";}else {// Ops. Let the user name theres a mistakeecho '<pre>ERROR: You have entered an invalid IP.</pre>';} }// Generate Anti-CSRF token generateSessionToken();?>相關(guān)函數(shù)介紹
stripslashes(string) : 該函數(shù)會刪除字符串string中的反斜杠,返回已剝離反斜杠的字符串。
explode(separator,string,limit): 該函數(shù)把字符串打散為數(shù)組,返回字符串的數(shù)組。參數(shù)separator規(guī)定在哪里分割字符串,參數(shù)string是要分割的字符串,可選參數(shù)limit規(guī)定所返回的數(shù)組元素的數(shù)目。
is_numeric(string): 該檢測string是否為數(shù)字或數(shù)字字符串,如果是返回TRUE,否則返回FALSE。
可以看到,Impossible級別的代碼加入了Anti-CSRF token,同時對參數(shù)ip進(jìn)行了嚴(yán)格的限制,只有諸如“數(shù)字.數(shù)字.數(shù)字.數(shù)字”的輸入才會被接收執(zhí)行,因此不存在命令注入漏洞。
一波強(qiáng)行總結(jié)
不僅要學(xué)會攻擊,更要學(xué)會防御
對命令處理要盡可能過濾
盡可能完善黑名單,但是黑名單的方式總會有紕漏和繞夠
可以用函數(shù)限制所輸入的格式,例如限制為只有數(shù)字,或者本題中【數(shù)字】.【數(shù)字】.【數(shù)字】
總結(jié)
以上是生活随笔為你收集整理的DVWA Command Injection 练习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java webservice ip_通
- 下一篇: 平均风险是指什么