2014-06-15 26 views
0

我得到一個shell腳本的安全問題:什麼是參與這一文件

#!/bin/sh 
#file name : eg.1 
X=$1 
eval "$X" 

如果我啓動此腳本爲一組用戶或其他用戶,有沒有提出的任何安全問題?

+1

這完全取決於什麼這個腳本的參數是。這是整個劇本嗎?這似乎有點無意義。 –

+0

是的,它是,我想知道如果我餵我任何惡意參數,是否會對系統進行任何安全問題。 – VinceFIT

+0

答案是:是的。 –

回答

0

eval命令功能非常強大,非常容易被濫用。 它會導致您的代碼被解析兩次而不是一次;這意味着,例如,如果您的代碼中包含變量引用,那麼shell的解析器將評估該變量的內容。如果變量包含一個shell命令,shell可能會運行該命令,無論您是否希望它。這可能會導致意想不到的結果,特別是可以從不受信任的來源讀取變量時。

# This code is evil and should never be used! 
fifth() { 
_fifth_array=$1 
eval echo "\"The fifth element is \${$_fifth_array[4]}\"" # DANGER! 
} 
a=(zero one two three four five) 
fifth a 

輸出

fifth 'x}"; date; #' 

第五元件是 星期四03月27日16時13分47秒EDT 2014
more details

+0

我可以使用這個文件來實現特權提升,例如,我可以訪問一個文件,我沒有權限訪問通過使用eg.1 – VinceFIT

+0

@VinceFIT,沒有。與Windows不同,Linux可以抵禦這種攻擊。攻擊者可以在貴公司執行命令有什麼危險。例如,他們可以執行'rm'來刪除您的個人數據,觸摸創建填充您的分區的無限文件,這反過來導致DoS並且有時使系統無法啓動。 – totti