Exploit Kullanimi ve Hatalari
Exploit Nedir, Nasil Kullanilir (Bölüm I)
Isletim sistemlerinin,çok kullanici ile sistemlerde kullanilmaya baslamasiyla birlikte sistemlerde kullanicilarin yetkisi de söz konusu olmustur.
Kisisel isletim Sistemlerinde (örnegin DOS) sistemi ayni anda tek kullanici kullandigi için bütün dosyalara erisebilir, okuyabilir vs. Ancak ayni anda pek çok kisi tarafindan kullanilan Isletim sistemlerinde sistemin bir yöneticisi olmak zorundadir ki bu Novell’de supervisor, Unix ve clone’larinda root, NT’de administrator olarak adlandirilir.
Iste bu çok kullanicili sistemlerde yetkisini artirmak isteyen normal kullanicilar sistemde daha yetkili hale gelebilmek için "exploit" dedigimiz programlar yazmislardir.
Exploitler isletim sistemi üzerindeki herhangi bir programin eksikliginden yararlanarak kullaniciyi daha yetkili hale getirmeye yararlar.
Exploitler local ve remote olarak ikiye ayrilir. Local exploitler isletim sisteminin bir kullanicisiyken uygulanabilir, remote exploitlerde ise sistemin bir kullanicisi olmaniza gerek !
yoktur. Sistem açiklari ve bu açiklari kullanmak için yazilmis exploitler günden güne artmakta ve her sistem açigi için patch’ler yazilmakta.
Bazi Isletim Sistemleri için örnek exploitler:
"overflow" exploiti (FreeBSD’de lprm açigi):
Pointer aritmetigini kullanarak (Pointer degiskenler degiskenin içindeki bilgiyle birlikte bellek adresini de tutarlar) tampon bellege (buffer) bir string kopyalayarak tasma olusturur. Sistemdeki lprm komutunu kullanir. lprm komutu uzaktaki bir yaziciya gönderilen bir isi iptal etmeye yarar. "lprm -P bloggs" komutuyla is iptal edilebilirken kuyruktaki ikinci bir is ayni anda "lprm -P bloggs bloggs" la iptal edilebilir. Bu da buffer owerflow hatasi meydana getirir. Bu sayede "root" erisimi saglanir. Lokal bir exploittir.
Derleyici ve /tmp Hatalari (Solaris’de gcc tempfile açigi):
Gcc derleyicisinin 2.7.2.x ve önceki sürümlerinde /tmp dizinine (geçici islemlerin yürütüldügü dizin. Windows dizini altindaki temp dizini gibi) sembolik link (bir dosyaya ya da dizine ulasabilmek için konan linkler. Windows’taki. lnk dosyalari gibi) olusturulur ve bu linkten yararlanarak yerel root hakki alinir.
Program Hatalari (Linux’daki X11Amp Programi açigi):
X11Amp çalistirildiginda ~./X11amp isminde bir dosya olusturur. Bu hatayi linux’ta söyle kullanabilirsiniz:
mkdir ~/.x11amp
ln -s /etc/shadow ~/.x11amp/ekl
Bu komutlari yazdiktan sonra X11Amp’i çalistirip "ekl" ’yi seçin bütün girisleri seçip silin. Program çakilacak ve /etc/shadow dosyasini alabileceksiniz.
Microsoft’un FrontPage Server Extensions’unda karsilasilan açiklar: Frontpage extensions’un kullanildigi web sitelerinde pek çok açik bulmak mümkün, örnegin Frontpage 98’de dizin erisim haklari iyi düzenlenmedigi için _vti_pvt dizini "WORLD WRITABLE" :) olarak düzenlenmis. _vti_pvt dizininde ise "service.pwd" dosyasinda sifreler tutulmakta ;)
Exploit Nedir, Nasil Kullanilir (Bölüm II)
Bug Nedir?
Bug, kisaca bir isletim sistemi üzerinde bazi hatali programlar yüzünden meydana gelen sistem açikligidir. Bu sistem üzerine kopyalanmis bir oyundan,bir mail programindan yada sistem üzerinde ki IRC programindan bile meydana gelebilir. Bu hatalar bizim sistem de r00t seviyesine çikmamizi saglarlar :-)
mount/umount açigindan baslayabiliriz mesela,
Sistemde /bin dizinine gidin ve umount yada mount isminde bir dosya arayin.. Eger bulamadiysaniz su komutu yazabilirsiniz.
find / -name umount -print -xdev
Dosyanin nerde oldugunu buldugunuzda, o dizine gidip dosyanin özelliklerini görmek için su komutu yazin,
ls -al um*
Eger dosyanin sahibi r00t sa ,kesinlikle sistemi kapabiliriz.. Bakalim,
avanak:/bin# ls -al um*
-rwsr-sr-x 1 root 8888 Aug 20 1998 umount
avanak:/bin#
Tamam, artik isler çok çok kolaylasti. Simdi isimiz bir exploit e kaldi. Verecegim exploit sayesinde sistemden takir takir r00t alabileceksiniz :-) Bu exploit i ,sisteme yollayip orada compile etmelisiniz. Bunu yapmak için su komutu yazin.
gcc umount.c -o umount (umount yerine istediginiz ismi yazabilirsiniz)
Gcc komutu sayesinde sistemde umount adinda çalistirilabilir bir dosya yaraticaksiniz..
Not : Eger Exploit çalismazsa,komutun basina ./ takisini koymayi deneyin. Ve ardindan 0 - 8 arasi bir sayi ekleyin.Sunun gibi;
../umount 4
yada
../umount 2
Ve sistem elleriniz de ! Artik hersey size kalmis.r00t un neler yapabilecegini anlatmama gerek yok sanirim,
+-+-+-+-+-+-+
Eger bu yol ise yaramazsa(ki bu beni bayagi sasirtir),simdi anlatacagim yolu denemeniz gerekecek. En sevdigim Exploit bu diyebilirim. Çünkü en kolayi ve de su ana kadar bana hiç sorun yüzü göstermedi. "usr/bin" dizininde splitvt isminde bir dosya arayin. Eger dosya SUID ise yani sahibi r00t ise, olayi bitti sayabiliriz. Bu exploiti sadece "Linux 2-0.3*" sistemlerde kullanabilirsiniz.
Bakalim bu sey nasil çalisiyor?
Dosyayi tabiî ki ilk olarak sisteme yollayin Ilk önce degisikligi fark etmeniz için "whoami" komutu ile kim oldugunuzu ögrenin. Kullanici isminiz ortaya çikacak,
1. Dosyayi "gcc" derleyicisi ile exec(çalistirilabilir) hale getirin, (gcc sp.c sp)
2. Derlediginiz dosyayi çalistirin,
3. "splitvt" adli dosyayi çalistirin,
Isiniz bittikten sonra yine "whoami" komutunu çalistirin.O da ne? r00t da kim yahu? :-)
+-+-+-+-+-+-+
Bu da çalismadi diyelim( ki olamaz mümküniyeti yok) Tüm Linux dagitimlarinda bulunan bir bug vardir. SendMail bug i, eger buglari takip ediyorsaniz, kesinlikle duymus olmaniz lazim. Ben uzun süredir bu bug la ilgilenmiyordum. Belki patch i bile çikmistir :( ..Ama denemek te zarar yok diyorsaniz bu kisa exploit i hemen download edin(sm.sh)
...Sisteme yollayin,
Simdi dosyayi , chmod +x leyin.
chmod +x sm.sh
1 . Dosyayi çalistirin,
2 . Sizi /tmp dizinine gönderecek,
3 . "ls -l" yazin,
4 . Orda SUID bir sh dosyayi oldugunu göreceksiniz,
5 . "whoami" yazip r00t olup olmadiginiza bakin, eger degilseniz,
6 . "./sh" yazin, ve simdi r00t oldugunuzu görebileceksiniz..
+-+-+-++-+-+-+
Biraz Linux u birakip diger sistemlere göz atalim.
Simdi dalacagimiz sistem bir SunOS.
UnixBased bir sistem çok az farkliliklari var.Mesela SunOS ta "gcc" komutu yerine "cc" komutu kullaniliyor.Fakat bunlara pek ihtiyacimiz yok.Çünkü simdi ki sistem de exploit kullanmayacagiz.SunOS taki 3-4 tane bug tan bir tanesi "dtappgather" komutunun bir bug i. Ben daha önceden bunu bilmiyordum.Geçenlerde göz attigimiz bir SunOS sistemde SegFault ,sayesinde ögrenmis oldum.Fakat o sistemde çalismadi.Neyse fazla söze gerek yok.
Baslayalim,
Sistemde "dtappgather" adinda bir dosya bulunmasi lazim,bu genelde /var/dt de bulunuyor.Dosyayi buldunuzsa sorun kalmadi.Bu dosya varsa "generic" de vardir.Tamam simdi /var/dt/appconfig dizinine girin.
$ ls -al
total 6
drwxr-xr-x 3 root root 512 Feb 3 14:22 .
drwxr-xr-x 5 root root 512 Jun 22 11:08 ..
drwxr-xr-x 4 root root 512 Jun 22 10:24 appmanager
$
"generic" dosyasi appmanager adli dizinin içinde bulunuyor.Simdi burada yazacagimiz tek bir komut /etc/shadow
dizinindeki unshadowed passwd dosyasini ele geçirmemizi saglayacak.Komut su ;
$ ln -s /etc/shadow /var/dt/appconfig/appmanager/generic-display-0
Bunu yazdiktan sonra elimize passwd dosyasi geçiyor,artik onu bir Passwd Cracker la kirdiktan sonra elimize r00t un sifresi de geçer.