天天看點

雪城大學資訊安全講義 3.1 Set-UID 機制如何工作三、Set-UID 特權程式

三、Set-UID 特權程式

原文: Set-UID Programs and Vulnerabilities 譯者: 飛龍

這個講義的主要目标就是來讨論特權程式,為什麼需要他們,他們如何工作,以及它們有什麼安全問題。特權程式是可以給予使用者額外權限的程式,這些權限超出了使用者已有的權限。例如,Web 伺服器是特權程式,因為他允許遠端使用者通路服務端的資源;Set-UID 程式也是個特權程式,因為他允許使用者在程式執行期間獲得 ROOT 權限。

這篇講義中,我們會專注于 Set-UID 的機制,并且在我們的案例學習中使用它。但是,我們在這裡讨論的許多安全原則也可以用在其他特權程式上。

1 Set-UID 機制如何工作

  • 動機
    • 你想讓其他人能夠搜尋檔案中的一些單詞,但是不想讓他們能夠讀取檔案。如何實作它呢?
    • 使用者的密碼儲存在

      /etc/shadow

      中,普通使用者不可讀寫。但是,

      passwd

      程式允許使用者修改它們自己的密碼。也就是,當使用者執行

      passwd

      ,它們可以突然修改

      /etc/shadow

      ,并且使用者隻能修改

      /etc/shadow

      中的一項,但不是其他人的條目。如何實作?
  • Set-UID 程式
    • 有效 UID 和真實 UID 的概念
    • 對于非 Set-UID 程式,二者相同
    • 對于 Set-UID 程式,前者是程式所有者的 UID,後者是程式使用者的 UID。
  • 有效 UID 和真實 UID
    • 登入時期,真實 UID 和有效 UID,以及登入過程儲存的 UID 都設為負責程序建立的使用者的登入 UID。對于真實、有效和儲存的組 ID 也一樣。它們設為負責程序建立的使用者的組 ID。
    • 當程序調用

      exec

      系列函數之一,來執行檔案(程式)時,程序相關的使用者群組辨別符會發生改變。如果執行的檔案是個 Set-UID 檔案,程序的有效和儲存的 UID 會設為所執行檔案的所有者。如果所執行檔案是個 Set-GID 檔案,有效 UID、儲存的 UID 以及有效 GID、儲存的 GID 不會改變。
    • 通路控制基于有效 UID 和 GID。
  • 為什麼

    passwd

    chsh

    su

    程式需要為 Set-UID 程式?
  • Windows NT/2000 中有沒有 Set-UID 程式?如果沒有,相同問題在 Windows 中如何解決?
    • Windows 沒有 Set-UID 這個概念。不同的機制用于實作權限功能。開發者會将特權程式編寫為服務,使用者使用本地過程調用将指令行參數發給服務。
    • 服務可以自動或手動啟動。
    • 每個服務都有安全描述符,制定了哪個使用者允許啟動、停止和配置該服務。
    • 服務通常在本地系統賬戶下運作。
  • 如何打開 Set-UID 位:
    % chmod 4755 file ---> -rwsr-xr-x            
  • Set-UID 在 Minix 中如何實作?
    /* This is the per-process information */ 
    EXTERN struct fproc {
        uid_t fp_realuid; /* real user id */ 
        uid_t fp_effuid; /* effective user id */ 
        gid_t fp_realgid; /* real group id */ 
        gid_t fp_effgid; /* effective group id */ 
        ...
    }           
  • Set-UID 機制的惡意使用:
    • 攻擊者可以使用你的賬戶十秒。它能夠植入後門,以便之後再回到你的賬戶嗎?
    % cp /bin/sh /tmp 
    % chmod 4777 /tmp/sh           
    由此,攻擊者建立了 Set-UID SHell 程式,你是這個程式的所有者。是以,當攻擊者之後再運作 Shell 時,它使用你的權限運作。
  • 問題:
    • 普通使用者是否可以調試 Set-Root-UID 程式?
    • 普通使用者是否可以使用

      chown

      來将檔案所有者修改為任何使用者?

繼續閱讀