• 0
Qnix

Video : exploting vuln programe

سؤال

هاذا فيديو بصيغه ".exe" وهو shockwave قمت بانشاءه في نظام Linux

عن طريق برنامج wink screen capture يمكن تحميل البرنامج من هنا

http://www.debugmode.com/wink

الفيديو يعرض طريقه اختراق برنامج مصاب في نظام Linux وتنزيل ال

shellcode في ال environment وكتابه كود ب C لاخراج عنوان رجوع

ال shellcode عن طريق ال environment وبعدها اكمال

عمليه ال exploiting ....

يمكن تحميل الفيديو من هنا

http://www.0x11.org/vuln.zip

الذي لايملك shockwave يمكن تحميله من هنا

http://www.shockwave.com

تحياتي

تم تعديل بواسطه Qnix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

13 إجابة على هذا السؤال .

  • 0

اضفت ال swf لمن يريده

http://www.0x11.org/vuln.html

تم تعديل بواسطه Qnix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رائع أخى qnix

و كل segmentation fault و أنت طيب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا سلام عليك !!

مع اني قاري هالكلام من زمان (و ناسيه) .. لكن الشوف غير السمع :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما شاء الله عليك يا Qnix

شكلك بتسهر كتير امام شاشة الكمبيوتر :D

طيب انا فهمت ان حصل فيض في المتغير buffer , ومن هذا الفيض انتقلت الى shell بصلاحيات الـ root , مع انك كنت root اصلا !!!

لكن عندي سؤال , لأ , سؤاليين , يمكن أكثر شويه

1 - انت ليه كتبت الأداه getenv وهي موجوده في النظام ؟؟ يعني ليه ما استخدمت الأمر مباشرة

2 - ليه العنوان اللي طلعه برنامجك اختلف عن العنوان اللي طلعه الأمر المباشر في النظام مع انك في البرنامج بتستخدم أمر النظام ؟

3 - الجمله دي معناها ايه

'prel -e `print "\x90"x260'`

انا فاهم انها حتكرر nop لـ 260 مره , لكن أول مره أشوف الشكل ده

وبعدين ليه محصلش الفيض بالكم ده مع ان الـ buffer طوله 256 فقط يعني المفروض ان في فيض

4 - بتاع ايه السطر ده

ulimit -c unlimited

هل هو لعمل dump للخطأ ؟ للاستفاده منه لاحقا في gdb ?

5 - وده اللي حتجنني عرفت منين ان بعد 268 هي عنوان الرجوع ؟

معلش حصدعك بالأسئله :D

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
شكلك بتسهر كتير امام شاشة الكمبيوتر

:lol:

طيب انا فهمت ان حصل فيض في المتغير buffer , ومن هذا الفيض انتقلت الى shell بصلاحيات الـ root , مع انك كنت root اصلا !!!

صحيح كلامك بس هو ماعطاني صلاحيه root انما اعطاني الصلاحيه الي انا فيها وهي ال root

لو كنت ابغا البرنامج ينقلني ويعطيني صلاحيه روت لازم يكون في شئ اسمه setuid,setgid ولازم تكون

قيمتهما صفر والصفر هو لل root .

1 - انت ليه كتبت الأداه getenv وهي موجوده في النظام ؟؟ يعني ليه ما استخدمت الأمر مباشرة

لا انا كتبتها وشغلتها بس عندي نسخه منها في /usr/local/bin وعليها شوي اضافات

المهم انا كتبت وحده بسيطه تطلع لك العنوان من ال env حق قيمه محدده .

2 - ليه العنوان اللي طلعه برنامجك اختلف عن العنوان اللي طلعه الأمر المباشر في النظام مع انك في البرنامج بتستخدم أمر النظام ؟

سؤال جميل جدا ... انا كتبت البرنامج في البدايه وكان اسمه getenv بعدها طلعت العنوان جربت العنوان

وماشتغل ...

اعتدت تسميه ملف ال getenv الى a وبعدها اعطاني عنوان جديد ... !!

طبعا السؤال ليش ؟؟

عندما تتغير القيمه الي تطلب من ال env تتغير قيمه المطلوب نفسه !! :blink:

فانا غيرت اسم البرنامج من getenv الى a وطلع عنوان واشتغل معاي .

3 - الجمله دي معناها ايه

'prel -e `print "\x90"x260'`

انا فاهم انها حتكرر nop لـ 260 مره , لكن أول مره أشوف الشكل ده

تقصد

`perl -e 'print "\x90"x260'`

هاذا الامر اني اقول لل perl يطبع 0x90 ب 260 مره .. وطبعا perl هي لغه برمجه .

استعملتها عشان اسهل الطباعه بدل ما اكتبها يدويا .

وبعدين ليه محصلش الفيض بالكم ده مع ان الـ buffer طوله 256 فقط يعني المفروض ان في فيض

صحيح , لكن حجم البفر هاذا يرجع الى اساس الكيرنل واصداره ... و العنوان الي طلعته انا هو تجربه فقط اني اعبي البافر بلكامل ب nop

وبعدها اكتب على ال ebp وبعدها يجيني ال eip واكتب عليه عنوان ال shellcode في ال env ..

الاختلاف في البفر بين اصدارات الكيرنل يسويلك مشاكل لما تبغا تكتب اكسبلوت فأغلب الاكسبلوتات الي اكتبها

هي تخرج العنوان بنفسها ....

4 - بتاع ايه السطر ده

ulimit -c unlimited

ال ulimit في ليونكس يحدد لك مساحت اشياء كثيره ... مثلا انا قلت له يجيبلي ملف ال core في اي segment fault

واقدر احدد عن طريقه اشياء كثيره .

هل هو لعمل dump للخطأ ؟ للاستفاده منه لاحقا في gdb ?

صحيح , هو راح يجيبلي ملف ال core الي فيه المعلومات الي احتاجها ..

- وده اللي حتجنني عرفت منين ان بعد 268 هي عنوان الرجوع ؟

هي ليست عنوان الرجوع انما هاذي المساحه هي التعبه على المتغير buffer وال ebp

وال 4 بايت الجايه هي خاصه بل eip فمثلا انا اغبي ادخل 268 على ال argv[1] وهو

ينقلها لل buffer عن طريق strcpy() وبكذا تنتقل المساحه بلكامل وتنكتب على المتغير نفسه

والباقي ينكتب على اماكن مثل ebp وبعدها ال 4 هي لل eip هنا اكتب عنوان الرجوع لل shellcode

في ال env ...

تم تعديل بواسطه Qnix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا على التوضيح

لكن في نقطه

انا كتبت البرنامج في البدايه وكان اسمه getenv بعدها طلعت العنوان جربت العنوان

وماشتغل ...

اعتدت تسميه ملف ال getenv الى a وبعدها اعطاني عنوان جديد ... !!

طبعا السؤال ليش ؟؟

عندما تتغير القيمه الي تطلب من ال env تتغير قيمه المطلوب نفسه !! 

فانا غيرت اسم البرنامج من getenv الى a وطلع عنوان واشتغل معاي .

انت أول ما عملت كومبايل للبرنامج وجربته بهذا الشكل

./getenv BISH

أعطاك العنوان الصحيح

BISH = 0xbffffa84

لكن بعد كده استدعيت الأمر بهذا الشكل

getenv BISH

يعني بينادي البرنامج الموجود في /bin

حتى الخرج بتاعه بيختلف عن برنامجك في الشكل

BISH is located at 0xbffffa76

لكن انت ظنيت ان الخطأ في اسم البرنامج !!! فغيرت اسمه الى a واستخدمته بالصوره الصحيحه

./a BISH

فأعطاك العنوان الصحيح مثل أول مره

BISH = 0xbffffa84

فالاختلاف كان بين برنامجك وبرنامج النظام الموجود في /bin , والذي تستخدمه أصلا داخل برنامجك , يعني المفروض انه يعطيك نفس القيمه

لكن الظاهر ان استدعاء الداله داخل السي تعطي قيمه غيرها لو استخدمت البرنامج في الـ shell مباشرة

معليش بقالي كتير ما فتحت اللينوكس

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

صحيح كلامك لكن الاداه الاولى كان مكانها

/root/dev/getenv

لاني انا كنت في هاذا الفولدر وشغلت الاداه واشتغلت على علشكل

والثانيه هي

/usr/local/bin/getenv

فكل الموجود في /usr/bin و /bin و /usr/local/bin يعملون بدون ادخال المسار بلكامل

يعني بس الاسم بيكفي .. فانا غيرت ال

/root/dev/getenv الى /root/dev/a واعطاني العنوان الصحيح ..

فالذي يأثر على العنوان هو اسم البرنامج نفسه ومسار البرنامج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السؤال هو لماذا كانت النتيجة مختلفة في البرنامجين؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Qnix dev # ./a HOME
HOME is located at 0xbffffcfe
Qnix dev # mv a bb
Qnix dev # ./bb HOME
HOME is located at 0xbffffcfc
Qnix dev # mv bb ccc
Qnix dev # ./ccc HOME
HOME is located at 0xbffffcfa

كما ترى الاسم الاول هو a

والنتيجه لل env HOME هي 0xbffffcfe

الاسم الثاني هو bb والنتيجه لنفس ال env هي 0xbffffcfc

الاثم الثالث هو ccc والنتيجه لنفس ال env هي 0xbffffcfa

ماذا تلاحض ؟

كل ماتغير اسم البرنامج الي راح يخرج عنوان ال environment يتغير العنوان ...

كل مازدنا byte واحد على السم البرنامج الي راح يطلب عنوان ال env يقل عنوان ال env ب 2 bytes

هاذا هو السبب ... وهاكذا تم بناء ال env وطريقه عمله في linux.

تم تعديل بواسطه Qnix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Qnix dev # ./a HOME
HOME is located at 0xbffffcfe
Qnix dev # mv a bb
Qnix dev # ./bb HOME
HOME is located at 0xbffffcfc
Qnix dev # mv bb ccc
Qnix dev # ./ccc HOME
HOME is located at 0xbffffcfa

كما ترى الاسم الاول هو a

والنتيجه لل env HOME هي 0xbffffcfe

الاسم الثاني هو bb والنتيجه لنفس ال env هي 0xbffffcfc

الاثم الثالث هو ccc والنتيجه لنفس ال env هي 0xbffffcfa

ماذا تلاحض ؟

كل ماتغير اسم البرنامج الي راح يخرج عنوان ال environment يتغير العنوان ...

كل مازدنا byte واحد على السم البرنامج الي راح يطلب عنوان ال env يقل عنوان ال env ب 2 bytes

هاذا هو السبب ... وهاكذا تم بناء ال env وطريقه عمله في linux.

وضحت الصوره :D , شكرا على التوضيح

معلش أصلي غبي شويه , ومفيش لينوكس دلوقتي اجرب عليه حاجه :unsure:

السؤال رقم 500 :lol: , هل تغيير صلاحية المستخدم الى root , يعني تغيير الـ user id , group id الى صفر , أمر سهل ؟؟؟؟

انا فاكر ان تغييرهم كان سهل في صلاحية الروت لأنه الوحيد القابل للتعامل مع الملفات مثل ملف كلمات المرور ( مش فاكر اسمه) الموجود في /etc

لكن اي مستخدم آخر لي له الحق في التعامل مع هذا الملف

لكن أتذكر انه في الأجهزه القديمه جدا (أهم شيء البطئ) كانت تتم عملية تغيير الصلاحيه أثناء عملية الدخول للنظام لن الملف يكون متاح في هذا الحين فقط , وطبعا كانت تحتاج شبح على الكيبورد , وجهاز ابطأ من السلحفاه :lol: , لم اجرب هذه الأمور من قبل , فلا انا شبح و الكمبيوتر عندي سلحفاه وليس ابطأ منها :lol:

آسف على الإطاله , اصلها فرصه :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السؤال رقم 500

يا أخي بدون أسألتك الموضوع راح يكون ممل ... :rolleyes:

هل تغيير صلاحية المستخدم الى root , يعني تغيير الـ user id , group id الى صفر , أمر سهل ؟؟؟؟

لو كانت صلاحيه الملف المصاب نفسه هي root مثلا عندي ملف مصاب

Qnix dev # ls -l vuln
-rwsr-sr-x  1 root root 7151 Nov 10 06:13 vuln

هاذا الملف لو اخذت عن طريقه شيل راح اكون root لان عليه +s وتعندي sudo

لكن هاذا الملف

Qnix dev # ls -l vuln2
-rwxr-xr-x  1 root root 7151 Nov 10 06:14 vuln2

ماراح يعطيني root ....

لكن في حاله ثانيه لو كان البرنامج نفسه يطلب التشغيل بل root مثلا ولازم تكون root عشان تستعمله

او ان البرنامج نفسه يضبط ال setuid وال setgid الى 0 ..

setgid(0);
setuid(0);

في هذه الحاله حتى لو الملف المصاب ماهو sudo كصلاحيه ولكن لل root ممكن تاخذ صلاحيه root

وفي حركات كثيره يعني تعتمد على نوع الثغره والطريقه ووو..ألخ

انا فاكر ان تغييرهم كان سهل في صلاحية الروت لأنه الوحيد القابل للتعامل مع الملفات مثل ملف كلمات المرور ( مش فاكر اسمه) الموجود في /etc

لكن اي مستخدم آخر لي له الحق في التعامل مع هذا الملف

ايوه ممكن لليوزر العادي طبعا يعتمد على نوع القروب وصلاحيته وصلاحيه اليوزر ... ممكن يعرض الملف

او ممكن يعرض الملف ويكتب عليه على حسب الصلاحيه .. طبعا في طرق حمايه تخلي الملفات تختفي من النظام

مثل lids وكتبت شرح عنه عن طريقه تقدر تخفي المفلات وتخلي بعض الملفات تعرض هاذا الملف او تكتب عليه

حتى ال root مايقدر يشوف الملف او يكتب عليه يعني lids له خيارات كثيره وامور كثيره وجيده للحمايه ...

لكن أتذكر انه في الأجهزه القديمه جدا (أهم شيء البطئ) كانت تتم عملية تغيير الصلاحيه أثناء عملية الدخول للنظام لن الملف يكون متاح في هذا الحين فقط , وطبعا كانت تحتاج شبح على الكيبورد , وجهاز ابطأ من السلحفاه

احلى شئ البطئ :rolleyes: ... لكن خلنا في الحاضر احسن :lol:

نسيت اذكر ان ال sudo تعني superuser do وهاذا ال sudo يمكنك عن طريقه اعطاء يوزر محدد او قروب بلكامل صلاحيه root ...

تم تعديل بواسطه Qnix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك يا Qnix , معلومات جيده :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .