403 ByPass
Last updated
Last updated
Herkese tekrardan merhabalar, bu yazımda sizelere web geliştirme sürecinde sık sık karşılaşılan sorunlardan biri olan 403 Forbidden hatasının ne olduğundan, neden kaynaklandığından, nasıl ByPass edilebileceğinden ves 403 ByPass saldırılarına karşı nasıl korunabileceğimizden bahsedeceğim. Keyifli okumalar :)
403 Forbidden hatası, bir web sitesine erişmeye çalıştığınızda karşınıza çıkan bir HTTP durum kodudur. Bu hata, web sitesinin sunucu tarafında belirli bir sayfaya erişim izninizin olmadığını belirtir. Genel olarak izniniz olmayan bir konuma erişmeye çalıştığınızda bu hatayı alırsınız.
Yetki Sorunları : Erişmeye çalıştığınız sayfaya erişim izniniz olmayabilir. Bu durumda sunucu size 403 hatası döndürür.
IP Adresi Engelleme : Sunucu tarafında belirli IP adreslerinin engellendiği durumlarda 403 hatası döndürür.
Giriş Sınırlamaları : Sunucu tarafında belirli giriş sınırlamaları yapıldığında 403 hatası döndürür.
Güvenlik Duvarı : Sunucu tarafında belirli güvenlik duvarları bulunduğunda ve sizin girşimleriniz bu güvenlik duvarlarına takıldığında 403 hatası döndürür.
Yapılandırma Hataları : Sunucu tarafında yapılandırma hataları olduğunda ya da eksik yapıldığında 403 hatası döndürür.
Gibi bir çok sebepten dolayı 403 Hatası alabiliriz.
İlk yöntem HTTP method değiştirme yöntemidir. HTTP Methodları isteklerin nasıl yapıldığını belirten komutlardır. HTTP protokolünde 8 adet method bulunmaktadır. Bu methodlar şunlardır:
GET
POST
PUT
DELETE
HEAD
OPTIONS
TRACE
CONNECT
Şimdi gelin beraber bir örnek üzerinden HTTP Method değiştirme yöntemini inceleyelim.
Örneğin bir site secret sayfasına erişim izni verilmemiş olsun ve bizden isteği GET methodu alarak yapsın ve biz bu sayfaya erişmek istiyoruz. Bu durumda biz bu sayfaya erişmek için POST methodunu kullanabiliriz. Bu durumda sunucu bizden isteği GET methodu ile yapmamızı beklerken biz POST methodu ile yaparız ve bu sayede sayfaya erişim sağlamış oluruz.
Request:
Response:
Request:
Response:
Bu durumda sunucu bizden isteği POST methodu ile yapmamızı beklerken biz GET methodu ile yaparız ve bu sayede sayfaya erişim sağlamış oluruz.
Bir diğer yöntem ise Path değiştirme yöntemidir. Bu yöntemde, sunucu tarafında yapılan bir hata kullanılarak 403 hatası bypass edilecektir.
Örneğin bir site secret sayfasına erişim izni verilmemiş olsun ve bizden isteği example.com/secret
sayfasına yapmamızı beklesin. Bu durumda biz bu sayfaya erişmek için example.com/secret/
sayfasına erişim sağlayabiliriz. Bu durumda sunucu bizden isteği example.com/secret
sayfasına yapmamızı beklerken biz example.com/secret/
sayfasına erişim sağlamış oluruz.
Request:
Response:
Request:
Response:
Bu durumda sunucu bizden isteği
example.com/secret
sayfasına yapmamızı beklerken bizexample.com/secret/
sayfasına erişim sağlamış oluruz.
Bir diğer yöntem ise Header değiştirme yöntemidir. Headerlar, istemci ve sunucu arasında iletişim kurarken kullanılan bilgilerdir. Bu bilgiler ile istemci ve sunucu arasında iletişim kurulur. Bu durumda sunucu tarafında yapılan bir hata kullanılarak 403 hatası bypass edilecektir.
Örneğin bir site secret sayfasına erişim izni verilmemiş olsun ve bizden isteği example.com/secret
sayfasına yapmamızı beklesin. Bu durumda biz bu sayfaya erişmek için example.com/secret
sayfasına erişim sağlamak için Referer
header'ını değiştirebiliriz. Bu durumda sunucu herhangi bir referer header'ı olmadığı için 403 hatası alırken biz referer header'ını değiştirerek sayfaya erişim sağlamış oluruz.
Request:
Response:
Request:
Response:
Request: X-Forwarded-For
Response:
Request: X-Forwarded-Host
Response:
NOT : Yukarıda değiştirilecen Host ve IP adresleri girerken girilen ip ve host adresleri sizin kontrol ettiğiniz adresler olmalıdır. Aksi takdirde başka bir siteye saldırı yapmış olursunuz. Girilen host adresi saldırı yapılacak olan siteye ait olmalıdır.Girilen ip adresi ise sizin kontrol ettiğiniz ip adresi olmalıdır (örneğin kendi ip adresiniz veya 127.0.0.1 (localhost) adresini verebilirsiniz.).
Bu durumda sunucu bizden isteği
example.com/secret
sayfasına erişimi engellemesini beklerken bizexample.com/secret
sayfasına erişim sağlamış oluruz.
Bir diğer yöntem ise Parametre değiştirme yöntemidir. Bu yöntemde, sunucu tarafında yapılan bir hata kullanılarak 403 hatası bypass edilecektir.
Örneğin bir site secret sayfasına erişim izni verilmemiş olsun ve bizden isteği example.com/secret
sayfasına yapmamızı beklesin. Bu durumda biz bu sayfaya erişmek için example.com/secret
sayfasına erişim sağlamak için ?secret
parametresini ekleyebiliriz. Bu durumda sunucu bizden isteği example.com/secret
sayfasına yapmamızı beklerken biz example.com/secret?secret
sayfasına erişim sağlamış oluruz.
Request:
Response:
Request:
Response:
Bu durumda sunucu bizden isteği
example.com/secret
sayfasına yapmamızı beklerken bizexample.com/secret?secret
sayfasına erişim sağlamış oluruz.
Şimdi gelin beraber HackTheBox platformunda bulunan bir örnek senaryo üzerinden 403 ByPass işlemini gerçekleştirelim.
İlk olarak verilen adreste http://94.237.62.149:57773/auth/login adresine giriş yapmaya çalışalım
Şimdi burada 403 hatası aldık.Bu hatayı bypass etmek için path değiştirme yöntemini deneyelim.
Burada path değiştirme yöntemi ile 403 hatasını bypass etmeyi başardık ve sayfaya erişim sağladık. Site bizim isteğimizi GET /auth/login
şeklinde yapmamızı beklerken biz GET /../auth/login/
şeklinde yaptık ve bu sayede sayfaya sistem tarafından engellenen sayfaya erişim sağladık.
Burada sayfaya erişim sağladık ve sayfaya erişim sağladık. Bu sayede 403 ByPass işlemini başarılı bir şekilde gerçekleştirmiş olduk.
Şimdiye kadar 403 ByPass nedir ve yöntemleri nelerdir konularından bahsettik. Artık asıl önemli konu olan nasıl korunabiliriz konusuna geçelim.
Güvenlik duvarları kullanılmalı ve erişim kontrolü yapılmalıdır. En önemlisi ise bunların düzgün bir şekilde yapılandırılması ve güncel tutulmasıdır.
Yetkilendirme ve kimlik doğrulama işlemleri yapılmalıdır. Bu işlemler ile kullanıcıların yetkileri belirlenmeli ve bu yetkilere göre işlem yapılmalıdır. Şifreleme ve kimlik doğrulama işlemleri yapılmalıdır ve şifrelerin karmaşıklığı arttırılmalıdır.
Giriş ve çıkış kontrolleri yapılmalıdır. Bu kontroller ile gelen verilerin güvenliği sağlanmalı ve bu verilerin güvenliği sağlanmalıdır.
Güvenlik açıklarının tespit edilmesi ve bu açıkların kapatılması için düzenli olarak güvenlik testleri yapılmalıdır. Bu testler ile sunucu ve uygulamaların güvenliği sağlanmalıdır.
Giriş sınırlamaları yapılmalıdır. Bu sınırlamalar ile kullanıcıların giriş hakkı sınırlanmalıdır. Bu sayede kullanıcılarda gelen brute force saldırılarına karşı korunmuş olur.
Gibi bir çok yöntem ile 403 ByPass saldırılarına karşı korunabiliriz.
Bu yazıda sizlere 403 ByPass nedir ? nasıl korunabiliriz ? gibi konulardan bahsettim. Umarım faydalı bir yazı olmuştur. Teşekkür ederim, iyi çalışmalar dilerim :)