জিডিবি ডিবাগ সুইট রুট প্রোগ্রাম করতে পারে?


16

আমি একটি প্রোগ্রাম লিখেছিলাম যা কল করে setuid(0)এবং execve("/bin/bash",NULL,NULL)

তারপরে আমি করলাম chown root:root a.out && chmod +s a.out

যখন আমি এক্সিকিউট ./a.outকরি আমি একটি রুট শেল পাই। তবে আমি যখন gdb a.outএটি করি তখন এটি সাধারণ ব্যবহারকারী হিসাবে প্রক্রিয়া শুরু করে এবং একটি ব্যবহারকারী শেল চালু করে।

সুতরাং ... আমি একটি নির্ধারিত মূল প্রোগ্রামটি ডিবাগ করতে পারি?

উত্তর:


22

ডিবাগারটি যদি রুট হিসাবে চলমান থাকে তবে আপনি কেবলমাত্র সেটুইড বা সেটগিড প্রোগ্রাম ডিবাগ করতে পারেন। কার্নেল আপনাকে ptraceঅতিরিক্ত সুযোগ-সুবিধা সহ চলমান কোনও প্রোগ্রামে কল করতে দেয় না । যদি এটি হয়, আপনি প্রোগ্রামটি যে কোনও কিছু সম্পাদন করতে সক্ষম হবেন, যার কার্যকরভাবে অর্থ হ'ল আপনি যেমন কোনও ডিবাগার কল করে রুট শেল চালাতে পারেন /bin/su

আপনি যদি Gdb কে রুট হিসাবে চালনা করেন তবে আপনি আপনার প্রোগ্রামটি চালাতে সক্ষম হবেন তবে আপনি যখন কেবল রুট দ্বারা চালিত হন তখন এর আচরণটি পর্যবেক্ষণ করবেন।

আপনার যদি প্রোগ্রামটি রুট দ্বারা শুরু না করা হয়, ডিবিগ করার দরকার পড়ে, Gdb এর বাইরে প্রোগ্রামটি শুরু করুন, সমস্যাজনক অংশে পৌঁছানোর আগে কিছুটা ফ্যাশনে এটি বিরতি দিন এবং attachজিডিবির অভ্যন্তরীণ প্রক্রিয়া ( at 1234যেখানে 1234 প্রক্রিয়া আইডি রয়েছে)।


হ্যাঁ আমি এটি চেষ্টা করেছিলাম, তবে প্রক্রিয়াটি রুট হিসাবে শুরু হয়, এবং রুটের প্রক্রিয়া সংযুক্ত করতে সক্ষম হওয়ার জন্য জিডিবিও রুট হিসাবে শুরু করা উচিত।
জাইজ

@ জাইজুজ হ্যাঁ, আমি যেমন লিখছি আপনাকে মূল হিসাবে জিডিবি শুরু করতে হবে। অথবা আপনি যদি চান তবে আপনি রিমোট ডিবাগিং ব্যবহার করতে পারেন এবং ঠিক gdbserverমূলের মতো চালাতে পারেন এবং এটি একটি সাধারণ ব্যবহারকারীর হিসাবে সংযুক্ত করতে পারেন। আপনার মন্তব্য থেকে মনে হচ্ছে আপনি এটি সহজ পদ্ধতিতে পরিচালনা করতে পারেন নি (রুট হিসাবে জিডিবি চালানো) তবে কী ভুল হয়েছে তা আমি বুঝতে পারি না, তাই আমি সাহায্য করতে পারি না।
গিলস 'অশুভ হওয়া বন্ধ করুন'

7

আপনি যদি চান তবে থামানো অবস্থায় প্রক্রিয়া শুরু করার জন্য এখানে একটি উপায়। কাজ করে একটি ব্যাশ স্ক্রিপ্ট ব্যবহার করুন:

echo $BASHPID; kill -STOP $BASHPID; exec sudo -u unpriviledged_user -g the_group_if_not_primary command

পটভূমিতে যে রান করুন।

তারপরে শুরু করুন gdbএবং মুদ্রিত পিডের সাথে সংযুক্ত করুন।

আপনাকে execকমান্ডটি দিয়ে পদক্ষেপ gdbনিতে হবে, তবে আপনি প্রথম থেকেই ডিবাগ করতে সক্ষম হবেন।

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