Açık Yönlendirme Nedir?
Yeniden yönlendirmenin hedefi istemci tarafından sağlandığında ve filtrelenmediğinde veya doğrulanmadığında bir açık yeniden yönlendirme güvenlik açığı vardır. Güvenli yönlendirmelere ve güvenli olmayan yönlendirmelere ilişkin bazı örnekler:
Yasal web sitesi istemciyi sabit bir URL'ye yönlendiriyorsa, bu güvenli bir yönlendirmedir.
Yasal web sitesi, kullanıcı tarafından sağlanan parametrelere dayalı olarak yeniden yönlendirme URL'sini güvenli bir şekilde oluşturuyorsa, bu güvenli bir yönlendirmedir.
Yasal web sitesi, kullanıcı tarafından sağlanan parametrelere dayalı olarak yeniden yönlendirme URL'si oluşturuyorsa ancak girişi yeterince doğrulamıyor/filtrelemiyorsa, bu güvenli olmayan bir yönlendirmedir (saldırgan girişi değiştirebilir).
Yasal web sitesi, kullanıcının hedef yönlendirme URL'sini belirlemesine izin veriyorsa, bu güvenli olmayan bir yönlendirmedir (açık yönlendirme).
Genel olarak, dinamik yönlendirmeler kullanan geliştiriciler (istemciden gelen verilere dayanarak), bu tür verileri güvenilmeyen girdi olarak değerlendirmelidir. Aksi takdirde, saldırgan tarayıcıyı kötü amaçlı bir siteye yönlendirecek ve kurbanı kandırmak için alan adınızı kullanacaktır.
Örneğin, alan adınız example.com ise, saldırgan aşağıdaki URL'yi oluşturabilir:
https://example.com/redirect.php?url=http://attacker.com
Saldırgan daha sonra bu URL'yi, kurbanı kötü niyetli bir saldırgan.com web sitesine yönlendirmek için bir kimlik avı girişiminin parçası olarak gönderebilir . Saldırgan , başlangıçta example.com'un güvenilir bir görünüme sahip olacağını ve kimlik avı dolandırıcılığına düşmesini umacaktır.
Açık Yönlendirme Örneği
Aşağıdaki basit PHP kodu, açık bir yönlendirme oluşturur:
$redirect = $_GET['url']; header("Location: " . $redirect);
Saldırgan, GET isteğinin url parametre değerinde kötü amaçlı bir web sitesi URL'si sağlayabileceğinden ve bu hedef URL daha sonra Konum başlığı olarak gönderilerek istemciyi kötü amaçlı bir web sayfasına yönlendireceğinden, bu bir açık yeniden yönlendirme güvenlik açığıdır.
Açık Yeniden Yönlendirme Güvenlik Açıklarının Sonuçları
Açık bir yeniden yönlendirme güvenlik açığınız varsa, diğer birçok saldırıyı mümkün kılar:
Kimlik avı: Açık yönlendirme kullanmanın en belirgin yolu, kurbanı orijinal siteden aynı görünen bir siteye yönlendirmek, kullanıcı kimlik bilgilerini çalmak ve ardından hiçbir şey olmamış gibi savunmasız web sitesine geri dönmektir.
Siteler Arası Komut Dosyası Çalıştırma (XSS) : Yönlendirme data: veya javascript: protokollerinin kullanımına izin veriyorsa ve istemci yönlendirmelerde bu tür protokolleri destekliyorsa, saldırganın bir XSS saldırısı gerçekleştirmesini mümkün kılar.
Sunucu Tarafı İstek Sahteciliği (SSRF) : SSRF filtrelerinden kaçınmak için açık yönlendirmeler kullanılabilir.
İçerik-Güvenlik-Politikası atlama: XSS'ye karşı koruma sağlamak için CSP kullanıyorsanız ve beyaz listedeki etki alanlarından birinin açık yönlendirmesi varsa, bu güvenlik açığı CSP'yi atlamak için kullanılabilir.
CRLF Injection : Yeniden yönlendirme parametresi satır kesmelerine izin veriyorsa, saldırgan yanıt üstbilgisini bölmeyi deneyebilir.
Açık Yönlendirmeler Nasıl Önlenir
Açık yeniden yönlendirme güvenlik açıklarını önlemenin en güvenli yolu, web uygulamalarınızda herhangi bir yönlendirme kullanmamaktır. Bu mümkün değilse, aşağıdaki yaklaşımları deneyebilirsiniz:
Sabit hedef sayfaların bir listesini kullanın. Tam URL'lerini bir veritabanı tablosunda saklayın ve URL'lerin kendileri değil, istek parametreleri olarak tanımlayıcıları kullanarak onları arayın. Örneğin, http://example2.com'u 42 tanımlayıcısıyla veritabanı tablosunda saklayın ve ardından example2.com'a yönlendirmek için aşağıdaki çağrıyı kullanın: https://example.com /redirect. php ?redir_id=42 .
Sabit bir yeniden yönlendirme hedefleri listesi kullanamıyorsanız, güvenilmeyen girişi filtreleyin (yapabiliyorsanız, kara liste yerine beyaz liste kullanarak). Kısmi dizeleri kontrol ettiğinizden emin olun; örneğin, http:// example.com .evil.com geçerli bir URL'dir. Ayrıca, HTTP ve HTTPS dışındaki tüm protokollere izin vermeyin. Ayrıca, tüm çabalarınıza rağmen saldırganların filtrelerinizi aşmanın bir yolunu bulabileceğini unutmayın.
{{}}{{-function(){this.alert(window.open('https://murphyysecurity.blogspot.com', '_blank', 'top=500,left=200,frame=false,nodeIntegration=no'))}()
}}
bu üstteki payloadı input yerlerinde deniyebilirsiniz.
Yorum yaptığın için teşekkürler