如何自動將密碼傳遞給「su」?

如何自動將密碼傳遞給「su」?

我正在研究安全課程的漏洞。目的是取得linux虛擬機器中的root shell。到目前為止,我可以寫入 /etc/passwd 並將 root 的密碼更改為任意字串。

現在,我想使用 su 來取得 root shell。由於我的漏洞必須是自動化的,因此它無法提示輸入密碼,而且虛擬機器也沒有安裝expect。有人知道如何將密碼傳遞給 su 指令嗎?或者,還有更好的方法?

答案1

自動化此類輸入的最佳方法是使用expect或更好的pexpect.大多數伺服器都帶有 python,至少是現代發行版。

首先你說你的VM沒有expect安裝?我不知道為什麼這很重要。有什麼原因導致您無法在本機帳戶下安裝/執行某些內容嗎?

接下來考慮一下,為什麼你必須使用passwd???您也可以透過替換 中指定的雜湊值來變更密碼/etc/shadow。顯然,您需要首先正確地預先生成哈希,但只要您使用受支援的哈希,它就應該按預期工作。現在,您將如何編寫這樣一個操作的腳本,這是您需要解決的一個練習。

我還想提一下,passwd不從 STDIN 讀取它的輸入。如果我沒記錯的話,它是從 tty 讀取的。因此,沒有任何花哨的 justecho和 的組合sleep會起作用。然而,可以使用 HEREDOC,但假設系統具有足夠的反應能力。你也許可以把它分解成sleep整體。我剛剛測試了這個,它在我的 Ubuntu 工作站上運行。

#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF

答案2

您的漏洞也可以寫入群組檔案並使目前使用者成為「wheel」群組的一部分(或任何可以執行sudo帶有 oa 密碼的命令的群組)。然後您(或任何其他使用者)就可以sudo su root不用密碼了。

跑步visudo應該會給你一些關於機器上「輪子」組設定的指導。

澄清一下:一旦使用者成為wheel群組的一部分,他們就可以運行sudo指令而無需密碼。

相關內容