什么是命令執行漏洞
命令執行漏洞是指攻擊者可以隨意執行系統命令,
命令執行漏洞的原理
腳本語言有點事簡潔,方便,但也伴隨一些問題,比如運行速度慢,無法接觸系統底層,如果我們開發的應用(特別是企業級的一些應用)需要除去web的特殊功能時,就需要呼叫一些外部程式,在應用需要去呼叫外部程式去處理的情況下,就會用到一些執行系統命令的函式,如php中的system,exec,shell_exec等,當用戶可以控制命令執行的函式時,可以惡意注入系統命令到正常命令中,造成命令執行
命令執行漏洞的分類
代碼過濾不嚴或無過濾
系統漏洞造成的命令執行
呼叫第三方組件
PHP命令執行函式
exec(): 執行一個外部程式,該函式可執行系統命令,命令執行結果的最后一行內容,
passthru() :執行外部程式并且顯示原始輸出
system(): 執行外部程式,并且顯示輸出,成功則回傳命令輸出的最后一行,失敗則回傳FALSE
shell_exec(): 通過shell環境執行命令,并且將完整的輸出以字串的方式回傳命令執行的輸出,如果執行程序中發生錯誤或者行程不產生輸出,則回傳NULL.
Java命令執行
structs2框架,Java的三大框架之一,
Linux特殊命令
1) >重定向輸出符號,
2) >>重定向輸出符號,但有追加的功能,
3) 2>錯誤重定向輸出符號,覆寫原檔案內容,
4) 2>>錯誤重定向輸出符號,有檔案內容追加的功能,重定向:I/O,Linux Shell 環境中支持輸入輸出重定向,用符號<和>來表示,0、1和2分別表示標準輸入、標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2>a.txt 表示將錯誤資訊輸出到檔案a.txt中,
5) *匹配任意字符,
6) ?匹配任意一個字符,
7) |管道符號,解釋:command1|command2,將command1的輸出作為command2的輸入,比如ls -al|less,表示將ls -al的輸出作為less的輸入,即將la -al的輸出分頁,管道命令只接受標準輸入(standoutput),
8) &后臺運行符,
9) && 邏輯與符號,用法:命令1 && 命令2 表示如果命令1執行成功,繼續執行命令2,
10) ||邏輯或符號,用法:命令1 | | 命令2 表示如果命令1執行成功,不執行命令2;但如果命令1執行失敗才執行命令2,
實驗測驗
實驗環境DVWA, Linux作業系統
安全級別LOW

接下來我們試試能不能直接執行其它

既然不能直接執行,那我們換個方式試試吧

在這里我們用了管道符,就可以輸出我們想要的東西了
這就是一個簡單的命令執行漏洞的利用了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55211.html
標籤:其他
上一篇:kali下安裝mobsf
下一篇:MSF命令大全詳解
