<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            Command Injection

            ABSTRACT

            執行不可信賴資源中的命令,或在不可信賴的環境中執行命令,都會導致程序以攻擊者的名義執行惡意命令。

            EXPLANATION

            Command Injection 漏洞主要表現為以下兩種形式:

            - 攻擊者能夠篡改程序執行的命令:攻擊者直接控制了所執行的命令。

            - 攻擊者能夠篡改命令的執行環境:攻擊者間接地控制了所執行的命令。

            在這種情況下,我們著重關注第一種情況,即攻擊者控制所執行命令的可能性。這種形式的 Command Injection 漏洞在以下情況下發生:

            1. 數據從不可信賴的數據源進入應用程序。

            2. 數據被用作代表應用程序所執行命令的字符串,或字符串的一部分。

            3. 通過命令的執行,應用程序會授予攻擊者一種原本不該擁有的特權或能力。

            例 1:下面這段來自系統實用程序的代碼根據系統屬性 APPHOME 來決定其安裝目錄,然后根據指定目錄的相對路徑執行一個初始化腳本。


            ...
            Dim cmd
            Dim home

            home = Environ$("AppHome")
            cmd = home & initCmd
            Shell cmd, vbNormalFocus
            ...


            例 1 中的代碼使得攻擊者可通過修改系統屬性 APPHOME 而指向一個包含惡意版本 INITCMD 的其他路徑,從而提高自己在應用程序中的權限,繼而隨心所欲地執行命令。由于程序不會驗證從環境中讀取的值,所以如果攻擊者能夠控制系統屬性 APPHOME 的值,他們就能欺騙應用程序去運行惡意代碼從而取得系統控制權。

            例 2:以下代碼來自一個管理 Web 應用程序,該程序旨在允許用戶通過使用圍繞 rman 實用程序的批處理文件包啟動 Oracle 數據庫備份,然后運行 cleanup.bat 腳本刪除一些臨時文件。腳本文件 rmanDB.bat 接受一個命令行參數,其中指明了需要執行的備份類型。由于訪問數據庫受限,所以應用程序執行備份需要具有較高權限的用戶。


            ...
            btype = Request.Form("backuptype")
            cmd = "cmd.exe /K " & Chr(34) & "c:\util\rmanDB.bat " & btype & "&&c:\utl\cleanup.bat" & Chr(34) & ";
            Shell cmd, vbNormalFocus
            ...


            這里的問題是:程序沒有對讀取自用戶的 backuptype 參數做任何驗證。一旦調用了該 shell,它即會心甘情愿地執行用兩個與號分隔的多條命令。如果攻擊者傳遞了一個形式為 "&& del c:\\dbms\\*.*" 的字符串,那么應用程序將會在執行其他程序指定的命令時執行這些命令。由于該應用程序的特性,運行該應用程序需要具備與數據庫進行交互所需的權限,這就意味著攻擊者注入的任何命令都將通過這些權限得以運行。

            例 3:以下代碼來自一個 Web 應用程序。通過該應用程序,用戶可以訪問能夠更新其系統密碼的接口。在特定的網絡環境中更新密碼時,其中的一個步驟就是在 /var/yp 目錄中運行 make 命令,下面顯示了此步驟的代碼。


            ...
            $result = shell_exec("make");
            ...


            這里的問題在于程序沒有在它的構造中指定一個絕對路徑,并且沒能在執行Runtime.exec() 調用前清除它的環境變量。如果攻擊者能夠修改 $PATH 變量,把它指向名為 make 惡意二進制代碼,程序就會在其指定的環境下執行,然后加載該惡意二進制代碼,而非原本期望的代碼。由于應用程序自身的特性,運行該應用程序需要具備執行系統操作所需的權限,這意味著攻擊者會利用這些權限執行自己的 make,從而可能導致攻擊者完全控制系統。

            REFERENCES

            [1] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A1 Injection

            [2] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A2 Injection Flaws

            [3] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A6 Injection Flaws

            [4] Standards Mapping - Security Technical Implementation Guide Version 3 - (STIG 3) APP3510 CAT I, APP3570 CAT I

            [5] Standards Mapping - Security Technical Implementation Guide Version 3.4 - (STIG 3.4) APP3510 CAT I, APP3570 CAT I

            [6] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 77, CWE ID 78

            [7] Standards Mapping - SANS Top 25 2010 - (SANS 2010) Insecure Interaction - CWE ID 078

            [8] Standards Mapping - SANS Top 25 2011 - (SANS Top 25 2011) Insecure Interaction - CWE ID 078

            [9] Standards Mapping - SANS Top 25 2009 - (SANS 2009) Insecure Interaction - CWE ID 116

            [10] Standards Mapping - Web Application Security Consortium 24 + 2 - (WASC 24 + 2) OS Commanding

            [11] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2) Requirement 6.3.1.1, Requirement 6.5.2

            [12] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0) Requirement 6.5.1

            [13] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1) Requirement 6.5.6


            Copyright 2013 Fortify Software - All rights reserved.
            (Generated from version 2013.1.1.0008 of the Fortify Secure Coding Rulepacks)
            desc.dataflow.vb.command_injection

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线