常見的Web漏洞——命令注入

目錄

命令注入簡介

命令注入原理

漏洞利用

漏洞防範

 總結


命令注入簡介

命令注入漏洞和SQL注入、XSS漏洞很相似,也是由於開發人員考慮不周造成的,在使用web應用程序執行系統命令的時候對用戶輸入的字符未進行過濾或過濾不嚴格導致的,常發生在具有執行系統命令的web應用中,如內容管理系統(CMS)等。

命令注入原理

本文以DVWA中的Command Injection爲例,查看Command Injection的源代碼,如圖:

後臺代碼並未對用戶輸入的參數ip的值進行過濾就直接與ping命令進行拼接並執行 ,因此我們可以使用常見的命令拼接字符對命令進行拼接,如使用“&”,“|”,“&&”,“||”等,linux系統下還可以使用“;”,“``”。

  • 對於shell1 & shell2,既執行shell1的命令也執行shell2的命令;
  • 對於shell1 && shell2,在shell1執行成功的情況下執行shell2,shell1執行失敗就不會執行shell2,和邏輯與一樣;
  • 對於shell1 | shell2,“|”爲管道符,它將shell1執行的結果作爲shell2的輸入,因此無論shell1執行結果如何,都會執行shell2;
  • 對於shell1 || shell2,在shell1執行失敗的情況下執行shell2,shell1執行成功則不會執行shell2,和邏輯或一樣;
  • 對於shell1;shell2,在Linux系統下會將shell1和shell2都執行;
  • 對於shell1 `shell2`,shell2的執行結果會在shell1的報錯信息中顯示。

漏洞利用

本文中DVWA安裝在windows7系統下,輸入1 | dir,提交之後如圖:

然後輸入127.0.0.1 && net user,提交後如圖:

同理可使用“&”和“||”進行命令注入漏洞的利用。如果該web應用具有較高的權限,可以利用該漏洞建立新賬戶,使用1 | whoami查看系統權限:

發現是SYSTEM權限(系統的最高權限),然後使用1 | net user /add hacker 123456創建一個名爲hacker的賬戶,密碼爲123456,執行完之後使用1 | net user查看,如圖:

 然後可以使用1 | net localgroup Administrators /add hacker,將hacker賬戶添加到管理員用戶組。然後可以使用1 | net start termservice開啓遠程桌面服務,如圖:

然後就可以使用hacker賬戶遠程登錄系統了,如圖:

 設置安全等級爲Medium,查看源代碼,如圖:

後臺代碼將用戶輸入的字符串中的“&&”和“;”替換爲了空字符,但是我們仍然可以使用“&”,“|”,“||”進行注入命令,如使用1 | whoami,如圖:

 設置安全等級爲High,查看源代碼如圖:

 後臺代碼將“&”,“;”,“| ”(符號後有空格),“_”,“$”,“(”,“)”,“`”,“||”替換爲空字符,但未將“|”替換爲空字符,因此可以使用“|”進行命令注入,使用1 |dir,如圖:

查看安全等級爲Impossible級別的源代碼,如圖:

後臺代碼使用stripslashes函數刪除用戶輸入的字符串中的反斜槓,然後使用explode函數將字符串按“.”分割爲數組,接着使用is_numeric函數判斷數組是否爲數字。

漏洞防範

命令注入漏洞是由於考慮不周,過濾不嚴格導致的,因此只要過濾的夠嚴格就可以防範該漏洞,此外還可以設置命令選項,只允許執行幾個常用的命令,除此之外的命令都不允許執行,也可以使用安全工具進行防範,如使用WAF,IDS,IPS等進行防禦。

 總結

近年來命令注入漏洞出現的較少,因此本文僅以DVWA爲例講解了命令注入漏洞的形成原理,漏洞的利用方法以及如何防範該漏洞發生,幫助大家學習命令注入漏洞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章