Linux sudo 提權之軟連結攻擊

使用者bPbhIAe發表於2022-11-23

軟連結提權的原理

低許可權使用者能夠以 root 使用者的許可權執行某個指令碼,該指令碼中又使用到了諸如 chown 等命令修改檔案的許可權,且該檔案又能夠被低許可權的使用者所修改。因此低許可權的使用者可以刪除該檔案,然後建立一個同名的檔案,但是這個檔案是指向一個高權使用者才能修改的檔案,例如 /etc/passwd。這樣在低權使用者在執行命令的時候就能夠修改 /etc/passwd 這個檔案的許可權了,這樣就相當於低許可權使用者能夠越權操作了。

實驗驗證

  • Linux上建立一個低許可權使用者 testuser,然後建立一個檔案 sudotest,該檔案的屬主是 testuser
    image.png
  • 建立一個指令碼檔案 test.sh,該指令碼的屬主是 testuser2testuser 有許可權執行該指令碼。 配置 sudo 免密切換執行,使得 testuser 能夠免密切換到 root 執行 test.sh
    image.png
    image.png
  • 使用 root 使用者在 /etc 目錄下建立檔案 zsudotest,然後切換到 testuser使用者,刪除 sudotest 檔案,然後建立一個軟連結指向 /etc/zsudotest
    image.png
    image.png
  • 執行指令碼,可以看到指令碼執行完成之後,本來是高權使用者的檔案/etc/zsudotest的屬主被修改為了低權使用者。
    image.png
    image.png

    問題規避

    針對這種提權的問題,我們可以有如下的方式來減少提權的風險:

  • 對於 chown 命令,我們使用的時候可以使用引數 -h,這樣的話只會修改軟連結這個檔案的許可權,不會修改連結到的檔案的許可權。
  • 如果還有其它的高危命令,比如 rmmv 這些命令,最好是能夠切換到檔案對應的使用者,然後再執行操作

相關文章