dvwa-命令執行
原理:web伺服器沒有對使用者提交的資料進行嚴格的過濾,造成呼叫作業系統的命令或者在作業系統惡意拼接拼接命令,以達到攻擊者的目的。
1.將dvwa的級別設定為low
1.2檢視源**,可以看到沒有對引數做任何防禦處理措施,直接進行執行
1.3.點選command injection,嘗試拼接命令(127.0.0.1&&dir),下圖可以看到成功執行dir的命令說明存在命令執行漏洞,然後嘗試拼接net user、ipcofig、netstat -ano等命令 #&& 第乙個命令執行成功才會執行第二個命令
1.4,隨便輸入然後用&&拼接命令,都不能執行,因為(&& 第乙個命令執行成功才會執行第二個命令)
1.5 嘗試用&拼接命令 #&是不管第乙個命令是否執行成功都會執行第二個命令
隨便輸入乙個字串然後用&拼接命令,下圖可以看到成功執行第二個命令,這是因為&是不管第乙個命令是否執行成功都會執行第二個命令
1.6嘗試用|拼接命令 #|(管道符)是只執行第二個命令
下圖可以看到只執行第二個命令,沒有執行第乙個命令
2. 將dvwa的級別設定為medium
2.1此時一些常規的拼接操作就不能實現命令執行漏洞了,檢視原始碼,可以發現對引數進行了簡單的處理:過濾&&和;
2.2用&&拼接命令,可以看到返回錯誤資訊,&&被過濾了
2.3從dvwa的medium級別原始碼可以看到,對引數進行了一些簡單的過濾,此時可以通過&或|或者根據過濾的字元進行組合等繞過防禦
2.3.1通過&拼接命令,繞過防禦 也可以通過在&前敲空格,繞過防禦
2.3.2通過|拼接命令,繞過防禦
2.3.3通過防禦過濾的字元進行組合,繞過防禦
127.0.0.1&&&dir
127.0.0.1&;&ipconfig
3.將dvwa的級別設定為high
3.1檢視源**,可以看到首先對引數進行trim去除兩邊的空格,然後增加了過濾的黑名單
3.2觀察源**可以看到過濾「|」時,是過濾」| 」,」|」後有個空格,此時可以通過簡單的127.0.0.1|dir繞過
4. 將dvwa的級別設定為impossible
4.1檢視源**,可以看到先對引數使用stripslashes函式過濾掉反斜槓,然後使用explode函式將引數打散為陣列,然後用is_numeric函式對陣列中的每個引數進行判斷,符合條件再把陣列的引數進行拼接。對引數進行了嚴格的限制,因此不可能存在命令執行漏洞
過濾敏感字元
1.首先再dvwa的medium級別原始碼檔案中,新增過濾條件(過濾whoami,net user等敏感字元),然後測試
2.測試拼接whoami、net user命令,沒有得到返回結果,說明字元被過濾
3.嘗試繞過敏感字元過濾
解決亂碼問題:
在dvwa-master\dvwa\includes目錄下找到dvwapage.inc.php檔案中所有的」charset=utf-8」,修改」charset=gb2312」
DVWA 命令執行審計
使用post方式接受表單,isset 判斷是否傳入,將傳入的 ip賦值給 target 使用php name獲取主機資訊,用 stristr 判斷是否是 win系統 通過if進行判斷是否為空後,使用shell exec 執行並將所有輸出流作為字串返回 此執行過程無任何過濾。將ip的值賦給變數targ...
DVWA命令執行漏洞詳解
0x01 級別low 1.原始碼 command execution source if isset post submit else 2.說明 stristr函式 stristr string,search,before search 引數 描述string 必需。規定被搜尋的字串。search ...
2 DVWA親測命令執行漏洞
先看low級 提示讓我們輸入乙個ip位址來實現ping,猜測會是在系統終端中實現的,我們正常輸入127.0.0.那我們就可以利用這個使用其他cmd命令 我們輸入127.0.0.1 net user 我們順便看一下源 if isset post submit else feedback for the...