Web Tabanlı Saldırılar
World wide web ve kullandığı protokoller/formatlar/diller (HTTP, HTML, JavaScript, vb.) başlangıçta güvenlik düşünülerek tasarlanmamıştır. Varsayılan olarak, web sayfaları aldıkları içeriğin kötü amaçlı olmadığına güvenir. Komut dosyaları, komutlar, çerezler vb. dolaylı olarak güvenilirdir. Web teknolojileri o kadar popüler hale geldi ki saldırganlar için ortak bir hedef haline geldi ve geliştiriciler bu teknolojilerin güvenli olmasını istiyorlarsa belirteçler kullanmalı, verileri sterilize etmeli ve girdileri kontrol etmelidir.
Açık Web Uygulama Güvenliği Projesi (OWASP) web uygulama güvenliği için harika bir kaynaktır. Web uygulaması güvenlik risklerinin ilk 10 listesini tutmaktadırlar. 2021 itibariyle, OWASP ilk 10'u şöyledir:
- Bozuk Erişim Kontrolü
- Kriptografik Hatalar
- Enjeksiyon
- Güvensiz Tasarım
- Güvenlik Yanlış Yapılandırması
- Hassas ve Eski Bileşenler
- Tanımlama ve Kimlik Doğrulama Hataları
- Yazılım ve Veri Bütünlüğü Hataları
- Güvenlik Günlüğü ve İzleme Hataları
- Sunucu Tarafı İstek Sahteciliği
XSS
Siteler arası komut dosyası oluşturma, kötü bir aktörün bir web sitesine bir komut dosyası enjekte edebileceği işlemi ifade eder. Birçok web sitesinin formlardan girdi aldığını ve daha sonra bu verileri başka bir sayfada görüntüleyebileceğini hatırlayın. Eğer bu veri sadece veri değil de aslında bir JavaScript betiği ise, bu betik onu görüntüleyen sayfada çalışabilir.
Saldırganlar bu tekniği kullanarak çerezlere, oturum belirteçlerine ve diğer hassas bilgilere erişebilir. Komut dosyasının nereye enjekte edildiğine ve sunucunun bu verileri nasıl görüntülediğine bağlı olarak, komut dosyası hedef sunucuda kalıcı olarak saklanabilir. XSS komut dosyaları da yansıtılabilir, genellikle yalnızca bir oturum için kullanıldıkları bağlantılarda gönderilir.
XSS risklerini azaltmak için bir web geliştiricisinin girdilerini sterilize etmesi önemlidir. Bir form gönderildiğinde, web sitesi gönderilen verilerin bir komut dosyası veya başka bir kötü amaçlı içerik olup olmadığını kontrol etmelidir. Veriler temizlenemiyorsa saklanmamalı veya kullanılmamalıdır.
| Samy Worm |
| 4 Ekim 2005’te bir XSS solucanı o zamanın baskın sosyal ağı olan MySpace’e yayıldı. Solucan, Samy Kamkar tarafından basit bir gönderi olarak yazılmıştır ve okunduğunda izleyici makinenin “ama en önemlisi, samy benim kahramanım” yazan ve yayılacak kodu içeren kendi gönderisini yapmasına neden olacaktır. Sonuçlar, 20 saat içinde bir milyondan fazla kullanıcının görev yükünü çalıştırmış olmasıydı. Şimdi Samy önde gelen bir güvenlik danışmanı ve solucanla ilgili tüm teknik açıklamasını buradan okuyabilirsiniz. Vice Motherboard da Greatest Moments in Hacking History serisi için Samy ile ilgili bir bölüm hazırladı. |
CSRF
Siteler Arası İstek Sahteciliği (CSRF), kimliği zaten doğrulanmış bir oturumun, bu oturumun parçası olmayan bir istekte kullanılmasını içerir. Twitter'a giriş yaptığınızı düşünün. Bir saldırgan size GMail'de bir form bağlantısı gönderiyor ve bu bağlantı tıklandığında "Ben bir CSRF kurbanıyım" yazan bir tweet gönderiyor. Twitter'ın form gönderimini kabul ettiğini varsayarsak, artık zaman akışınızda "Ben bir CSRF kurbanıyım" yazan bir tweetiniz olacak.
Bu muhtemelen en iyi huylu senaryodur, bir çevrimiçi bankacılık uygulamasında işlerin çok daha kötü olabileceğini hayal edebilirsiniz. Çözüm, web sitesinin (bu durumda Twitter) bir CSRF belirteci kullanmasıdır (ki kullanıyor). Form oluşturulduğunda, gizli bir girdi olarak rastgele bir değer eklenir. Bu rastgele, gizli girdi CSRF belirtecidir. Bir gönderim yapıldığında, gönderilen CSRF belirteci form için oluşturulan belirteçle eşleşmiyorsa (bunu yalnızca geçerli web sitesi bilir) gönderim kabul edilmez.
CSRF belirteçleri, web uygulamalarının tasarım gereği güvenli olmak yerine nasıl proaktif güvenlik gerektirdiğinin bir başka örneğidir. Çoğu web uygulaması bunları kullanır, ancak bir geliştiricinin unutması kolay olabilir.
SSRF
Web sistemleri genellikle bilgi almak için dahili sunucularla iletişim kurar. Bunlar API sunucuları, veritabanları veya mesajlaşma sunucuları olabilir. Bir saldırgan bir web sunucusunu kandırarak kötü niyetli bir isteği dahili sunucusuna iletebilirse, saldırgan sistemin dahili güvenini kötüye kullanabilir. Bu, sunucu tarafı istek sahteciliği (SSRF) olarak adlandırılır. Bir kez daha; bu tür bir saldırı, uygulamaya dahil edilmesi gereken girdi doğrulama ile hafifletilir.
Oturum Korsanlığı
Oturum ele geçirme başka tehlikeye atma yöntemleri içerebilir, ancak nihai amaç kurban ile başka bir sunucu arasındaki bir oturumu "çalmaktır". Aşağıdaki senaryoyu hayal edin: Bir kişi kişisel bankacılık web sitesine giriş yapıyor ve bu web sitesi ona kimliğinin doğrulandığını kanıtlayan bir çerez veriyor. Kötü bir aktör, tüm bağlantı çerezlerini kendilerine ileten bir XSS istismarı aracılığıyla bağlantıları izliyor. Kötü aktör, kullanıcının banka hesabından kötü aktörün banka hesabına bir transfer yapmak için verilen çerezi kullanır.
Kullanılan yönteme bağlı olarak, oturum ele geçirme daha iyi bir oturum anahtarı kullanılarak veya bağlanmak için aktarım katmanı güvenliği (TLS) gerektirerek önlenebilir. Yukarıdaki senaryoda oturum ele geçirmeyi önlemenin tek yolu ilk XSS açığını onarmak olacaktır.
SQL Enjeksiyonu
SSRF bölümünde de belirtildiği gibi, neredeyse tüm web sistemleri dahili olarak çalışan diğer sunucular tarafından desteklenmektedir. En yaygın senaryolardan biri, dahili bir veritabanına ulaşan bir web sunucusuna sahip olmaktır. İlişkisel veritabanları yapılandırılmış sorgu dilini (SQL) kullanır, bu nedenle bir web uygulaması düzenli işlemleri sırasında birçok farklı SQL sorgusu oluşturabilir. Bir kullanıcı girdisi doğrudan sorguya yerleştirilirse, sonucun amaçlanmayan bir şekilde işlemesi veya veritabanından gizli bilgiler elde edilmesi mümkün olabilir.
Aşağıdaki PHP koduna bir göz atın:
$userName = $_POST['user_name'] $pw = $_POST['password'] $statement = "SELECT * FROM users WHERE name='" + $userName + "' AND password='" + $pw + "';" |
Kullanıcı_adı admin ve parola password olduğu durumda, aşağıdaki SQL oluşturulur: SELECT * FROM users WHERE name='admin' AND password='password';
Kullanıcı_adı admin ve parolanın ' OR 1=1; olduğu durumda, aşağıdaki SQL oluşturulur: SELECT * FROM users WHERE name='admin' AND password='' OR 1=1;
Bu ikinci durumda, bir kullanıcı geçerli bir parolaya ihtiyaç duymadan oturum açabilir.
XML Enjeksiyonu
XML, genişletilebilir biçimlendirme dili anlamına gelir ve genellikle mesajları aktarmak için kullanılır. XML, bir web sistemi altyapısının önemli bir parçası olabilir ve bu nedenle sanitize edilmemiş kullanıcı girdilerinin sistemde kullanılan XML'i oluşturmasına izin verilirse birçok şey yanlış gidebilir. Bir saldırgan XML enjeksiyonu kullanarak gizli dosyaları alabilir veya yönetici hesapları oluşturabilir. XML enjeksiyonu, girdi doğrulaması veya kullanılan çerçevede harici varlıkların çözümlenmesinin devre dışı bırakılmasıyla azaltılabilir.
LDAP Enjeksiyonu
Son olarak, Hafif Dizin Erişim Protokolü (LDAP) genellikle kullanıcılar hakkında bilgi depolamak için kullanılır. Bu nedenle, birçok web uygulamasının arkasında bulunabilir. LDAP ayrıca SQL'e benzer şekilde karmaşık sorguları da destekler. Standartlaştırılmamış bir kullanıcı girdisi, beklenmedik sonuçlar veren bir LDAP sorgusuna yol açabilir.
Dizin Çaprazlama
Kötü tasarlanmış bir web sunucusu dizin çağrazlama saldırısına maruz kalabilir. Web sunucularının, örneğin /var/www gibi belirli bir dizinden statik içerik sunmak üzere tasarlandığını hatırlayın. Şimdi bir saldırganın http://www.example.com/../../etc/shadow için bir GET isteği gönderdiğini varsayalım. Web sunucusunun aslında iki dizin yukarı çıkıp bu dosyayı sunması mümkündür.
Bu durum dosya izinleri, erişim kontrolleri ve gelen taleplerin filtrelenmesi ile ele alınabilir. Bir HTTP isteğinde URL kodlaması kullanmak da dahil olmak üzere bir yol belirtmenin birden fazla yolu olduğunu unutmamak önemlidir, bu nedenle olası tüm kötü amaçlı girdiler sterilize edilmelidir.
URL Hijacking/Typosquating
Ne yazık ki yaygın ve geniş tabanlı bir saldırı; çok popüler bir alan adına benzer bir adla alan adı satın almaktır. Kullanıcılar popüler alan adını yanlış yazdıklarında kendilerini kötü niyetli aktörün web sitesinde bulurlar. Örneğin, birinin gooogle.com adresini kaydettirdiğini düşünün (üç o'ya dikkat edin). Google'ı yanlış yazan insanlardan çok fazla trafik elde edebilirler.
Bu siteler reklam geliri, kimlik avı bilgileri ve hatta muhtemelen kötü amaçlı yazılım dağıtmak için kullanılabilir. Birçok tarayıcının uyguladığı bir hafifletme, kötü amaçlı web sitelerinin bir listesini tutmak ve kullanıcıları ziyaret etmeden önce uyarmaktır.
Alan Adı Korsanlığı
Alan adları belirli bir süre sonra sona erer ve kayıt sahibi yenilemeyi unutabilir. Bu nadir durumlarda bir saldırgan, örneğin google.com gibi popüler bir alan adının kontrolünü ele geçirebilir ve trafiği kendi sitesine yönlendirebilir. Kötü niyetli faaliyetler yazım hatası ile aynıdır, ancak saldırganın kullanıcıların hata yapmasına güvenmesine gerek yoktur.
Çalınan/denetlenen kimlik bilgilerini kullanarak alan adı kayıt sistemine giriş yaparak bir alan adını ele geçirmek de mümkündür. Bu senaryoda bir saldırgan yine de bir kaydı kendi sunucusunu gösterecek şekilde değiştirebilir, ancak şirketin yenilemeyi unutmasına güvenmek zorunda kalmaz.
Bölge Transfer Saldırıları
Alan adı sistemi konusunda, bölge transferi saldırıları alan adları hakkındaki hassas bilgileri sızdırabilir. DNS tasarımı gereği dağıtık bir sistemdir ve alan adlarını IP adreslerine çözümlemek için kullanılır. Sistemin dağıtılmış doğası nedeniyle, birden fazla sunucu tarafından sunulan tek bir etki alanına sahip olmak için protokoller oluşturulmuştur. Bu sunucular DNS bölge aktarımını kullanarak birbirlerine bilgi aktarırlar.
Bölge ile ilgili değerli bilgiler sızdırabileceğinden, bu iletişimler genellikle dahili olmalıdır. Ne yazık ki yanlış yapılandırılmış bir DNS sunucusu bölge aktarımlarını herkese açık olarak duyurabilir. Böyle bir durumda saldırgan, sızdırılan bilgileri bir saldırının yeniden başlatma aşamasında kullanabilir.
Tık Hırsızlığı
Bir web sitesi, arayüzü kullanıcının kafasını karıştıracak ve yanlışlıkla bir reklama veya kötü niyetli bir bağlantıya tıklamasına neden olacak şekilde tasarlanmış olabilir. Bu, yayın siteleri, torrent izleyicileri ve yetişkinlere yönelik web siteleri gibi bütünlüğü düşük web sitelerinde yaygın bir uygulamadır. Bu durum genellikle zayıf bir reklam taraması ya da kasıtlı olarak içeriğe benzeyen reklamlar yapılması nedeniyle karmaşık bir hal alır.
Önceki Ders: İsim Çözümleme Saldırıları
Sonraki Ders: Saldırılar - Sonuçlar
Yorumlar
Yorum Gönder