
Bölüm Hedefleri
Bu bölümde bir web uygulamasının anatomisini ve HTTP işlemlerinin ağ üzerindeki gerçekleşme şeklini öğreneceksiniz. Aşağıdaki konular ele alınmaktadır:
- Web uygulamasının anatomisi
- Güvenlik Genel Bakışı
- HTTP kavramları
- HTML kavramları
- Dosya Türleri, URL’ler ve Parametreler
Bu bölümün 2. kısmında, HTTP trafiğini görüntülemek için Fiddler uygulamasını kullanacaksınız.
Web Uygulamasının Anatomisi
Web uygulamaları, son kullanıcıyla etkileşime girebilmek için birden fazla öğeye dayanan, son derece karmaşık sistemlerdir. Çoğu ticari web uygulaması, en az üç ana bileşenden oluşur:
- Web sunucusu: Web istemcilerinden (tarayıcılar) gelen istekleri kabul eden sunucudur.
- Uygulama sunucusu: Web sunucusundan gelen istekleri işleyip, doğru yanıtı oluşturur.
- Veritabanı sunucusu: Uygulama sunucusunun istediği verileri sağlar ve işler.
Örnek: Bir banka uygulamasını ele alalım. Kullanıcı, bankasının web uygulamasına girer (web sunucusu), ardından kullanıcı adı ve şifre girer (uygulama sunucusu), sunucu, veritabanından kullanıcı bilgilerini çeker ve doğruysa giriş yapılır.
Bileşenlerin bazıları organizasyon tarafından, bazıları ise dış kaynaklar tarafından geliştirilmiştir. Ayrıca bazı bileşenler raf yazılımıdır. Uygulamalar, işlevsellik açısından büyük farklılıklar gösterir. Bazı uygulamalar ASP, JSP veya .CGI tabanlıdır. Bazı uygulamalar Apache, Linux veya Windows üzerinde çalışır. Web uygulamaları, ne yaptıklarında farklılık gösterse de, bunu yapma şekilleri oldukça benzerdir. Hypertext Transfer Protocol (HTTP), web tarayıcıları, web sunucuları, proxy’ler ve ilgili web hizmeti sistemleri arasındaki bağlantıları kurma ve sürdürme kurallarını tanımlar.
Çoğu durumda, bir istemci HTTP istekleri göndererek web sunucusuyla etkileşime girer ve ardından bir yanıt bekler. Web sunucusu, genellikle HTTP yanıtını oluşturmak için uygulama sunucuları gibi diğer hizmetlerle etkileşimde bulunmak zorundadır. Ayrıca, uygulama sunucusunun, yanıtını oluşturabilmesi için veritabanını sorgulaması gerekebilir. Bu tüm süreç, Web Application (Web Uygulaması) olarak adlandırılır. Tarayıcı, en yaygın istemci olsa da, cURL, Burp Suite ve WebScarab gibi diğer araçlar da web uygulamalarıyla iletişim kurabilir ve istemciye bu etkileşimi daha hassas bir şekilde kontrol etme imkânı tanır.
Aşağıda, HTTP isteğinin tüm uygulama boyunca nasıl akabileceğine dair bir örnek gösterilmektedir:
- Sonrasında yanıt, istemciye geri gönderilir
- İstek, istemciden gönderilir
- Web sunucusu tarafından kabul edilir
- CGI betiği ve uygulama sunucusu tarafından işlenir
- Arka uç sunucusuna ve veritabanı sunucusuna işlenmek üzere gönderilir
HTTP İstek Akışı

Şekil 1: Web uygulamaları, her işlem aşamasında potansiyel olarak saldırılara açıktır.
HyperText Markup Language (HTML), tarayıcıların görüntüleyebileceği sayfaları biçimlendirmek için kullanılır. JavaScript ve CSS gibi istemci tarafı araçları, tarayıcı üzerinden ek sayfa işleme ve biçimlendirme sağlayabilir.
Web uygulaması mantığına göre, geçerli bir giriş yapılırsa, uygulama bunu nasıl işleyeceğini bilir ve geçerli bir çıkış elde edilir. Aynı mantıkla, geçersiz bir giriş yapılırsa, geçersiz bir çıkış elde edilebilir.
Web uygulamasındaki bazı sistemler geçersiz girişi işleyebilirken, diğerleri bunu yapamayabilir.
Web uygulamasının her bir bölümü, saldırılara karşı potansiyel olarak savunmasız olabilir. Bir IT yöneticisinin, dış bir kullanıcının veritabanına erişebileceğini hayal etmesi zor olsa da, böyle bir risk bulunmaktadır.
Bir örnek, bir istemciden bir uygulamaya yapılan kullanıcı adı ve şifre isteğidir. Kullanıcı bu bilgiyi girdiğinde, bu veriler tarayıcıdan gönderilir, web sunucusu tarafından kabul edilir, CGI betikleri ve uygulama sunucusu tarafından işlenir ve ardından arka uç sunucusu ile SQL veritabanı sunucusuna gönderilir ve veritabanındaki verilerle karşılaştırılır. Böyle bir senaryoda, temizlenmemiş kullanıcı girişi (web uygulaması tarafından programatik önlemler olmadan doğrudan kabul edilen kullanıcı girişi) veritabanı tarafından işlenebilir ve istenmeyen sonuçlara yol açabilir.
Eğer bir saldırgan, “usemame” alanına veritabanı komutları eklerse, SQL veritabanının site politikalarına aykırı bir şekilde çalışmasına neden olabilir. Bu tür bir saldırıya SQL enjeksiyonu denir.
Bir organizasyon bir web uygulaması dağıttığında, dünyayı bu uygulamaya HTTP istekleri göndermeye davet etmiş olur. Bu isteklere gizlenmiş birçok saldırı, yasal HTTP isteklerinin içinde yer aldıkları için genellikle güvenlik duvarlarından, filtrelerden, platform sertleştirmelerinden ve saldırı tespit sistemlerinden geçer. Bu yüzden, web uygulaması bileşenlerine bu trafiği göndermeden önce HTTP isteğinin her zaman denetlenmesi gerekir. ASM içinde, eğer HTTP isteği yasal politika uygulamasıyla eşleşiyorsa, o istek kabul edilir. Eğer HTTP isteği yasal politika ile eşleşmiyorsa, bir ihlal bildirimi yapılır ve o istek engellenebilir.
Uygulama geliştiricileri “uygulama güvenliği” terimini duyduklarında, kontrol ettikleri öğelere odaklanırlar: geliştirdikleri mantık ve veriler. Operasyon ekibi “uygulama güvenliği” terimini duyduğunda ise bu terimi daha geniş bir perspektiften yorumlayabilirler.
Bir operasyon bağlamında, “uygulama” terimi yalnızca geliştiricilerin ürettiği şeyleri değil, aynı zamanda ortamını ve kullanılan protokolleri de kapsar.
Bu, uygulama güvenliğine dair doğru bir bakış açısıdır, çünkü giderek artan sayıda uygulama katmanı saldırısı, kodda bulunan güvenlik açıklarına odaklanmak yerine, protokolün manipülasyonuna ve aynı zamanda protokolün doğal bir parçası olan meta verilere odaklanmaktadır.
Bu bağlamda, uygulama katmanı bir yığına benzer şekilde yapılandırılmıştır, tıpkı taşıma katmanının sadece TCP değil, UDP’yi de içermesi gibi.

Güvenlik Genel Görünümü
SSL (Secure Sockets Layer)
SSL, 1994 yılından bu yana standart bir güvenlik teknolojisidir. Web tarayıcısı ile web sunucusu arasındaki veri iletiminin gizliliğini ve bütünlüğünü korur. Web sunucusu tarafından sağlanan bir genel anahtar ile, sadece istemci ve sunucu arasında kullanılan bir oturum ve özel anahtar kombinasyonu ile çalışır. İlk olarak istemci, SSL (https) protokolüyle güvenli bir bağlantı kurduğu bir web uygulama sunucusuna bağlanır. Sunucu, istemciye SSL sertifikasının bir kopyasını gönderir, kendi kimlik bilgilerini ve şifreli bir bağlantı başlatmak için bir genel anahtar içerir. İstemci tarayıcısı önce SSL sertifikasının geçerliliğini doğrular. Eğer geçerliyse, istemci tarayıcısı, sunucunun genel anahtarı temelinde, kendi oturum anahtarını oluşturur, şifreler ve iletir. Web sunucusu, oturum anahtarını kendi özel anahtarı ile çözerek, şifreli bir oturum başlatır.
SSL güvenliği, istemcinin beklenen sunucu ile etkileşime girdiğini garanti eder ve iletilen veriyi korur. Ancak, sunucu veya istemci bileşenlerini doğrudan hedef alan saldırıları durdurmaz, çünkü çoğu başarılı saldırı bu şekilde gerçekleşir. Kullanıcı başarılı bir şekilde kimlik doğrulaması yapsa da, web uygulamasına hala saldırılabilir.
Sıkılaştırılmış Sunucular
Sunucu sıkılaştırma, bir sunucunun ağ ve donanım yapılandırması ile işletim sistemi veya uygulama yamalarının güncellenmesi açısından saldırılara karşı daha az savunmasız hale getirilmesini tanımlayan genel bir ifadedir. Çoğu durumda, web sunucuları, FTP sunucuları ve DNS sunucuları için sıkılaştırma için gerekli olan minimum seviyeye, tüm en son yazılım ve güvenlik yamalarının doğru şekilde uygulanması ve uygun hizmetlerin ya doğru şekilde yapılandırılması ya da tamamen devre dışı bırakılması ile ulaşılır.
Ek teknikler olarak, güçlü parola politikalarının zorunlu hale getirilmesi ve sürdürülmesi, parola yaşlandırma, tekrar eden giriş hatalarından sonra istemcilerin engellenmesi ve ayrıntılı günlükleme ve denetimlerin tutulması genellikle güvenlik araçlarının bir parçasıdır.
Sunucu sıkılaştırma, uygulama mantığı saldırılarına karşı korumada sınırlıdır, ancak yine de işletme içindeki güvenlik katmanının kritik bir bileşenidir.
Ağ Güvenlik Duvarları
Güvenlik duvarları, OSI modelinin taşıma katmanına kadar sofistike güvenlik yetenekleri sunar. İstemci, cihazınızda çalışan SSH sunucusuna port 22 engellendiği için bağlanamayabilir, ancak port 80’i engelleyemezsiniz.
Güvenlik duvarları genellikle bağlantı durumunu da izler ve doğrulanan bir bağlantının parçası olmayan paketler göndermeye çalışan istemcileri engelleyebilir. Ancak doğrulanan istemciler sunucuya belirli bir ölçüde erişebilirler.
Güvenlik duvarları, trafiği RFC uyumluluğu ve kötü niyetli desenler için inceleyebilir. Ancak birçok durumda, port 80 ile ilgili saldırılara yönelik trafik genellikle RFC uyumlu olabilir. Bu tür trafik “kötü niyetli” görünmeyebilir, bu yüzden ağ güvenlik duvarlarından geçer. Bu trafiğin verdiği zarar yalnızca uygulama bağlamında anlamlıdır. Ayrıca, siteniz SSL kullanıyorsa, güvenlik duvarı bu seviyede güvenlik sağlamaktan bile acizdir.

- Hacker, https://www.hackme.com/ adresine istek gönderir.
- Hacker, geçerli bir HTTPS isteği gönderir ve SQL enjeksiyonu içerir.
- Güvenlik duvarı SSL trafiğine izin verir.
- Hacker, yükü teslim eder.
- SQL enjeksiyonu veri ihlali, Web Uygulama Güvenlik Duvarı.
Web Uygulama Güvenlik Duvarı (WAF) Neden Kullanılır?
Web uygulamaları, internete açılan en önemli kapılardan biridir ve doğru güvenlik önlemleri alınmadığında potansiyel tehlikelerle karşı karşıya kalabiliriz. Birçok durumda, ağ yöneticileri ve güvenlik uzmanları, uygulamaları korumak için Web Uygulama Güvenlik Duvarları (WAF) kullanmaya karar verebilirler. Peki, WAF kullanmak için hangi durumlarda ihtiyaç duyulabilir? Aşağıdaki soruları kendinize sorarak web uygulamanızın güvenlik seviyesini değerlendirebilirsiniz.
1. Web uygulamanızın güvenlik açıklarını değerlendiriyor musunuz?
- Eğer evet, ne kadar süre içinde bu güvenlik açıklarını gideriyorsunuz?
- İpucu: Güvenlik açıkları hızla tespit edilebilir, ancak çözümü biraz zaman alabilir. WAF, tehditlere hızlıca yanıt verebilir.
2. Geliştirme ekibinizi dahil etmeden uygulama güvenliğini kontrol etmek ister misiniz?
- İpucu: WAF, yazılım geliştirme süreçlerinden bağımsız olarak web uygulamanızın güvenliğini sağlamak için iyi bir çözümdür.
3. Ağ güvenlik duvarları ve IDS/IPS cihazlarından geçtikten sonra, inbound (dışarıdan gelen) trafiğinizi nasıl güvence altına alıyorsunuz?
- İpucu: Web uygulamanıza yönelik tehditler, ağ güvenlik önlemleri tarafından gözden kaçabilir. WAF, bu tehditleri hedef alır.
4. PCI (Payment Card Industry) uyumluluğunuz var mı?
- İpucu: Ödeme verileriyle ilgili herhangi bir işlem yapıyorsanız, WAF PCI uyumluluğunuzu sağlayabilir.
5. Sarbanes-Oxley (SOX) uyumluluğunuz var mı?
- İpucu: SOX uyumluluğu gerektiren sektörlerdeki web uygulamalarında WAF, gerekli güvenlik önlemlerini destekler.
6. Botlar ve diğer otomatik araçlar sitenizi tarıyor mu?
- İpucu: Botlar, hassas verilere ulaşmayı amaçlayabilir. WAF, bu tür tehditleri tespit edip engellemeye yardımcı olabilir.
7. Uygulamanızın performansını yavaşlatan şeyin ağ mı olduğunu kanıtlayabilir misiniz?
- İpucu: WAF, uygulama seviyesinde performans sorunlarını tanımlamanıza yardımcı olabilir.
8. Şu anda iş ortaklarınızla iş yaparken web hizmetlerinden faydalanıyor musunuz?
- İpucu: İş ortaklarınızın güvenlik politikaları, sizin uygulamanız için risk oluşturabilir. WAF, bu riskleri azaltabilir.
9. İş ortaklarınızı kazara bir Denial of Service (DoS) saldırısına neden olmaktan güvenle muaf tutabiliyor musunuz?
- İpucu: WAF, dışarıdan gelen DoS saldırılarına karşı koruma sağlar.
10. Open Web Application Security (OWASP) Top 10 hakkında bilginiz var mı?
- İpucu: OWASP Top 10, web uygulama güvenliğinde en yaygın tehditleri sıralar. WAF, bu tehditlere karşı koruma sağlar.
#WebApplicationFirewal l#WAF #WebSecurity #ApplicationSecurity #CyberSecurity #NetworkSecurity #F5 #OWASP #SecurityBestPractices #SecureWebApps #VulnerabilityManagement #SQLInjection #XSS #DDoSProtection #HTTPSecurity #WebAppProtection