命令執行漏洞
-
判斷命令注入漏洞的流程:
- 是否呼叫系統漏洞
- 函式或函式引數是否可控
- 是否拼接注入命令
-
命令連接符:(在windows和linux上通用)
-
command1 && command2&&表示先執行command1,且執行成功后才能執行command2,否則不執行
-
command1 & command2&表示先執行command1,無論結果如何,都再執行command2
-
command1 || command2||表示先執行command1,執行失敗后再執行command2
-
command1 | command2|表示將command1的輸出作為command2的輸入,只列印command2的結果
-
-
DVWA各等級的攻擊
-
低等級:
呼叫系統命令,但是對命令末尾不做檢查
輸入“命令連接符+想要執行的命令”的形式,獲取主機的控制權
-
中等級:
會將命令連接符“&&”和“||”替換成空
- 先補充完整網站要求的部分,再加上“& 要執行的命令”(也可以是“| 要執行的命令”)
- 利用黑名單規則(只過濾一遍),拼湊出命令連接符
-
高等級:
完善了黑名單的內容,使得利用黑名單,拼湊命令連接符這一操作變得困難
仍然存在黑名單無法過濾的規則,仍舊可以利用黑名單拼湊命令連接符
-
不可能等級:
增加了許多用于過濾的函式,使得黑名單的防護更加完善
例如:
- stripslashes(string):函式洗掉字串string中的反斜杠,回傳已剝離反斜杠的字串
- explode(separator,string,limit):函式將字串拆解成陣列,回傳字串對應的陣列
- is_numeric(string):檢測是否為字串或數字字串
簡單來說,就是將用戶的輸入限制在某一種不可能對服務器造成危害的格式,進而保證服務器的安全
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440530.html
標籤:其他
