এক ধরণের স্যান্ডবক্সে বাশ স্ক্রিপ্ট চালানো কি সম্ভব?


13

আমাদের পণ্যটির একটি নির্দিষ্ট লক্ষ্য অর্জনের জন্য একটি উপাদেয় সার্ভারে একটি অজানা বাশ স্ক্রিপ্ট চালানো দরকার। এই ব্যাশ স্ক্রিপ্টটি ব্যবহারকারী সরবরাহিত। আমরা নিশ্চিত করতে আগ্রহী যে কেবলমাত্র সুনির্দিষ্ট কমান্ডের অনুমতি রয়েছে এবং অন্য সবগুলি অনুমোদিত নয়। তদুপরি, আমাদের কিছু কমান্ড অন্যদের সাথে প্রতিস্থাপন করতে হবে।

সুতরাং, উদাহরণস্বরূপ, আমরা স্ক্রিপ্টটি কার্যকর করতে চাই এবং নিম্নলিখিত কমান্ডগুলিকে অনুমতি দেব: প্রতিধ্বনি বিড়াল

তবে অন্য কোনও কমান্ডকে অনুমতি দেবেন না (আমরা এখানে একটি নির্দিষ্ট তালিকা সরবরাহ করতে চাই না)।

তদতিরিক্ত, যদি স্ক্রিপ্টে সিপি কমান্ড থাকে তবে আমরা এটি ক্যাপচার করতে এবং একটি পৃথক কমান্ডে পুনর্নির্দেশ করতে চাই (যা উলাম ব্যবহার করে করা যেতে পারে)।

কোন ধারণা কীভাবে এটি করা হয়?

উত্তর:


9

সবচেয়ে সহজ উপায় হ'ল ক্রুট জেলটি কেবলমাত্র কমান্ডগুলি সহ আপনি ব্যবহার করতে চান যা স্ক্রিপ্টটি চালাতে সক্ষম হয়। এরপরে আপনি স্ক্র্যাপটি একটি মোড়কের মাধ্যমে চালান যা chrootডিরেক্টরিতে কল করে এবং তারপর স্ক্রিপ্টটি কার্যকর করে exec


17

ভার্চুয়াল মেশিনের ভিতরে স্ক্রিপ্টটি চালানোর কোনও 100% নিরাপদ কম নেই, যা সম্ভবত স্ক্রিপ্টটিকে তার লক্ষ্য অর্জন থেকে বিরত করবে। তবে দুটি বৈশিষ্ট্য রয়েছে যা আপনাকে সাহায্য করতে পারে। যদি আপনি শঙ্কিত হন যে স্ক্রিপ্টটি কোনও দূষিত ব্যক্তি লিখেছেন, তবে এই বৈশিষ্ট্যগুলি যথেষ্ট নয়; তবে আপনি যদি কেবল উদ্বিগ্ন থাকেন যে স্ক্রিপ্টটি আপনার সিস্টেমে খারাপ কাজ করতে পারে কারণ এটি একটি গাফেল প্রোগ্রামার দ্বারা রচিত বা বিভিন্ন উদ্দেশ্য মাথায় রেখে লেখা হয়েছিল, তবে এই দুটি বৈশিষ্ট্যের একটিই শালীন স্যান্ডবক্সিংয়ের পরিবেশ সরবরাহ করে।

  • আপনি বাশকে অনুরোধ করে একটি সীমাবদ্ধ শেল চালাতে পারেন bash -r। আমি আপনাকে বিশদ বিবরণের জন্য ব্যাশ ম্যানুয়ালটিতে উল্লেখ করি; মূল ধারণাটি হ'ল স্ক্রিপ্টটি এমন কমান্ডগুলি কল করতে পারে না যা অন্তর্ভুক্ত নয় $PATH, পরিবর্তন $PATHকরতে পারে না, কোনও ফাইলে বা থেকে পুনঃনির্দেশ করতে পারে না এবং আরও কয়েকটি বিধিনিষেধ আরোপ করতে পারে। এটি সেট আপ করা মোটামুটি সহজ, তবে অজানা স্ক্রিপ্টটি যদি আপনার পর্যালোচনা করতে খুব জটিল হয় তবে এটি এমন অনেকগুলি জিনিস ব্যবহার করতে পারে যা একটি সীমাবদ্ধ শেল থেকে নিষিদ্ধ।

  • আপনি একটি ক্রুট জেল স্থাপন করতে পারেন । একটি ডিরেক্টরি ট্রি সেটআপ করা /some/rootএবং এমন একটি পরিবেশে স্ক্রিপ্টটি চালানো উচিত যা বিশ্বাস করে যে /some/rootপুরো ফাইল সিস্টেম ( chrootপরিবর্তনের মূলের জন্য সংক্ষিপ্ত)। একবার ডিরেক্টরি ট্রি সেট আপ হয়ে গেলে স্ক্রিপ্টটি (অনুলিপি করে /some/root/myscript) চালান chroot /some/root /bin/bash /myscript। উদাহরণস্বরূপ, আপনি /some/root/binযে কমান্ডগুলি মঞ্জুর করতে চান সেগুলি দিয়ে আপনি একটি ডিরেক্টরি স্থাপন করবেন এবং ক্রোটযুক্ত প্রোগ্রামটি এই ডিরেক্টরিটিকে দেখতে পাবে /bin। ক্রুটের অভ্যন্তরে প্রোগ্রামটি সম্পাদনের জন্য আপনার প্রয়োজনীয় সমস্ত কপি করতে হবে: গ্রন্থাগার, ডেটা ফাইল, bashস্ক্রিপ্ট নিজেই ইত্যাদি The স্ক্রিপ্টটির /procজন্য ক্রোটের ভিতরে মাউন্ট লাগানো প্রয়োজন ; আপনি যেমন একটি কমান্ড দিয়ে এটি করতে পারেন mount -t proc proc /proc

    যদি আপনাকে স্ক্রিপ্টের জন্য একটি সম্পূর্ণ ডিরেক্টরি ট্রি উপলব্ধ করতে হয়, বলুন /var/example, আপনার কয়েকটি পছন্দ আছে। আপনি অধীনে একটি অনুলিপি করতে পারে /some/root। আপনি কঠোর লিঙ্ক তৈরি করতে পারেন (যদি তারা আপনার অ্যাপ্লিকেশনের জন্য কাজ করে এবং ক্রুট একই ফাইল সিস্টেমে থাকে)। লিনাক্সে, আপনি ক্রোটের অভ্যন্তরে mount --bind /var/example /some/root/var/example"গ্রাফট" করতে পারেন /var/example। লক্ষ করুন যে প্রতীকী লিঙ্কটি ক্রুটের অভ্যন্তরে লিঙ্কটির লক্ষ্য নির্ধারিত হওয়ার কারণে কাজ করতে পারে না।

    নোট করুন যে ক্রোট সম্পূর্ণরূপে সুরক্ষা সরবরাহ করে না, বিশেষত রুট হিসাবে চলমান প্রক্রিয়াগুলির বিরুদ্ধে। উদাহরণস্বরূপ, একটি রুট প্রক্রিয়া ক্রুটের অভ্যন্তরে একটি ডিভাইস ফাইল তৈরি করতে পারে এবং এটির মাধ্যমে পুরো ডিস্ক অ্যাক্সেস করতে পারে। একটি ক্রোয়েটেড প্রক্রিয়াটি এখনও নেটওয়ার্ক সংযোগ তৈরি করতে পারে (ক্রুটের অভ্যন্তরে কোনও নেটওয়ার্কিং প্রোগ্রাম অন্তর্ভুক্ত না করে এবং অবিশ্বস্ত প্রোগ্রাম কোনও ফাইল তৈরি করতে পারে না এবং এটি কার্যকর করতে সক্ষম বা বিদ্যমান এক্সিকিউটেবলকে ওভাররাইট করতে পারে না তা নিশ্চিত করে আপনি এটি নিষেধ করতে পারেন )।


আপনার প্রয়োজনীয় সমস্ত কিছু অনুলিপি করতে হবে , আমি কি অনুলিপি চেয়ে প্রতীকী বা হার্ড লিঙ্কগুলি তৈরি করতে পারি?
kyb

1
@কিব হার্ড লিঙ্ক: হ্যাঁ প্রতীকী লিঙ্ক: না, একটি প্রতীকী লিঙ্কটি কেবল এমন কোনও ফাইলের দিকে নির্দেশ করতে পারে যা আপনি দেখতে পাচ্ছেন, এটি আপনাকে ক্রুট থেকে বাঁচতে দেয় না। এর জন্য কঠোর লিঙ্কগুলি ব্যবহার করা শক্ত এবং বেআইনীভাবে: তারা যদি আপনি ফাইলটি প্রতিস্থাপন করেন তবে তা ভেঙে যায়, যদি এটি ক্রোটের ভিতরে লিখিত হয় তবে তারা মূল অনুলিপিটি প্রকাশ করে। আপনি যদি একটি সম্পূর্ণ গাছ উপলভ্য করতে চান তবে তা অনুলিপি করুন বা কেবল পঠনযোগ্য বাইন্ড মাউন্ট করুন।
গিলস

আমি প্রাপ্তিসাধ্য সাধারণ কমান্ড করতে হবে grep, awk, units, ইত্যাদি কি আমি নিজে যে বিন ফাইল এবং সব dependancies কপি করতে বা স্পষ্টভাবে বলতে কি utils chroot মধ্যে কাজ করা উচিত কিছু কুশলী হ্যাক দরকার?
kyb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.