Symlink Nedir? Symlink ile Web Hacking
Symlink (sembolik link), bir dosya ya da dizinin referansını tutan, dosya sistemlerinde kullanılan bir dosya türüdür. Bir dosyanın sembolik bağlantısı, asıl dosya veya dizine referans verir. Bu referanslar, çoğu durumda, mutlak veya göreceli yol isimleri kullanarak tanımlanır. Sembolik bağlantılar, aynı dosyanın farklı adlar altında kullanılmasını sağlar. Örneğin, bir dizinin sembolik bağlantısı, bu dizinin başka bir yere yerleştirilmiş gibi kullanılmasını sağlar.
Symlink, web hacking saldırılarında da sıklıkla kullanılır. Örneğin, web sunucularının alt dizinlerinde yer alan dosyaları hedef almak için kullanılabilir. Bu tür saldırılarda, saldırgan, sitenin sunucusunda bulunan web uygulamasının bağlantılarını değiştirerek, hassas dosyalara erişebilir. Bu tür saldırılarda, saldırgan, sembolik bağlantıların hedef dosyaların bulunduğu dizine işaret ettiğinden emin olmalıdır. Saldırgan, sembolik bağlantıların hedef dizinin izinlerini ve sunucunun dosya sistemi yapısını da bilmelidir. Ayrıca, sembolik bağlantıların hedef dizinlerine erişim izni olmadan saldırı gerçekleştirilemez.
Örnek verecek olursak;
Bir web sitesinde, kullanıcının profil resimleri için yükleyebileceği bir alan olduğunu varsayalım. Bu resimler, web sunucusunda belirli bir klasöre yüklenir. Diyelim ki bu klasörün yolu:
/home/user/public_html/images/
olsun.
Bir saldırgan, web sunucusuna girdiğinde, bu klasörün izinlerini kontrol eder ve yazma izni olan bir symlink (sembolik bağlantı) oluşturur. Saldırgan, symlink'i bir başka klasöre veya sunucuya bağlayarak, saldırıya uğrayan web sitesindeki kritik dosyalara veya veritabanlarına erişebilir.
Örneğin, saldırgan /home/user/public_html/images/klasor1/ dizinine bir symlink oluşturur ve bu symlink'i /etc/passwd dosyasına bağlar. Ardından, saldırgan, saldırıya uğrayan web sitesinde bir istek gönderirken, isteğin hedefi olan resim yükleme alanına /home/user/public_html/images/klasor1/etc/passwd yolunu verir. Bu sayede, saldırgan, hedef dosyaya erişebilir ve hassas bilgileri ele geçirebilir.
Bu nedenle, web sunucularında symlink saldırılarına karşı korunmak için gerekli önlemler alınması önemlidir. Bunlar arasında izinlerin sıkı bir şekilde kontrol edilmesi, symlink oluşturmanın engellenmesi veya sınırlanması ve güvenlik açığı tespit sistemlerinin kullanılması yer alabilir.
Symlink Saldırısını Engelleme
Aşağıdaki senaryoda bir Symlink saldırısını önleme örneği:
- Varsayalım ki bir web sunucusunda "example.com" adında bir web sitesi barındırılıyor ve bu site için "/home/user1/example.com" dizini kullanılıyor.
- Bir saldırgan, "/home/user2/malicious/" dizininde kötü amaçlı bir betik barındırıyor ve bu betiğin "example.com" sitesinde çalıştırılmasını amaçlıyor.
- Saldırgan, "/home/user2/malicious/" dizinindeki kötü amaçlı betiği "/home/user1/example.com/public_html/img/malicious.jpg" adı altında bir sembolik bağlantı olarak oluşturur.
- Saldırgan, "example.com" sitesindeki bir sayfada bu sembolik bağlantıya bağlantı verir ve kullanıcılar bu bağlantıyı tıkladıklarında kötü amaçlı betik çalıştırılır.
- Bu saldırıyı önlemek için, web sunucusu yöneticisi "/home/user1/example.com" dizinine sadece "user1" kullanıcısının erişebileceğinden emin olabilir. Bu, saldırganın "/home/user2" dizinindeki dosyalara erişememesini ve sembolik bağlantı oluşturamamasını sağlar.
- Ayrıca, web sunucusu yöneticisi sembolik bağlantı oluşturmaya izin verilmemesi için Apache konfigürasyon dosyalarında "FollowSymLinks" direktifini "SymLinksIfOwnerMatch" ile değiştirebilir. Bu, yalnızca sembolik bağlantıların dosya sahibi tarafından oluşturulmasına izin verir ve böylece saldırganların sembolik bağlantılar oluşturmasını önler.
Symlink Engellemesini Bypass Etme
Symlink engellemeleri, web sitelerinin güvenliğini arttırmak için yaygın olarak kullanılan bir yöntemdir. Ancak, bazı durumlarda symlink engellemeleri bypass edilebilir.
Örneğin, symlink engellemesi, bir web sitesindeki dosyalara doğrudan erişimi engellemek için kullanılır. Ancak, bir saldırgan, symlink engellemesi bypass ederek, hedef web sitesindeki dosyalara erişebilir.
Bununla birlikte, symlink engellemesini bypass etmek, yasadışı bir eylemdir ve sadece web sitesi sahibinin önceden izni ile gerçekleştirilebilir. Aksi takdirde, bu tür bir eylem, yasal sonuçlara yol açabilir.
Bu nedenle, symlink engellemesi bypass etmek gibi yasadışı eylemler yerine, web sitelerinin güvenliğini arttırmak için doğru yöntemler kullanılmalıdır. Bunlar arasında, web sitelerinin güvenliği için gerekli olan tüm güncellemelerin yapılması, güçlü parolaların kullanılması ve giriş yapan kullanıcıların kimlik doğrulama gereksinimlerinin artırılması gibi önlemler yer alabilir.