Web Uygulama Güvenliği ve Çalışma Mimarisi

Merhaba Arkadaşlar

Web uygulamalarının en temelinde bulunan ve günümüzde sıklıkla kullanılan (www) yani (World Wide Web) olarak adlandırılan,internet üzerinden yayın yapan çeşitli grafik ve uygulama arayüzlerine sahip olan bilgi sistemleri bütünü diyebiliriz.Dünya çapında günümüzde milyonlarca hatta daha fazla şekilde yayında olan web uygulamalarına insanlar telefonlarındaki tarayıcılar/uygulamalar veya  bilgisayarında bulunan web tarayıcısına da bilgisayarda bulunan bilgisayar uygulamaları sayesinde ulaşabilmektedir.Web uygulamalarını incelediğimizde gerek web siteleri gerek uygulamalar kısmında birçok multimedya öğeleri bulunabilir ve diğer bağlantı yada link adı verilen hiper-bağlantılar ile başka web sayfalarına geçiş yapılabilir.İnternet ve web terimlerini aynı terim karşılamaz çünkü web internet üzerinde çalışan bir servistir.

Web uygulamalarının temel tarihine bakmak gerekirse ilk defa web teriminin dünyamıza girmesini sağlayan kişi CERN de çalışan ve programcı olan Tim Berners-Lee’nin HTML teknolojisini ortaya çıkarmasından sonra oluşmuştur.Bu noktada internet altyapısını kullanarak çalışma mantığına dayanan HTML tabanlı Web protokolü internet olmadan lokal olarak çok fazla verim sağlamadığından ötürü internetin sağladığı mekanizmalar ile beraber dünya geneline çeşitli hiper-metin/link editörleri vasıtası ile bağlantı kurulmasını sağlayan bir sisteme dönüştürülmüştür.

Web protokolü aslında internet uygulamalarının en tepesinde yer alan bağımsız bir alan olarak görebiliriz.İnternet ortamında kişilerin yeni fikirlerini projelerini düşündüklerini paylaşmasına olanak sağlar.Web uygulamasının çalışma mantığındanda bahsetmek gerekirse Web uygulama sunucuları genelde http sunucuları veya http deameons (httpd) sunucuları denilmektedir.Sunucular ile istemciler arasındaki ilişkide Web sunucularının iş paylarını şu şekilde açıklayabiliriz.Tarayıcı istemcinin isteğini sunucuya iletir. İsim sunucularının, domain isimlerinin,adres isimlerinin ve fiziksel konumların tutulduğu diğer araçlarla iletir.Bilgiler sunucuya geldiği an sunucu onları başka bir işleme gönderir ve bir süre bekler. Cevabı aldığı taktirde nesneyi hedef tarayıcıya gönderir.

Web tarayıcıları bir çok değişik ve anlamlı parçayı bir arada tutar.Web sayfaları yapısı gereği ağ üzerinde bir çok nesnenin objesini tutabilmektedir.Son kullanıcıya giden veri esasında hepsinin bir bütün olarak geri sunmasından kaynaklanmaktadır.URL dediğimiz sekme ise ilgili web istemcisinin ihtiyacı olan erişim yönlendirmesini ona bağlı sunucu ismini belirterek yönlendirilmesini sağlar.Peki bir web sitesinin işleyişi nasıl bunu açıklamak gerekirse.Bir firma olarak bir web sitesi kurmak istiyorsunuz.Bunun için bir domain adı belirlemeniz gerekmektedir.Domain adını belirledikten sonra tescil kaydını yapan bir hosting e giderek ilgili alan adını en az 1 sene geçerli olucak şekilde firmaya tescil ettiriyorsunuz.Tabi bu alan adının bir sayısal kimliğininde olması gerekiyor.Örneğin bir yere gitmek istiyorsunuz ve adrese ihtiyacınız var salt isimle bir yere gidemezsiniz bir bir sokak ismi,cadde numarası veya kapı numarası sizin işinizi kolaylaştırır.Burda da nasıl örnekteki gibi bir adrese ihtiyacımız varsa internette de bir siteye girmek için o sitenin adına ihtiyacımız vardır. Günümüzde web sunucuları veya hizmet sunucularının İnternet aleminde ip adresi dediğimiz numaralar vasıtası ile iletişim kurmaktadır.Tabi burda milyonlarca hizmet ve içerik sağlayan servislerin olduğunu düşünürsek kullanıcıların herhangi bir hizmete erişir iken IP adreslerini akıllarında tutmaları çok zor olacağından internet dünyasında bunun çözümü sunan sizlerin isim sorgulama esnasında arka planda ip leri çözümleyen DNS servisleri vardır.Siz kurum olarak alan adını tescil ettirdiğinizde hangi dns sunucusunda alan adına ait IP adresi bulunacak ise kayıt yapan hosting firmasına bu bilgi verilir.Böylece alan adına ait IP adresi tüm dünyadaki internet kullanıcıları tarafından erişilebilir duruma gelir.Web uygulamalarının yayınlanmasını kısaca ana noktasını açıklamak gerekirse internet ve web uygulamaları örnekte görüldüğü üzere bütünleşik çalışan bir sistemdir.Gerek lokal gerekse küresel ölçekte bir web sitesini ziyaret etmek istediğimizde internet altyapısına her zaman ihtiyac duymaktayız.

Web uygulamalarına eğer dünya ölçeğinde gerekli temel hazırlıkları ile yayına sürdü iseniz,herhangi bir program veya yükleme işlemine gerek duymaksızın sadece html editörü destekleyen web taracıları ile dünyanın herhangi bir yerinden erişim sağlayabilirsiniz.

Web uygulmalarının çalışma mantığından biraz bahsetmek gerekirse bir çok katmandan oluşan bir mimarinin olduğunu görebilirsiniz.Web uygulamaları masa üstü uygulamalarına oranla daha karmaşık bir yapıya sahiptir.Web uygulamalarının içeriğine baktığımızda bir uygulamanın içerisinde en az 10 farklı mimari ve modelin kullanıldığını görebilirsiniz.Bunun yanında gelişen yazılım teknolojileri ile birlikte bu sayı günden güne dahada artmaktadır.Tabiki gelişen teknolojilere rağmen standart temel mimariler çok fazla değişmemektedir.Kısaca bu mimarilerden bahsetmek gerekirse;

Birinci Kısım (Veri Katmanı): Tüm verilerin kaydedildiği, sorgulandığı ve saklandığı katmandır. Bu katmanın yüksek performanslı olması şarttır, çünkü ölçeklenebilir web uygulamalarının uygulanmasında en büyük engel veri katmanının performansıdır.

İkinci Kısım (Veri Erişim Katmanı): Bu katman verilere ulaşım şeklini belirler ve veritabanı ile uygulama arasında bir arabirim görevi görmektedir. Asıl amacı veriye kolay ulaşım ve ölçeklenebilirliktir.

Üçüncü Kısım(Uygulama Katmanı): Uygulamanın temelini oluşturan objelerin ve uygulama mantığının yürüdüğü katmandır.

Dördüncü Kısım (Görüntüleme Mantığı Katmanı): Bu katmanda işlenen veriler istemci tarafına gönderilmek üzere hazırlanır. Görüntülemenin nasıl oluşacağını, görüntülenecek bileşenleri belirler.

Beşinci Kısım (Görsel Kullanıcı Arayüzü Katmanı): Web uygulamalarının bu son katmanında veriler kullanıcı tarafında gönderilmekte ve görsellik dahil hangi verinin nerede ve ne şekilde gösterileceği belirlenir, kullanıcının uygulamayı daha dinamik kullanması için gereken interaktiviteler yer alır.

Teknoloji  kısmında web uygulama teknolojilerinde kullanıcılara birçok şekilde pratik ve kullanışlı olması büyük bir avantaj sağlar.Bu durumu teknik açıdan ele aldığımızda işletim sisteminden bağımsız olarak çalışan web tabanlı uygulamalar site yönetimi için büyük avantaj sağlar. Kullanıcılara ayrı ayrı işletim sistemlerine göre ulaşmak yerine tüm kullanıcı grubuna tek komut ile ulaşma imkanı sağlayan web tabanlı uygulamalar sayesinde bilgisayarında herhangi bir tarayıcı olan kullanıcı web adresinize kolayca ulaşarak web adresi hangi alanda hizmet veriyorsa o hizmetleri kullanabilirsiniz.Bunun için sadece kullanıcı tarayıcısını açar ve web adresi üzerinden istediği işlemleri yaparak hizmetlere ulaşabilir.

Web uygulamalarına erişim için yazılım için herhangi bir yükseltme ve yama işlemi gerekmez. Bu gibi durumlar gerekirse sunucu yazılımı sağlayıcı firma tarafından takip edilerek belirli aralıklarla bu işlemler sağlanacaktır. Web tabanlı uygulamanın en önemli avantajlarından biri de sistem çökme gibi durumlardır. Web tabanlı uygulamalarla bu durumları dert etmenize gerek kalmaz. Gerektiği takdirde hemen farklı bir cihaza geçerek işlemlerinize devam edebilirsiniz.

Web uygulamalarını kısaca tanımladıktan sonra kullanılan sistemlerin açıklarının tespit edilmesi konusuna geçebiliriz.

WEB Uygulama Açıklarının Tespit Edilmesi

Web uygulamaları günümüzde milyonlar hatta milyarlarca kişi tarafından tercih edilmesi günümüzde saldırılarında odak noktası haline getirmiştir.Bir çok web uygulaması farklı diller ve teknolojileri barındırması ile beraber güvenlik noktasında çeşitli uygulama katmanları yazılsada program açıkları veya sorgu açıklarından çok rahat bir şekilde index atma yetkile alma ve çeşitli zararlı empoze etme gibi işlemlerde yapılabilmektedir.

Web uygulama açıklarını bulabilmek için öncelikle uygulama açıklarının tanımları ne nasıl çalıştıklarını anlamak gerekiyor.Bunları detaylıca açıklamak gerekirse ilk olarak XSS açıklarından başlamak gerektiği düşüncesindeyim.

Cross Site Scripting (XSS):Günümüzde Web uygulama hizmetlerinde küresel ölçekte incelendiğinde bir çok farklı zafiyet bulgularına erişebilirsiniz.Bu zafiyetlerin arasında adı sıkça duyulan cross-site scripting (XSS) zafiyeti gelmektedir.XSS açığı genellikle injection tarzında olan bilgi sömürmeye yönelik bir zafiyet açığıdır. Bu zafiyetin genel çalışma mantığı kullanıcının uygulamaya girmesi sonucu ortaya çıkmaktadır.Özellikle javascript teknolojileri ile bilgi sömürmeye yarayan bu açıklık uygulama üzerine zararlı kodları entegre ederek saldırı moduna geçebilmesidir.Son kullanıcı tarafında genellikle fark edilmesi imkansız olan oldukça sinsi bir şekilde çalışan zafiyet türüdür.Çalışma mantığında son kullanıcıya hissetirmeden bulaşması sağlanır.Bu sayede en çok bilinen etkileri arasında yetki alma olarak bilinen en alt düzeyden en üst düzeye kadar kendini auth. edebilmesi dahilinde işlem yapılmasına olanak sağlar. Bu tarz durumların önüne geçmek adına, geliştiriciler kullanıcıdan aldığı girdileri kontrol altına alınması tavsiye edilmektedir.

XSS Zafiyeti ile Neler Yapabiliriz ?

*Html Meta Refrash tekniği ile ilgili hedef sayfa yönlendirme(routing) edebiliriz.

*Html kaynaklı kod blokları kullanarak input yerleştirebilir akabinde dataların sızmasını sağlayabiliriz.

*Iframe tekniği ile sitenin alt sayaları çağrılıp data çekilebilir.

*Hedef web sayfasına  üzerinde bulunan Html ve CSS teknikleri vasıtası ile hedefin görsel içeriği değiştirilebilir ve istediğiniz şekilde düzenleyebilirsiniz.

*Bunun dışında Session Hijacking tekniğinin kullanılması ile birlikte document.cookies bilgilerine ulaşarak kullanıcıların oturum bilgilerinin çalınmasını sağlayabiliriz.

*Javascript içerisinde saldırganlar tarafından sıklıkla kullanılan “addEventListener” fonksiyonu sayesinde ilgili kullanıcının bilgisayar üzerindeki eylemsel bütün faliyetlerini loglayarak istediğimiz bir sunucu üzerinde veya taşınabilir harici beller ile beraber loglayabiliriz.

Kısaca javascript kodu ile yapabileceğiniz her türlü işlemleri yapabilirsiniz. Bu artık üretkenliğinize kalan bir durumdur.Bunun dışında saldırı araçları açısından en tehlikeli araçlar javascript kullanılarak gerçekleştirilen saldırılardır.Dinamik sorgulama tekniğine sahip olan javascriptler genellikle ciddi zafiyetler üzerinde oldukça etkili olabilmektedir.

Peki bu kadar yayın olan XSS saldırılarının çalışma prensipleri nelerdir.XSS saldırılarının temel prensibi kullanıcılardan alınan verilerin hiç bir filter mekanizmasından geçmeden işleme girmesidir.Bu veri girişlerini değerlendirdiğimizde kullanıcılardan ilgili hedef sisteme gönderilen çeşitli yazılımsal kod değerleri olabilir.Bunların içerisinde session id değerlerinden tutun http headerları aracılığı ile gönderilen değerlere kadar bir çok veri herhangi bir süzgeçten geçmeyerek doğrudan kullanılmasından kaynaklanır.Karşıdaki her zaman sıradan bir son kullanıcı olmayabilir. Bu hiçbir zaman göz ardı edilmemelidir. Geliştirilen her uygulama için kullanıcıları saldırgan olarak düşünüp uygulamayı o yönde geliştirmek gerekir.Bir sonraki Makalede XSS açığı ile alakalı uygulamalı gösterim yapacağım.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

error: Content is protected !!