1. Ana Sayfa
  2. Siber Güvenlik
  3. Web Uygulama Sızma Testleri – Bölüm 1

Web Uygulama Sızma Testleri – Bölüm 1

web uygulama sızma testleri
3

Web Uygulama Sızma Testleri – Bölüm 1- Web uygulamalarına yönelik sızma testleri gerçekleştirebilmek için öncelikle bir web sitesinin nasıl çalıştığını anlamak gerekmektedir. Kısaca web sitelerinin nasıl çalıştığına bakalım.

Web Uygulama Sızma Testleri

Bildiğimiz üzere web siteleri bir kullanıcı (client) birde sunucu (server) arasındaki yaşam döngüsü içerisinde istek (request) ve cevap (response) ile çalışmaktadır.

Bu döngüyü http veya https adını verdiğimiz bağlantı protokolleri üzerinden gerçekleştiririz.

Http Nedir Nasıl Çalışır?

http ve https protokolu nedir
HTTP & HTTPS

HTTP & HTTPS

HTTP (The Hypertext Transfer Protocol – Hiper Metin Aktarma İletişim Kuralı) ve HTTPS (Hypertext Transfer Protocol Secure – Hiper Metin Aktarma Güvenli İletişim Kuralı), bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim kuralıdır.HTTPS, HTTP’ye göre daha gelişmiş ve daha güvenli bir iletişim kuralı olup, dokümanda bu iki iletişim protokolü ve çalışma prensipleri incelenecektir.

HTTP

HTTP, İnternette sunucular ve son kullanıcılar arasında bilgilerin nasıl aktarılacağına dair kurallar ve yöntemleri düzenleyen uygulama katmanında çalışan bir iletişim protokolüdür. Web sitesi görüntülemek ve üzerinde çeşitli işlemler yapmak için kullanılır.

HTTP/0.9 ve 1.0’da bağlantı tek bir “request-response” (istek-cevap) aşaması ardından kapanır. HTTP/1.1’de bağlantının birden fazla istek için kullanıldığı “keep-alive-mechanism” (hayatta-tutma-mekanizması) tanıtıldı. Böyle kalıcı bağlantılar sezilebilir gecikmeleri azaltır, çünkü istemci ilk istek yollandıktan sonra tekrar TCP bağlantısını onaylatmak zorunda kalmaz.

Sürüm 1.1, HTTP/1.0’a göre bant genişliğini en uygun hale getirmiştir. Sunum 1.1’deki bir diğer geliştirme ise sunucunun, istemci tarafından açıkça istenilen kaynağın bir kısmını ilettiği “byte serving” (byte sunma)’dir. Bu da band genişliği anlamında avantaj sağlamaktadır.HTTP oturumu ağ üzerindeki “request-response” işleminin bir aşamasıdır. HTTP istemcisi istekte bulunur.

İstemci belli bir port üzerinden TCP (Transmission Control Protocol – Aktarım Kontrolü İletişim Kuralı) bağlantısı kurar (Genellikle 80. porttan). O port üzerinde dinlemekte olan HTTP sunucusu istemcinin istek mesajını bekler. İstek ulaştığında sunucu durum sinyalini geri döner. Sinyalde örnek olarak “HTTP/1.1 200 OK” ve ardından muhtemelen istenilen kaynağın gövde metni, hata mesajı veya bazı diğer bilgiler bulunabilir.

İstek Yöntemleri

HTTP istenilen eylemin tanımlanan kaynakta gerçekleşmesi için dokuz yol tanımlar:

GET (AL): Belirtilmiş kaynağın ifadesini ister.
HEAD (KONU): “GET” isteğine karşılık gelen yanıtı ister, ama yanıtın gövdesini görüntülemez. Bütün içeriği taşımadan yanıt başlığındaki önbilgiye ulaşmak için kullanılır.
OPTIONS (SEÇENEKLER): Sunucunun belirtilmiş URL için desteklediği HTTP yöntemlerini döndürür.
POST (ATA): Tanımlanmış kaynağa işlenecek veriyi kaydeder. Veri isteğin gövde kısmında yer alır.
PUT (KOY): Belirtilmiş kaynağın temsil metnini yükler.
DELETE (SİL): Belirtilmiş kaynağı siler.
TRACE (İZLE): İstemcilerin orta dereceli sunucularda değişiklik veya ekleme yapılıp yapılmadığını görmesi için ulaşan isteği yankılar.
CONNECT (BAĞLAN): Genellikle şifrelenmemiş HTTP vekili üzerinden SSL-şifreli (Secure Sockets Layer – Güvenli Soket Katmanı) iletişime olanak sağlamak için, istek bağlantısını transparan TCP/IP tüneline dönüştürür.
PATCH (YAMA):  Kaynakta kısmi değişiklikler uygulamak için kullanılır.

HTTP sunucuları en azından GET, HEAD ve mümkünse OPTIONS metotlarını bulundurmalıdır.

HTTPS

HTTPS, HTTP ile SSL/TLS (Secure Sockets Layer/Transport Layer Security – Güvenli Soket Katmanı/Aktarım Katmanı Güvenliği) iletişim kurallarının şifrelenmiş iletişim ve güvenli tanımlama amacıyla birleşimidir. Varsayılan olarak 443’üncü porttan bağlantı kurar.

HTTPS ’in asıl amacı güvenli olmayan bir iletişim ağı üzerinden güvenli bir kanal oluşturmaktır. Bu yöntem hattı dinlemek isteyenlere karşı yeterli korumayı da sağlar. Banka Web-sayfaları veya yüksek güvenlik gerektiren uygulamalarda tercih edilir.

HTTPS’e özgü güvenlik, tarayıcı yazılımıyla gelen başlıca sertifika sahiplerine dayanır. Bu, “Kime güveneceğimi söylemesi için sertifika sahibine güveniyorum.” demekle aynı şeydir. Bu yüzden bir Web sayfasına olan HTTPS bağlantısına yalnızca aşağıdakiler geçerliyse güvenilebilir:

  • Kullanıcının, tarayıcı yazılımının HTTPS’i düzgün bir şekilde önceden yüklenmiş sertifikalarla birlikte sağladığına güvenmesi.
  • Kullanıcının, sertifika sahibine sadece yasal Web sayfalarını yanlış yönlendirici isimler olmadan doğrulaması için güvenmesi.
  • Web sayfasının güvenilir yetkili tarafından imzalanan geçerli sertifika sağlaması. (Geçerli olmayan sertifika çoğu tarayıcıda uyarı verir.)
  • Sertifikanın Web sayfasını düzgün bir şekilde tanımlaması.

Http protokolünü ve nasıl çalıştığını anladığımıza göre bir web sunucusu nasıl çalışır? Modern bir web nasıl çalışır? Mantığı nedir? Bunu anlamamız gerekmektedir. Aksi takdirde scriptkiddie olmaktan öteye gidilemez.

-Web Uygulama Sızma Testleri-

datacenter server
Datacenter Server Room

Sunucular Nasıl Çalışır?

Bir bilgisayarla karşılaştırıldığında, sunucular daha fazla belleğe, birden çok ağ bağlantısına, birden fazla sabit sürücüye ve CPU’ya sahiptir. Bu nedenle çok kısa sürede bir web sayfasını oluşturan kodları aynı anda binlerce hatta milyonlarca kişinin görüntülemesini sağlayabilirler.

Bir web sunucusunun ağının dışındaki kullanıcılar tarafından erişilebilmesi için bir IP adresine ihtiyacı vardır.

Her bir web sitesinin de alan adı / domain denen site adresine karşılık gelen 0 ile 255 arasında dört sayının birleşiminden oluşan IP adresi vardır: 255.21.122.123 gibi.

İnternet kullanıcılarını ve web sitelerini IP adresleri sayesinde birbirine bağlayan DNS (The Domain Name System) sistemi; bir tarayıcının adres çubuğuna yazılan site adresini ilgili IP adresine dönüştürür.

Böylece; DNS ve IP sistemi; bir kullanıcının bir bağlantıyı tıklamasıyla istenen içeriği; depolandığı sunucudan kullanıcının bilgisayarına iletir.

Yani metin, görsel, video gibi web sitesine ait görüntülenmek istenen içerik sunucu yani server tarafından, ziyaretçiye sunulmuş, servis edilmiş olur.

Bu işlem için; Nginx ve Apache gibi yazılımların; istekleri analiz edip ziyaretçinin tarayıcısında ilgili belgeleri görüntüleyecek sunucularda yüklü olması gerekir.

Sunucular Ne İşe Yarar?

Sunucular veri toplama, iletme, web sitelerini ve online oyunlar gibi uygulamaları barındırma, bir ağdaki birden çok bilgisayarın veri paylaşmasını sağlama gibi farklı kullanım alanlarına sahiptir.

Video ve radyo yayını yapmaktan, telefon santrali ve Voip gibi ses transferi işlemlerine, sanal özel ağlar (VPN) kurmanızı sağlamaktan yedeklemeye kadar çeşitli amaçlara hizmet eden çok sayıda sunucu türünden bazılarını sıralayalım.

Sunucu Türleri

  • Veritabanı sunucusu (Database Server)
    Ağda veri tabanı depolama ve alma işlemlerine ayrılmış olan, veri tabanı yönetim sistemini ve veri tabanlarını tutan sunucu türdür. İstemci cihazların istekleri üzerine, seçilen kayıtları aramak için veri tabanında arama yapar ve sonuçları geri gönderir.
  • Dosya Sunucusu (File Server)
    Dosya sunucusu, diğer bilgisayarların kullanımına sunulan dosyaları içeren bir sunucu türüdür. Dosya sunucuları, ağdaki diğer istemciler tarafından kullanılabilir hale getirilen belge, resim, video ve diğer veri dosyalarını depolar ve yönetir.
  • DNS Sunucusu (DNS Server)
    Domainleri ve bunlara karşılık gelen genel IP adreslerini barındıran bir cihazdır. Adres çubuğuna yazdığınız alan adını IP adresine dönüştürmekten sorumludur.
  • Web Sunucusu (Web Server)
    Web sunucusu, web sitelerine ait dosyaları barındırmaktan ve bir web tarayıcısı üzerinden sunmaktan sorumludur.
  • Uygulama Sunucusu
    Uygulamaları çalıştırmak için özel olarak tasarlanmış sunuculardır. Web uygulamalarını çalıştırma, sanal makineleri yöneten bir hipervizöre ev sahipliği yapma, başka bir sunucudan gönderilen verileri işleme, yazılım güncellemelerini dağıtma ve izleme gibi amaçlar için kullanılır.
  • E-posta Sunucusu (Mail Server)
    Mail sunucusu, e-postaları kurumsal ağlar ve internet üzerinden taşır ve depolar.
  • Online Oyun Sunucusu (Game Server)
    Oyun sunucuları dünya çapında yüzlerce oyuncunun oyun verilerine erişmesi için kullanılan harici bir sunucudur. Xbox Live ve Playstation, oyun sunucuları kullanmaktadır.
  • Proxy Sunucu (Proxy Server)
    Proxy sunucusu, bir istemci (web tarayıcısı veya bir uygulama) ile harici bir sunucu arasında; performans artırmak, bağlantıları paylaşmak, istekleri filtrelemek gibi işlemler için aracı görevi görür.
  • VPN Sunucusu (VPN Server)
    VPN hizmetlerini barındırmak ve sunmak için yapılandırılmış fiziksel veya sanal bir sunucudur. VPN istemcilerinin güvenli bir özel ağa bağlanmasına izin veren bir VPN donanımını ve VPN yazılımını içerir.

Web Sitesi Sahiplerinin Sunucularla İlgili Bilmesi Gerekenler

web uygulama sızma testleri
Advanced Web Attacks and Exploitation
  • Web sitesini internette yayımlamak isteyen herkes, bir hosting sağlayıcısının sunucularından belli bir alan veya sunucunun tamamını kiralamak zorundadır.
  • Genellikle blog dünyasına yeni adım atanlara ya da küçük çaplı web sitelerine sahip kullanıcılara önerilen paylaşımlı hosting paketleri; bir sunucunun kaynaklarının çok sayıda web sitesi tarafından paylaşıldığı en uygun fiyatlı hosting çözümüdür.
  • Sanal sunucular; VPS ve VDS olarak adlandırılan türlere sahiptir. Web siteleri, paylaşımlı hostinge göre sanal sunucular üzerinde daha yalıtılmış ortamlarda barındırılır. VPS’te web siteleri birbirini etkileyebilir ama VDS’te kaynaklar paylaşımsızdır ve siteler birbirinin performansından etkilenmezler.
  • Dedicated sunucu denen ve fiziksel sunucu olarak da bilinen sunucular, performansı ve maliyeti en yüksek sunucu türüdür. Bir Dedicated sunucu tümüyle tek bir kullanıcıya atanır. Kiralık sunucu olarak da adlandırılan Dedicated sunucuda kaynaklar tamamen kullanıcıya özel olduğundan kullanıcı; istediği yazılımları yükleyebilir, ister çok büyük bir web sitesi isterse bir sürü web sitesi barındırabilir.
  • Bulut Sunucu, birçok fiziksel sunucudan oluşan bir ağın sanal sunuculara bölünmesi anlamına gelir. Sitenizin yedeği birden fazla sunucuda depolanır ve bu yedekli yapı sayesinde kesintisiz erişim sağlanır. Ayrıca ölçeklenebilirlik söz konusu olduğunda kolaylıkla kaynak artırımı yapılabilir.
  • Sunucuya yüklenen yazılım, üzerinde barındırılacak web sitelerinin programlama dili ile doğrudan ilişkilidir (Windows – ASP , Linux- PHP). PHP ile yazılan WordPress için Linux Hosting ya da WordPress Hosting denen barındırma çözümleri kullanılabilir.
  • Bir sunucuyu “sunucu” yapan işlevler işletim sistemine gömülüdür.
  • Bir sunucunun gücü işlemci (CPU), bellek (RAM) gibi parçalarına bağlıdır.
  • Bir web sunucusu arızalanma, doğal afet gibi bir sebeple kapanırsa, site adresi doğru girilse bile ziyaretçiler sunucu üzerinde barınan web sitelerine ulaşamaz. Ancak bulut sunucular için yedekli yapıları nedeniyle bu durum söz konusu değildir.
  • Bir web sunucusu, sıkça istenen içeriğin yayınlanmasını hızlandırmak için içeriği önbelleğe alabilir. Bu işlem web sitelerinin hızlı yüklenmesini sağlar.

İşletmeler Sunucuları Ne İçin Kullanır?

Tüm bilgisayar programlarının ve yazılımların; işletim sistemi türü (Microsoft, Mac, Linux, UNIX…) ve CPU ihtiyaçları gibi donanım gereksinimleri bulunur.

Örneğin Word ve Excel gibi basit programlar karmaşık donanım gerektirmez ve çoğu masaüstü bilgisayarda çalıştırılabilir. Ancak, çoğu kurumsal düzeydeki yazılım, daha gelişmiş donanımlar gerektirir.

Bu nedenle bir disk veya kişisel bilgisayarda çalıştırılamayan bu tip yazılımlar; şirket içi bir sunucuya veya müşterilerin internet üzerinden erişebildiği bulut tabanlı bir sunucuya kurulur.

Örneğin muhasebe yazılımları gibi birçok yazılım uygulaması özel bir sunucuya kurularak, birden fazla çalışanın verilere erişmesi ve düzenlemesi sağlanır.

Çalışanlar bir sunucu içinde yönetilen veri tabanındaki bilgileri güncelleyebilir ve daha sonra diğer çalışanlar güncellenen verileri görüntüleyebilir.

Bu şekilde işletmelerin iş akışının sürekliliği verimli bir şekilde sağlanır.

Çoğu işletme e-posta sistemiweb siteleri gibi verilerini kendi yerel ağında bulunan özel sunucularda barındırmayı tercih edebilir.

Web Uygulama Sızma Testleri -Özet-

Sunucular hakkında web sitesi sahiplerinin bilmesi gerekenleri sıralayarak ve Sunucu Nedir? sorusunu yanıtlayarak, hosting hizmetine dair kararlarınızı netleştirmeye çalıştık. Web uygulama sızma testi konusunun giriş kısmını tamamladık.

Bir web sitesini hızlandırmanın ilk ve en etkili adımı, depolandığı sunucunun güçlü ve son teknoloji donanımlara sahip olması ve iyi yapılandırılmasıdır.

Genel tanımıyla sunucu nedir nasıl çalışır ve sunucu tiplerini öğrendiğimize göre bir web sunucusunun en önemli elemanlarından olan web servislerine bir bakalım temel olarak bir web servisi ne yapar ? (Apache, Nginx, IIS) Ben örnek olması açısından bir apache server yani apache web servisi ne yapar nasıl çalışır onu anlatacağım.

website responsive web design
Responsive Web Desig

Bu hafta web uygulama sızma testlerine giriş yaptık. Önümüzdeki hafta kaldığımız yerden devam ederek, Web Server ve Veri Tabanı konularını ele alacağız.

Yorum Yap

Yazar Hakkında

2005 de bilgisayar ile 2009 da Hacking ile tanıştım halen de severek kendimi geliştirmeye devam etmekteyim.

Yorum Yap

Yorumlar (3)

Bir cevap yazın

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