Password

目前安裝在系統上的程序是否有可能通過知道 root 的密碼來提升其權限?

  • December 24, 2018

讓我們假設一個類 Unix 系統(如 macOs、linux、solaris 等)從網際網路上安裝了一個由惡意行為者開發的程序的場景。

該程序不使用系統上的任何零日漏洞來提升權限。它只是在正常非管理使用者的上下文中執行,並具有所有限制。它會在後台記錄所有按鍵,直到記錄使用者在終端“su”中鍵入密碼,然後再輸入密碼。這個程序突然擷取了 root 使用者的密碼。

我的問題是,擷取此密碼後,程序是否可以從 root 使用者的上下文中重新啟動,甚至在仍在執行時升級其權限,在目前使用者沒有註意到的情況下執行所有這些操作?確實存在哪些實用程序可以允許這樣的程序做這樣的事情?我說的是一個理想的場景,其中不使用核心中的任何錯誤或漏洞。我只是在談論一個程序,它只是以已經打算使用的方式使用現有的系統實用程序。

是的。通過執行su. su是一個允許使用密碼更改使用者的程序。su具有更改使用者的能力,並且只有在您提供正確的密碼時才會這樣做。

但是,唯一的方法是啟動一個新程序,或者替換現有程序的程序。然後它可以使用新的特權重新啟動它自己。

學究式註釋:程序可以通過su. 但是一個程序不能。但是,新程序 ( su) 可以重新啟動舊程序。

這正是expect程序(和類似程序)設計的那種情況。您可以在su下執行expect,檢測密碼提示,發送密碼(您已擷取),然後擁有可以向其發送命令的 root shell。

例如

#!/usr/bin/expect --

set mypasswd "imnottellingyou"

spawn "su"
expect "ssword"
send "$mypasswd\n"
expect "#"
interact

引用自:https://unix.stackexchange.com/questions/490790