কোন উপায়ে এসএফটিপি এসএসএইচ ভিত্তিক নয়?


9

আমি সবেমাত্র ওভারডায়ার ব্যান্ডিট যুদ্ধের খেলা শেষ করেছি , 18 স্তর

এটা অবাক হয়েছিল। এই স্তরের জন্য এখানে নির্দেশাবলী দেওয়া আছে।

পরবর্তী স্তরে জন্য পাসওয়ার্ড একটি ফাইলে সংরক্ষণ করা হয় রিডমি homedirectory হবে। দুর্ভাগ্যক্রমে, আপনি এসএসএইচ দিয়ে লগ ইন করার সময় কেউ আপনাকে লগ আউট করার জন্য .bashrc পরিবর্তন করেছে ।

আমি শেল স্কিপ সসোর্সিংয়ের উপায় নিয়ে ভাবছিলাম .bashrc। তবে আমি কোনও সমাধান বের করার আগে, আমি কেবল সার্ভারের সাথে একটি এসএফটিপি সংযোগ শুরু করার প্রলোভন পেয়েছিলাম। আমি এটি কাজ করবে আশা করিনি। কিন্তু এটা করেছে। এবং আমি জানতে চাই কেন। আমি ভেবেছিলাম এসএফটিপি এসএসএইচ দিয়ে চলেছে।

স্পষ্টতার জন্য, যখন আমি সার্ভারে এসএসএইচ করি, তখন প্রত্যাশা অনুযায়ী আমাকে লাথি মেরে ফেলে ফেলা হয়।

ssh  sftp 

1
এসএফটিপি এসএসএইচ ধরে চলে। ব্যাশ এসএসএইচ দিয়েও চলতে পারে। তবে এসএফটিপি বাশ দিয়ে চলে না। (নোট করুন যে আমি এখানে "রান ওভার" আলগাভাবে ব্যবহার করছি)
ব্যবহারকারী 253751

উত্তর:


13

সাধারণভাবে বাশ

স্টার্টআপ ফাইলগুলির বিষয়ে বাশের নকশা বরং অদ্ভুত। .bashrcদুটি সম্পর্কহীন পরিস্থিতিতে বাশ বোঝা :

  • যখন এটি একটি ইন্টারেক্টিভ শেল, এটি কোনও লগইন শেল ছাড়া (এবং এটি যখন স্বাক্ষরিত হয় তখন বাদে sh)। এ কারণেই .bash_profileসাধারণত লোড হয়.bashrc
  • যখন ব্যাশ হয় না ইন্টারেক্টিভ কিংবা লগ-ইন শেল কিংবা যেন বরকত shকিন্তু চালানো কমান্ড দেওয়া -cএবং SHLVLসেট না বা তার কম বা 1 সমান, এবং নিম্নলিখিত এক সত্য:

    • যদি মান ইনপুটটি সকেট হয়। অনুশীলনে, এটি বেশিরভাগ ক্ষেত্রে ঘটে যখন বাশ দ্বারা ডাকা হয় rshd, অর্থাৎ যখন চলমান rsh remotehost.example.com somecommand
    • যদি সংকলনের সময় সক্রিয় করা হয় (যা কিছু বিতরণে যেমন ডিবিয়ান এবং ডেরিভেটিভস হিসাবে থাকে), যদি পরিবেশের একটি পরিবর্তনশীল হয় SSH_CLIENTবা SSH2_CLIENTসংজ্ঞায়িত হয়। অনুশীলনে, এর অর্থ হ'ল বাশটি sshdঅর্থাত্‍ অর্থাত্‍ প্রবর্তিত ssh remotehost.example.com somecommand
      আপনি যদি জানেন না যে বাশ কীভাবে সংকলিত হয়েছিল, আপনি বাইনারিটিতে স্ট্রিং রয়েছে কিনা তা পরীক্ষা করে এই বিকল্পটি সেট করা হয়েছিল কিনা তা জানতে পারবেন SSH_CLIENT:

      strings /bin/bash | grep SSH_CLIENT
      

সাধারণভাবে এসএসএইচে

আপনি যখন এসএসএইচ প্রোটোকলের মাধ্যমে একটি কমান্ড কার্যকর করেন, কমান্ডটি স্ট্রিং হিসাবে তারের উপর দিয়ে যায়। স্ট্রিংটি রিমোট শেল দ্বারা কার্যকর করা হয়। আপনি যখন চালান ssh example.com somecommand, দূরবর্তী ব্যবহারকারীর লগইন শেলটি থাকলে /bin/bash, এসএসএইচ সার্ভারটি চালিত হয় /bin/bash -c somecommand। লগইন শেলটি বাইপাস করার কোনও উপায় নেই। এটি সীমিত লগইন শেলগুলিকে অনুমতি দেয়, উদাহরণস্বরূপ কেবল ফাইল অনুলিপি করার অনুমতি দেয় এবং সাধারণ কমান্ড প্রয়োগের জন্য নয়।

একটি ব্যতিক্রম আছে: এসএসএইচ প্রোটোকল ক্লায়েন্টকে একটি নির্দিষ্ট সাবসিস্টেমের জন্য অনুরোধ করার অনুমতি দেয়। যদি ক্লায়েন্ট sftpসাবসিস্টেমটির জন্য অনুরোধ করে , তবে ডিফল্টরূপে ওপেনএসএসএইচ সার্ভারটি /usr/lib/openssh/sftp-serverব্যবহারকারীর লগইন শেলের মাধ্যমে প্রোগ্রামটি (অবস্থানটি পরিবর্তিত হতে পারে) শুরু করে। তবে লাইনের মাধ্যমে একটি অভ্যন্তরীণ এসএফটিপি সার্ভার চালনার জন্য এটিও কনফিগার করা যেতে পারে

Subsystem sftp internal-sftp

sshd_configফাইলের মধ্যে অভ্যন্তরীণ এসএফটিপি সার্ভারের ক্ষেত্রে এবং শুধুমাত্র এই ক্ষেত্রে ব্যবহারকারীর লগইন শেলটি বাইপাস করা হয়।

এই চ্যালেঞ্জের জন্য

ওভারডায়ার ব্যান্ডিট 18 এর ক্ষেত্রে .bashrcরয়েছে

…
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
…
echo 'Byebye !'
exit 0

সুতরাং আপনি এই স্তরটি এমন কোনও কিছু করে সমাধান করতে পারেন যার ফলে ব্যাশ ইন্টারেক্টিভ না হয় causes

যেমন আপনি আবিষ্কার করেছেন, এসএফটিপি কাজ করে।
কিন্তু ssh bandit18@bandit.labs.overthewire.org cat readmeকাজ করবে।
যেমন হবে echo 'cat readme' | ssh bandit18@bandit.labs.overthewire.org
এবং ইন্টারেক্টিভ লগইন চলাকালীন সময়ে সঠিক সময়ে Ctrl + C টিপতেও কাজ করবে: এটি বাশকে বাধা দেয়, সুতরাং এটি .bashrcসম্পূর্ণরূপে কার্যকর হবে না। বাশ শুরু করার জন্য ম্যাক্রোস্কোপিক সময় নেয়, সুতরাং এটি নির্ভরযোগ্যভাবে কাজ করে না, এটি অনুশীলনে করা যায়।


2
আমি মনে করি না এসএফটিপি কেবল বিনা ইন্টারেক্টিভভাবে নয় , বাশ চালায় all
ব্যবহারকারী 253751

@ ইমিবিস আমি বিশ্বাস করি আপনি সে সম্পর্কে সঠিক are আমি ব্যবহারকারীর অ্যাকাউন্টে ফাইল এক্সচেঞ্জ করতে এসএফটিপি ব্যবহার করেছি যা "রিয়েল" শেলের পরিবর্তে কিছু অ্যাপ্লিকেশন দিয়ে লগইন শেল হিসাবে কনফিগার করা হয়েছিল।
ক্যাস্পারড

@ মিমিবিস এসএফটিপি বাশ চালায় না। তবে এসএফটিপি সার্ভারটি অভ্যন্তরীণ না sshdহলে ব্যবহারকারীর লগইন শেলটি চালায় যা চালিত হয় sftp-server। সুতরাং, যদি লগইন শেল স্ট্রিংটিকে /usr/lib/openssh/sftp-server"কমান্ডটি চালান" হিসাবে ব্যাখ্যা না করে /usr/lib/openssh/sftp-server, আপনি এসএফটিপি ব্যবহার করতে পারবেন না।
গিলস

5

আপনি কেবল .bashrcশেল শুরু করলেই এটি কার্যকর করা হয়।

Subsystem internal-sftpসার্ভারের sshd_configফাইলে কমান্ড সরবরাহ করে এসএফটিপি প্রোটোকলের জন্য শেল শুরু না করার জন্য এসএসএইচ সার্ভারটি কনফিগার করা যেতে পারে ।

অনুমান: এটি সম্ভবত ওভারডওয়্যার ব্যান্ডিট ওয়ারগেমটি আসলে অ্যাডজাস্ট করার চেয়ে কনফিগার করা হয়েছে .bashrcকারণ অন্যথায় একই বিধিনিষেধটি সার্ভার কমান্ডকেও sshব্লক করে দেবে sftp


2
এসএফটিপি চালানো শেল শুরু করে । ব্যবহারকারীর লগইন শেলটি /path/to/shell -c /path/to/sftp-serverযেখানে /path/to/shellরয়েছে এসএসএইচ ডেমন চালায় । যদি ব্যবহারকারীর লগইন শেল বাশ হয়, তবে .bashrcকীভাবে ব্যাশ সংকলিত হয়েছিল তার উপর নির্ভর করে কার্যকর করা যেতে পারে। এটি সর্বদা কার্যকর করা হয় যখন বাশ দ্বারা কার্যকর করা হয় rshd(হ্যাঁ, এমনকি কোনও অ-ইন্টারেক্টিভ শেলের জন্যও, ব্যাশ প্রারম্ভটি অদ্ভুত) এবং একটি সংকলন-সময় বিকল্প এটিতে প্রসারিত করে sshd
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

আমি গিয়ে চেক করেছিলাম। ভাল ধারণা, কিন্তু বাস্তবে এটি এত সূক্ষ্ম নয়। exitমধ্যে .bashrcশুধুমাত্র মৃত্যুদন্ড কার্যকর যদি ব্যাশ ইন্টারঅ্যাকটিভ করা হয়।
গিলস 'অশুচি হওয়া বন্ধ করুন'

@ গিলিস, সাথে Subsystem sftp internal-sftpএবং echo No.; exit 1আমার মধ্যে .bashrcআমি sshসার্ভারটিতে অ্যাক্সেস পাই না তবে sftpএখনও কাজ করে। (এবং তারপরে অবশ্যই ওভাররাইট বা অপসারণের সম্ভাব্য সম্ভাবনা রয়েছে .bashrcPer তথাপি অনুমতিগুলি)) sshইন্টারেক্টিভ কিনা তা সংযোগের প্রচেষ্টা ব্যর্থ। অন্যদিকে, যদি আমার থাকে Subsystem sftp /usr/lib/openssh/sftp-serverতবে এসএফটিপি পরিষেবাটি যখন .bashrcম্যাংড করা হয় তখনও ব্যর্থ হয়।
রোয়াইমা

4

sftp একই শংসাপত্র ব্যবহার করে, তবে দূরবর্তী মেশিনে একটি ইন্টারেক্টিভ শেল চালায় না।

কোনও প্রশাসক কোনও এসএফটিপি ব্যবহারকারীকে এসএসএস চালানো থেকে বিরত রাখতে পারে, যেমন, কীভাবে কেবল এসএসএইচের পরিবর্তে ব্যবহারকারীদের এসএফটিপি-তে সীমাবদ্ধ রাখবেন সেভাবে বর্ণিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.