Command Injection(命令列注入)
命令注入漏洞是特別危險的,因為它們允許未經授權的執行作業系統命令,它們的存在,因為應用程式無法正確地驗證和消毒,使用時呼叫shell的功能,如的引數。攻擊者與控制這些引數可以欺騙應用程式執行任何系統命令自己的選擇。為了正確測試命令注入漏洞,應遵循以下步驟:§第1步:瞭解攻擊場景§第2步:分析原因及對策§第3步:開始試驗和探索§第4步:微調測試案例第1步:瞭解攻擊場景命令注入漏洞測試的第一步是要了解他們的攻擊的情況下,有兩種常見的型別,命令注入漏洞:§直接命令注入。§間接命令注入。方案1:直接命令注入最基本的形式包括直接提供的額外的易受攻擊的應用程式的命令。命令注入攻擊者首先發現應用程式呼叫系統命令作為引數的命令,直接將使用者提供的資料,
1. 攻擊者發現,該應用程式使用客戶端輸入來執行命令。
2. 攻擊者提供的惡意客戶端輸入命令的一部分。
3. 攻擊者觀察應用程式執行其他命令。方案2:間接命令注入這種情況下,命令注入,直接地或間接地提供額外的易受攻擊的應用程式可以通過檔案或環境變數的命令。首先,攻擊者減去的應用程式呼叫系統命令,從外部資料來源,如檔案或環境變數然後,攻擊者修改的內容的外部源中加入惡意的命令。然後,攻擊者等待或強制執行惡意命令,與原來的應用程式。詳細步驟如下:
1. 攻擊者發現,該應用程式使用的資料儲存在外部執行命令。
2. 攻擊者編輯外部來源包括惡意命令。
3. 攻擊者等待,直到應用程式執行原來的命令(或攻擊者試圖使該應用程式的狀態將在其中提供的命令執行)。
4. 攻擊者驗證的應用程式的執行注入的命令。第2步:分析原因及對策在此步驟中,你就會明白命令注入漏洞以及共同防禦的原因。這將幫助您尋找程式碼中的錯誤,並認識到安全的編碼實踐。命令注入的原因命令注入漏洞是一個單一的原因:可憐的輸入驗證。建立任何應用程式,命令字串中使用未消毒的資料容易受到此錯誤。下面的程式碼片段演示了命令注入漏洞。
下面的例子在C + +(由OWASP [I])執行在一個符合POSIX標準的類Unix環境,如使用提供的命令列輸入到系統並執行的cat命令:
命令注入對策應用程式防禦命令注入漏洞,通過做正確的輸入驗證和消毒。
第4步:微調測試案例資料徹底地測試您的應用程式對命令注入漏洞,你必須覆蓋所有可能的入口點和命令注入是可能的情況下的。嘗試不同的切入點和場景繼續探索不同的應用程式的入口點。測試的情況下,資料的格式會有所不同的入口點。
§重要的是,你考慮不同的編碼方式和資料格式額外的命令注入的入口點,如:輸入欄位,URL引數,POST資料,Web服務方法,使用者介面元素,環境變數,資料庫的內容,登錄檔內容,檔案的內容,第三黨的API,和網路資料包。§當間接命令注入進行測試時,重要的是你控制的源傳遞到目標函式的引數。例如,如果你被攻擊一個使用應用程式,你必須控制傳遞給這個函式的檔案。讓我們說的應用程式使用而execfile /私營/ commands.txt的,在這裡你不需要通過任何惡意的引數,你必須修改命令檔案注入惡意指令,並等待(或強迫)注入要執行的命令。這是建議,進行測試時,直接噴射,您使用的環境監測工具。
§結論§命令注入漏洞存在,因為窮人的輸入驗證和消毒互動的功能與作業系統的shell所使用的引數。任何攻擊者控制這些引數可以強制應用程式執行不必要的系統命令。命令注入漏洞進行對比測試,包括操縱原來的命令引數,命令注入的字串,取決於要執行的操作的入口點下測試不同的組合。