Mantıksal saldırılar bölümü bir web uygulamasının mantık akışının kötüye kullanımına veya sömürülmesine odaklanır. Uygulama mantığı belli bir eylemi gerçekleştirmek için kullanılan öngörülen prosedürel akıştır. Parola kurtarma, hesap açma, açık arttırma teklifi ve eTicaret alımları web uygulama mantığının örnekleridir. Bir web sitesi, belli bir eylemin tamamlanması için kullanıcının kendine özgü birden fazla adımlı bir işlemi gerçekleştirmesini gerek koşabilir. Bir saldırgan bu özellikleri altedip veya amaçları dışında kullanarak web sitesine veya kullanıcılarına zarar verebilir.
Fonksiyonelliğin Kötüye Kullanımı
Fonksiyonelliğin kötüye kullanılma teknikleri genellikle, gibi diğer web uygulama saldırıları kategorileri (mesela kodlama saldırısı kullanılarak uygulanan bir soru cümleciği ile bir web sorgu
fonksiyonunun uzaktan kumanda edilen bir web vekiline dönüştürülmesi) ile iç içedir. Fonksiyonelliğin kötüye kullanılma saldırıları aynı zamanda güç arttırmak amacı ile yaygın olarak kullanılır. Mesela, saldırgan bir web söyleşi sitesine XSS parçasını enjekte ederek ve sitenin "herkese gönder" fonksiyonunu kullanarak kötü amaçlı kod ile bütün siteye etki edebilir.
Geniş bir bakış açısı ile, bilgisayar tabanlı sistemlere yönelik bütün etkili saldırılar fonksiyonelliğin kötüye kullanılmasını içerirler. Özellikle, bu tanım kullanışlı bir web uygulamasının orijinal fonksiyonu çok az veya hiç bir değişikliğe uğratmadan kötü bir amaç uğruna kullanılmasını açıklar.
Örnek
Fonksiyonelliğin kötüye kullanılma örnekleri: a) bir web sitesindeki sorgulama fonksiyonunun web dizini dışındaki kısıtlanmış dosyalara ulaşılmasında kullanılması, b) bir dosya yükleme altsisteminin dahili kritik konfigürasyon dosyalarının değiştirilmesinde kullanılması, ve c) Bir web-kullancı giriş sayfasının tanımlı kullanıcı isimleri ve tanımsız parolalar ile bombardıman edilerek tanımlı kullanıcıların, belirli bir tekrar deneme limiti aşıldığı için, hesapları kilitlenerek uygulamanın servis dışı bırakma saldırısına uğratılması gibi saldırıları içerir. Diğer gerçek dünya örnekleri aşağıda açıklanmıştır.
Matt Wright FormMail
PERL tabanlı "FormMail" web uygulaması, normal olarak kullanıcı tarafından sağlanan form verilerinin önceden programlanmış bir e-mail adresine gönderilmesi için kullanılıyordu. Betik, web sitelerine geri beslemeyi sağlayacak, kullanılması kolay bir çözüm sağlıyordu. Bu nedenle, FormMail betiği çevrimiçi olarak en çok kullanılan CGI programlarından biriydi. Ne yazık ki, programın bu yüksek derecedeki kolaylığı ve kullanılabilirliği saldırganlar tarafından uzaktaki herhangi bir alıcıya e-mail yollanması suretiyle kötüye kullanılmıştı. Kısacası, bu web uygulaması tarayıcıdan tek bir web isteğiyle bir spam-rölesi motoruna (spam-relay) dönüştürülmüştü.
Saldırganın istenilen e-mail parametrelerini içeren bir URL oluşturup, CGI programına HTTP GET yollaması yeterliydi. Mesela;
http://example/cgi-bin/FormMail.pl?recipient=email@victim.example&message=you&got&spamWeb sunucunun yollayıcı olarak davranması ve web uygulamasının saldırgana tamamen vekalet etmesi ile bir e-mail üretilir. Betiğin bu versiyonunda hiç bir güvenlik mekanizması bulunmadığından, uygulanabilecek tek savunma önlemi, kullanılacak özel e-mail adresinin betiğin içine gömülmesiydi. Bu çözümün engellenmesi durumunda ise, site operatörleri web uygulamasını ya tam olarak kaldırmak ya da tamamen değiştirmek zorunda kalıyorlardı.
Macromedia'nın Cold Fusion'u
Bazen web uygulamalarının içine istenmeyen amaçlar için kolaylıkla kullanılabilen temel yönetimsel araçlar gömülürler. Örnek olarak, Macromedia'nın Cold Fusion'u kurulum ile birlikte gelen ve herkes tarafından erişilebilen bir kaynak kod görüntüleme modülüne sahiptir. Bu modülün suistimali web uygulamasında ciddi bir bilgi sızmasına yol açabilir. Çogunlukla bu tür modüller, örnek dosyalar veya kurulum dışı fonksiyonlar değil, kritik sistem bileşenleridirler. Bu durum web uygulamaları sistemlerine derinden bağlandıkları nedeniyle bu tür modüllerin kapatılmalarını problemli kılar.
Smartwin CyberOffice Alışveriş Sepeti Fiyat Değişikliği
Fonksiyonelliğin suistimali bir saldırganın web uygulamasının davranışını değiştirmek için verileri umulmadık bir şekilde bozmasıyla gerçekleşir. Mesela, CyberOffice alışveriş sepeti, web formunun içindeki gizli fiyat alanının değiştirilmesi ile suistimal edilebilir. Web sayfası normal olarak indirilir, değiştirilir ve sonra fiyat alanı istenilen herhangi bir fiyata eşitlenerek geri yollanılır.
Referanslar
“FormMail Real Name/Email Address CGI Variable Spamming Vulnerability”
http://www.securityfocus.com/bid/3955“CVE-1999-0800”
http://cve.mitre.org/cgi-bin/cvename.cgi?name=1999-0800“CA Unicenter pdmcgi.exe View Arbitrary File”
http://www.osvdb.org/displayvuln.php?osvdb_id=3247“PeopleSoft PeopleBooks Search CGI Flaw”
http://www.osvdb.org/displayvuln.php?osvdb_id=2815“iisCART2000 Upload Vulnerability”
http://secunia.com/advisories/8927/“PROTEGO Security Advisory #PSA200401”
http://www.protego.dk/advisories/200401.html“Price modification possible in CyberOffice Shopping Cart”
http://archives.neohapsis.com/archives/bugtraq/2000-10/0011.htmlServis Dışı Bırakma
Servis Dışı Bırakma (DoS) bir web sitesini normal kullanıcı aktivitesinden alıkoymak amacı ile yapılan bir saldırı tekniğidir. Genel olarak network tabakasına kolaylıkla uygulanabilen DoS saldırıları uygulama tabakasında da mümkündür. Bu kötü niyetli saldırılar bir sistemi kritik kaynaklarından mahrum bırakarak, bir açıklığın gerçekleyerek veya bir fonksiyonu suistimal ederek başarıya ulaşabilirler.
Bir çok zaman DoS saldırıları bir web sitesinin varolan bütün sistem kaynaklarını bitirmeye çalışırlar, bu kaynaklara örnek olarak; CPU, hafıza, disk yeri, v.b. verilebilir. Bu kritik kaynaklardan herhangi biri tam güç kullanıldığında, web sitesi normal olarak erişilemez olacaktır.
Bugünün web uygulamaları bir web sunucusu, veritabanı sunucusu ve bir yetkilendirme sunucusu içerdiğinden, uygulama tabakasındaki bir DoS, bu birbirinden bağımsız bileşenlerden herhangi birini hedef alabilir. Çok büyük miktarda bağlantı teşebbüsü gerektiren network tabakasındaki DoS'dan farklı olarak, uygulama tabakasındaki DoS çok daha kolay uygulanabilir bir iştir.
Örnek
Medikal geçmiş raporu üreten bir Sağlık Bakımı web sitesi düşünün. Web sitesi, her rapor isteğinde, tek bir sosyal güvenlik numarasına karşılık gelen bütün kayıtları getirmesi için bir veritabanını sorgulamaktadır. Veritabanında bütün kullanıcılar için yüzbinlerce kayıt tutulduğundan, kullanıcılar kendi kayıtlarını görebilmek için 3dk beklemek zorundadırlar. Bu 3dk boyunca, karşılık gelen kayıtları ararken, veritabanı sunucusunun CPU'su %60 yoğunlukla çalışmaktadır.
Basit bir uygulama tabakası DoS saldırısı, medikal geçmiş raporu üretilmesi için 10 isteğin aynı anda gönderilmesi olacaktır. Bu istekler, veritabanı sunucusunun CPU'sunu %100 yoğunluğa ulaştıracağından web sitesini büyük bir ihtimalle hizmet dışı durumuna sokacaktır. Bu noktada sistem normal kullanıcı aktivitesine servis veremez hale gelecektir.
Belli bir Kullanıcıyı Hedef Alan DoS
Saldırgan belli bir kullanıcı adı ve bilinçli olarak üretilmiş yanlış bir parola ile bir web sitesine girmek isteyecektir. Bu işlem en sonunda kullanıcı adı kullanılan kişinin hesabını kitleyecektir.
Veritabanını Hedef Alan DoS
Saldırgan veritabanını değiştirip sistemi kullanılmaz hale getirmek (Bütün veriyi, kullanıcı adlarını silerek, v.b.) için SQL Enjeksiyonu tekniklerini kullanacaktır.
Web Sunucusunu Hedef Alan DoS
Saldırgan, web sunucusu işini (proses) sonlandıran özel olarak hazırlanmış bir istek göndermek için arabellek taşması tekniklerini kullanacak ve sistemi normal kullanıcı aktivitelerine erişilmez hale getirecektir.
Yetersiz Anti-otomasyon
Yetersiz anti-otomasyon, bir web sitesinin saldırgana normalde manual olarak (elle) yapması gereken bir işi otomatik olarak yapabilmesine izin verdiği durumdur. Bazı web sitesi fkonsiyonları otomatikleştirilmiş saldırılara karşı korunmalıdır.
Göz önünde bulundurulmamış otomatik robotlar (programlar) veya saldırganlar, web sitesinin fonksiyonlarını sistemi sömürmek veya dolandırmak için tekrar tekrar kullanabilirler. Otomatik bir robot bir dakika içinde binlerce istek çalıştırıp potansiyel iş ve servis kaybına neden olur.
Mesela, otomatik bir robot bir kaç dakika içinde onbinlerce yeni hesap açamamalıdır. Benzer olarak, otomatik robotlar diğer kullanıcıları mesaj tahtalarına tekrar tekrar mesaj yollayarak taciz edememelidirler. Bu operasyonlar sadece insanların kullanabileceği operasyonlar olarak kısıtlanmalıdırlar.
Referanslar
Telling Humans Apart (Automatically)
http://www.captcha.net/“Ravaged by Robots!”, By Randal L. Schwartz
http://www.webtechniques.com/archives/2001/12/perl/“.Net Components Make Visual Verification Easier”, By JingDong (Jordan) Zhang
http://go.cadwire.net/?3870,3,1“Vorras Antibot”
http://www.vorras.com/products/antibot/“Inaccessibility of Visually-Oriented Anti-Robot Tests”
http://www.w3.org/TR/2003/WD-turingtest-20031105/Yetersiz İş Tasdiki (Denetimi)
Yetersiz İş Denetimi bir web sitesinin saldırgana uygulamanın istenilen kontrol akışını baypas edebilmesine veya atlamasına izin verdiği durumdur. Eğer kullanıcı durumu bir iş süresince denetlenmiyor ve uygulanmıyorsa, web sitesi sömürülmeye veya dolandırılıcılığa açık olabilir.
Bir kullanıcı belli bir web sitesi fonksiyonunu gerçeklediğinde, uygulama, kullanıcının açık ve sıralı bir diziyi izlemesini bekleyebilir. Eğer kullanıcı bazı adımları yanlış veya hatalı bir şekilde gerçeklerse, bir veri bütünlüğü hatası oluşur. Bir kaç adımlı işler para transferi, parola kurtarılması, satın alma, hesap açma v.b. örneklerini kapsar. Bu işler büyük ihtimalle bazı adımların umulduğu gibi gerçekleştirilmesini zorunlu tutacaktır.
Bir çok adımlı işlerin doğru dürüst çalışması için, web siteler kullanıcıların durumlarını kullanıcılar iş akışını gezerken tutmak zorundadırlar. Web siteleri kullanıcı durumlarını izlemek için normal olarak çerezler veya gizli HTML alanlarını kullanırlar. Ancak, izleme bilgisi istemci tarafında tarayıcıda (browser) tutulursa verinin bütünlüğü denetlenmelidir. Eğer denetlenmezse, saldırgan güncel durumunu değiştirerek umulan trafik akışını atlatabilir.
Örnek
Çevrimiçi bir alış veriş sepeti sistemi, müşterilerine bir A ürünü satın alındığında belli bir indirim sağlayabilir. Kullanıcı, A ürününü yerine bir B ürününü almak isteyebilir. Kullanıcı, sepetini ürün A ve B ile doldurarak ve hesap kesim işlemini gerçekleyerek indirimden faydalanabilir. Daha sonra kullanıcı hesap kesim işleminden geri çıkıp, A ürününü sepetten siler veya bir sonraki adımı yollamadan değerleri değiştirir. Kullanıcı daha sonra tekrar hesap kesim işleminden geçer ve daha önce sepetindeki A ürününden dolayı indirimden faydalanmış bir şekilde dolandırılmış bir alım fiyatı elde etmiş olur.
Referanslar
“Dos and Don'ts of Client Authentication on the Web”, Kevin Fu, Emil Sit, Kendra Smith, Nick Feamster - MIT Laboratory for Computer Science
http://cookies.lcs.mit.edu/pubs/webauth:tr.pdfAlıntıdır