命令執行漏洞

 

什麼是命令執行漏洞

命令執行漏洞是指攻擊者能夠隨意執行系統命令。php

命令執行漏洞的原理

腳本語言有點事簡潔,方便,但也伴隨一些問題,好比運行速度慢,沒法接觸系統底層,若是咱們開發的應用(特別是企業級的一些應用)須要除去web的特殊功能時,就須要調用一些外部程序。在應用須要去調用外部程序去處理的狀況下,就會用到一些執行系統命令的函數。如php中的system,exec,shell_exec等,當用戶能夠控制命令執行的函數時,能夠惡意注入系統命令到正常命令中,形成命令執行web

命令執行漏洞的分類

代碼過濾不嚴或無過濾

系統漏洞形成的命令執行

調用第三方組件

PHP命令執行函數

exec(): 執行一個外部程序,該函數可執行系統命令,命令執行結果的最後一行內容。shell

passthru() :執行外部程序而且顯示原始輸出安全

system(): 執行外部程序,而且顯示輸出,成功則返回命令輸出的最後一行,失敗則返回FALSE框架

shell_exec(): 經過shell環境執行命令,而且將完整的輸出以字符串的方式返回命令執行的輸出,若是執行過程當中發生錯誤或者進程不產生輸出,則返回NULL.less

Java命令執行

structs2框架,Java的三大框架之一。函數

Linux特殊命令

1)         >重定向輸出符號。測試

2)         >>重定向輸出符號,但有追加的功能。spa

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

 

 

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

 

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

 

 

在這裏咱們用了管道符,就能夠輸出咱們想要的東西了

 

這就是一個簡單的命令執行漏洞的利用了。

相關文章
相關標籤/搜索