2014-09-26 48 views
1

我看過ShellshockHeartbleed之後的另一個更大的漏洞。 代碼來測試我們的Bash殼很容易與否是:有人可以解釋這個「Shellshock」代碼如何在shell中工作

env X="() { :;} ; echo shellshock" /bin/sh -c "echo completed" 

詳細,請問這個代碼完全工作?代碼env X="() { :;} ;是做什麼的?

如果我在一個Linux環境中託管一個網站,而這個網站的shell很脆弱,它會如何被攻破?

+3

http://security.stackexchange.com/q/68122/45915是一個好的開始。 – DCoder 2014-09-26 04:46:03

+0

謝謝你的鏈接:D – Jassi 2014-09-26 05:08:52

回答

4

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

是什麼env辦?

從文檔中,env在修改的環境中運行程序。

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] 

顯然,x是一個名字/變量和() { :;}; echo vulnerable'是該變量的值。

現在什麼是() { :;};

當一個函數被導出,猛砸存儲其defenition作爲環境變量的值:

$ x() {echo hello world;} 
$ export x 
$ env | grep x 
x=() {echo hello world}; 

現在,當x='() {:;}'指爲寫

$ x() {:;} 
$ export x 
$ env | grep x 

也就是說,我們間接地提出了類似的轉到由env創建的新環境。這裏:是Bash中的一個空語句。

相關問題