能否請你幫我分析一下這個腳本,並告訴我什麼安全問題有(如果有的話):這個bash腳本是做什麼的,它有什麼問題?
#!/bin/bash
user=$(whoami)
touch /var/log/bashlog/$user
/bin/bash | tee -a /var/log/bashlog/$user
我們被要求探索系統發現故障和這個文件把我難倒了(這是保存爲一個奇怪的名字)。
能否請你幫我分析一下這個腳本,並告訴我什麼安全問題有(如果有的話):這個bash腳本是做什麼的,它有什麼問題?
#!/bin/bash
user=$(whoami)
touch /var/log/bashlog/$user
/bin/bash | tee -a /var/log/bashlog/$user
我們被要求探索系統發現故障和這個文件把我難倒了(這是保存爲一個奇怪的名字)。
此腳本有潛在危險!
您的後果可能因調用方式而異。如果它是故意運行調試控制檯或創建教程的東西,則可能是好的。然而,它並沒有像這樣的氣味。如果這是故意的,並且考慮到它引入的危險,則不需要多用戶意識,並且它不會記錄到公共場所。如果它由於沒有明確記錄的原因而作爲機器登錄系統的一部分自動運行,我會說你有一臺嚴重受損的機器。
首先,該腳本建立用戶是誰,並創建一個公共目錄爲他們的日誌文件。假設您的用戶具有默認umask
設置,這些日誌文件很可能可由系統上的所有用戶讀取。
它所做的下一件事是啓動一個新的shell。問題是新殼的輸出被捕獲。 tee
命令將把輸出分成兩個地方。在shell中發生的所有事情的輸出將被寫入控制檯,但是一切的附加副本將被追加到先前建立的日誌文件中。
在運行該腳本,你會留在看起來就像你開始與一個外殼,但一切的輸出現在不再僅對您的安全登錄shell。如果這是從用戶或系統範圍配置文件調用的,那麼系統上所做的所有事情的輸出都可能是公共記錄。
您可能不希望發生這種情況。
此腳本記錄用戶命令行會話期間產生的每個輸出。它可能會監視某些用戶活動,因此具有潛在的危險性。但它並不是很危險,因爲它沒有捕獲輸入,所以沒有密碼會被捕獲。
它應該做什麼? (特別是最後一行) – anubhava
@anubhava不確定,被要求探索一個系統來查找錯誤,這個文件讓我感到困惑(被保存爲一個奇怪的名字) – JWyatt
你的意思是除了這個事實,如果腳本以某種方式運行,提升特權它在機器上提供了一個root shell? – chepner