Gelişmiş kimlik doğrulama açıklarından yararlanmaya yönelik eksiksiz bir kılavuz


Kimlik doğrulama güvenlik açıklarını bulmak eğlencelidir çünkü doğası gereği etkilidirler ve genellikle yetkisiz kullanıcılara yüksek ayrıcalıklarla çeşitli kaynaklara erişim sağlarlar. OWASP Top 10 listesinde 7. sırada yer almaları nedeniyle tespit edilmesi daha zor olsa da, yine de önemli bir risk oluşturuyorlar ve elbette test edilmeye değer.

Bu makalede, kimlik doğrulama güvenlik açıklarının neler olduğunu ele alacağız ve hem basit hem de daha gelişmiş durumları tanımlamanıza ve bunlardan yararlanmanıza yardımcı olacağız. Lütfen bu makalenin, OAuth 2.0 veya SAML gibi üçüncü taraf kimlik doğrulama mekanizmalarında bulunan yanlış güvenlik yapılandırmalarını veya güvenlik açıklarını kapsamayacağını unutmayın. Bunlar gelecek makalelerde ele alınacaktır.

Hadi dalalım!

Kimlik doğrulama, kullanıcıya belirli bir kaynağa erişim izni vermeden önce kullanıcının kimlik bilgilerini doğrulama işlemidir. Yalnızca seçilmiş birkaç yetkili kullanıcıya yönelik kritik kaynaklara ve uygulamalara (örneğin, geliştirme amaçlı uygulamalar) erişimi kontrol etmek için gerekli olan ön savunma katmanıdır.

Kimlik doğrulamanın mevcut olmaması durumunda, kritik kaynaklar (çoğunlukla yükseltilmiş ayrıcalıklara sahip), kimliği doğrulanmamış ve yetkisiz kullanıcılar da dahil olmak üzere internetteki herkese açık hale gelir.

Kimlik doğrulama paneli örneği

Basit bir kimlik doğrulama işlemi genellikle sağlanan bir dizi kullanıcı kimlik bilgilerinin (e-posta ve şifre) doğrulanmasıyla çözülür. Ancak günümüzde, kimliği doğrulanmamış kullanıcıların kontrollü kaynaklara erişmesini önlemek için çeşitli başka kimlik doğrulama mekanizmaları uygulanmaktadır. Ve bu kimlik doğrulama yöntemi yanlış yapılandırıldığında yeni bir saldırı vektörü açabilir.

Bozuk kimlik doğrulama güvenlik açıklarına karşı savunmasız olan uygulamalar, kullanıcının erişimini doğrulayamaz ve bunun sonucunda korunan uygulamayı açığa çıkarır.

Bu makale en yaygın olarak meydana gelen hatalı kimlik doğrulama güvenlik açıklarını ele alacaktır ancak bundan önce, kimlik doğrulama ve yetkilendirme arasındaki yaygın bir yanılgıyı ele alalım.

Kimlik doğrulama ve yetkilendirme arasındaki fark

Kimlik doğrulama, birinin kim olduğunu doğrulama işlemidir; kullanıcının kimliğinin doğrulanmasıyla ilgilidir. Yetkilendirme ise bir kişinin ne yapmasına izin verildiğini belirler; bu, kullanıcının sahip olduğu izinler ve erişim haklarıyla ilgilidir.

Hem kimlik doğrulama hem de yetkilendirme kontrollerinin uygulanması gerekir çünkü her ikisi de bir uygulamanın veya sistemin güvenliğinin sağlanmasında büyük rol oynar.

Basit bir örneğe bakalım. Intigriti’de öncelikle hesabınızda oturum açmalısınız, böylece kim olduğunuzu belirleyebilir ve hesabınızla ilişkili verileri (= kimlik doğrulama) geri gönderebiliriz. Daha sonra, yetkisiz hata ödülü avcılarının davet edilmedikleri özel hata ödülü programlarına erişmelerini önlemek için yetkilendirme kontrollerini uygularız (=yetkilendirme).

UÇ! Platformumuzda bazı özel davetler almak ister misiniz? Yüksek kaliteli raporlar gönderin, aktif olun ve Intigriti’de bilgisayar korsanlığı becerilerinizi sergileyin! Hata ödül programları aktif avcıları sever ve onları her zaman özel programlara davet eder!

Kimlik doğrulama güvenlik açıkları, kimlik doğrulama mekanizması zayıf olduğunda (tahmin edilebilir oturum belirteçleri gibi) veya yetersiz şekilde geliştirildiğinde ortaya çıkar.

Aşağıda, bozuk kimlik doğrulama açıklarından nasıl yararlanılacağına ve mevcut mantık kusurlarından nasıl yararlanılacağına ilişkin çeşitli yöntemleri inceleyeceğiz.

Zorunlu tarama

Bu yararlanma yöntemi, kimlik doğrulama duvarının arkasındaki kaynağın doğrudan talep edilmesini içerir. Bazı durumlarda, mantık hataları veya kimlik doğrulama mekanizmalarının yanlış uygulanması, kaynakların yalnızca doğrudan talep edilerek erişilebilir olmasına neden olur.

Bunun nedeni genellikle istenen kaynakta kimlik doğrulama doğrulamasının bulunmamasıdır. Bunu test etmenin yaygın bir yolu, hedef türüne uygun bir kelime listesiyle kaba kuvvet saldırısı gerçekleştirmektir.

Sonuçlar, kimlik doğrulamaya gerek kalmadan hangi kaynaklara erişilebildiğini görmenize olanak tanır.

Hızlı bir örneğe bakalım:

Ffuf içerik keşif taraması

Yukarıdaki şekil, Ffuf kullanılarak yapılan bir içerik keşif taramasından alınmıştır ve uygun izinlerin uygulanmasına rağmen, /admin/ dizinde bu izinler ne yazık ki yinelemeli değildi.

Bu, herhangi bir kimlik doğrulaması olmadan doğrudan o dizindeki dosyaları talep etmemize olanak tanıdı; bu da, GetResource.aspx son nokta!

UÇ! İçerik bulma taramalarını çalıştırırken istek yönteminizi de değiştirmeyi deneyin (örneğin, GET ile POST veya PUT)! Bazı API uç noktaları veya uygulama rotaları, yalnızca istekte belirli bir HTTP yöntemi gönderildiğinde geçerli bir yanıt döndürecek şekilde programlanır!

Varsayılan kimlik bilgileri

Bazı kimlik doğrulama mekanizmaları, zayıf veya varsayılan kimlik bilgilerini de (yönetici/yönetici gibi) kabul edecek şekilde ayarlanmıştır. Geliştiriciler veya web yöneticileri yeni bir uygulama veya sistem kurduklarında ancak bir şifre yöneticisine erişimleri olmadığında, genellikle varsayılan kimlik bilgilerini bırakırlar veya oturum açma bilgilerini hatırlanması kolay bir kullanıcı adı ve şifre kombinasyonuna ayarlarlar. Sorun, bu kaynak internete açıldığında ve geliştirici bu kimlik bilgilerini döndürmeyi unuttuğunda daha da fazla ortaya çıkıyor.

Aşağıda, aşağıdaki biçimde birkaç yaygın varsayılan kimlik bilgisi modeli verilmiştir: ":":

Bunlar manuel olarak deneyebileceğiniz yalnızca birkaçıdır.

UÇ! SecLists’te 2,8 binden fazla belgelenmiş varsayılan kimlik bilgisi listesi bulunur neredeyse tüm yaygın olarak kullanılan yazılım satıcıları için! Bir dahaki sefere üçüncü taraf yazılım satıcısını kullanan bir hedefle karşılaştığınızda, varsayılan kimlik bilgilerini kontrol etmeyi deneyin!

Hız sınırlamasının olmaması (kaba kuvvet)

Gelen istemci isteklerine hız sınırı uygulama konusunda başarısız olan uygulamalar, kaba kuvvetlendirme ve kimlik bilgisi doldurma saldırılarına karşı daha hassastır. Bu genellikle saldırganların zayıf kimlik bilgileri için kaba kuvvet kullanmasına olanak tanır. Özellikle mevcut kullanıcı hesaplarını numaralandırmanıza olanak tanıyan yanıt değişiklikleri varsa.

BurpSuite Intruder ve aynı zamanda Ffuf gibi çeşitli otomatik araçlar kaba kuvvetle oturum açma konusunda bize yardımcı olabilir! Ffuf kullanımına bir örnek verelim:

ffuf -w "/path/to/wordlist" -X "POST" -d "username=admin&password=FUZZ" -H "Content-Type: application/x-www-form-urlencoded" -u "https://app.example.com/auth/login" -mr "Incorrect password"

Bu komut aslında seçtiğiniz kelime listesindeki her türlü zayıf şifreyi yönetici kullanıcıya karşı deneyecektir. Ayrıca, potansiyel olarak geçerli bir şifre kabul edildiğinde bizi bilgilendirecek bir eşleşme kuralı da belirledik.

Lütfen, çok çeşitli hata ödül programlarının, uygulama için önemli bir risk oluşturacak şekilde tek başına hız sınırlamasının eksikliğini kabul etmediğini ve başka sistemler ve güvenlik özellikleri uygulamaya konduğundan genellikle bunu kapsam dışı olarak işaretlediğini unutmayın. Hata ödülünde agresif tarama hakkında daha fazla bilgi edinin.

Giriş doğrulama eksikliği

Enjeksiyon güvenlik açıkları, özellikle SQL enjeksiyonları, kimlik doğrulamanın atlanmasına neden olabilir. Savunmasız kod pasajının basit bir örneğine göz atalım:

Yukarıdaki şekilde görebileceğiniz gibi her iki alan da SQL enjeksiyonuna karşı savunmasızdır. Bu senaryoda, geçerli bir kullanıcı adı (“admin” gibi) iletebilir ve SQL sorgusunun geri kalanını parola sağlamaya gerek kalmadan kesebiliriz:

POST /login.php HTTP/1.1
Host: app.example.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.3

username=admin&password=xyz' OR 1=1; --

Yukarıdaki isteğin gönderilmesi, otomatik olarak yönetici kullanıcı olarak oturum açmamıza olanak tanır. Bu, giriş doğrulama eksikliğinin, kimlik doğrulamanın kısmen veya tamamen atlanmasıyla sonuçlanan istenmeyen davranışları da tetikleyebileceğini gösteren basit bir örnektir. Bu nedenle, herhangi bir kimlik doğrulama uç noktasında SQL enjeksiyonlarına karşı kapsamlı bir şekilde test yapılması her zaman önerilir.

Tahmin edilebilir “Beni Hatırla” jetonları

Geliştiriciler genellikle kalıcı kimlik doğrulamaya izin veren ve kullanıcıların siteyi daha sonra ziyaret ettiklerinde oturum açmalarını sağlayan bir özellik sunar. Bu belirteç, tüm kimlik doğrulama sürecini etkili bir şekilde atlar; bu nedenle, bu kalıcı kimlik doğrulama belirtecinin tahmin edilemez olması ve güvenli bir yerde saklanması önemlidir.

Bir “beni hatırla” belirteci genellikle benzersiz bir tanımlayıcıdan (kullanıcı adı veya kullanıcı kimliği gibi) ve yüksek entropili bir belirteçten oluşur ve genellikle müşterinin web tarayıcısına (Yalnızca HTTP) çerez olarak kaydedilir.

Bazı durumlarda, geliştiricilerin benzersiz tokenlar oluşturmak için gösterdiği tüm çabalara rağmen, bu hala tahmin edilebilir ve potansiyel olarak herkesin kendi tokenını oluşturmasına izin verebilir.

Her zaman bu tokenleri analiz etmeniz ve tokenı zayıflatabilecek olası kusurları tespit edip edemeyeceğinizi görmeniz önerilir.

Parola sıfırlama güvenlik açıkları

Parola sıfırlama işlevlerinin test edilmesi her zaman ilgi çekicidir çünkü hedeflenen kullanıcı hesabından herhangi bir ikincil adım gerektirmeden tüm hesabın ele geçirilmesiyle sonuçlanabilir.

Çoğu geliştirici, kutudan çıktığı gibi parola sıfırlama işlevleriyle birlikte gelen kimlik doğrulama çerçevelerinden yararlanır. Bu çerçeveler en iyi uygulamaları ve güvenlik yönergelerini takip eder ve genellikle iyi bir şekilde test edilmiştir. Ancak ek değişiklikler yapıldığında veya parola sıfırlama işlevi yanlış uygulandığında parola sıfırlama güvenlik açıklarına neden olabilir.

Tahmin edilebilir sıfırlama şifre belirteçleri

Bunlardan biri öngörülebilir veya zayıf şifre sıfırlama belirteçleridir. Verilen bir sıfırlama parola belirtecinin son kullanma tarihi olan yüksek entropili bir belirteç olması gerekir. Eğer jeton tahmin edilebilirse, herkes herhangi bir hesabın şifresini sıfırlayabileceğiniz bir jeton oluşturabilir.

Bu, hedeflenen kullanıcının herhangi bir ikincil gerekli adım atmasına gerek kalmadan kimlik doğrulamayı etkili bir şekilde tamamen atlayacaktır.

UÇ! Parola sıfırlama uygulamalarında ana bilgisayar başlığı enjeksiyonları, kimlik doğrulamayı atlamanın başka bir yoludur! Bu tür güvenlik açıklarını da test ettiğinizden emin olun!

Güvenilir IP beyaz listesi atlanır

Bazı kimlik doğrulama mekanizmaları, müşterinin genel IP adresinin doğrulanması etrafında döner. Bu kimlik doğrulama yöntemini kullanan sunucular ve uygulamalar, yalnızca IP’nin bir beyaz listeyle eşleşmesi durumunda trafiğin geçişine izin verir. IP eşleştirilemiyorsa uygulama ya tüm isteklerinizi tamamen reddeder ya da erişiminizi doğrulamak için başka kimlik bilgileri ister.

Belirli senaryolarda bir IP aralığı için beyaz liste tanımlanır. Bu genellikle geliştiricilerin bir kaynağa kolayca erişmesine olanak sağlamak için yapılır. Bu, IP beyaz listesi kesin olarak tanımlanmamışsa, izin verilenler listesiyle eşleştirmek ve kaynağa erişmenizi sağlamak için IP’nizi bir VPN veya proxy ile taklit edebileceğiniz başka bir potansiyel kimlik doğrulama atlamasıyla sonuçlanabilir.

IP beyaz listesini atlamanın başka bir yolu, istemcinin IP adresinin nasıl türetildiğini ve siz (istemci) ile kaynak sunucu arasında bir ters proxy sunucusunun olup olmadığını anlamaktır. Durum böyleyse, IP adresinizi değiştirerek sahtecilik yapmanız mümkün olabilir. X-Forwarded-For örneğin istek başlığı.

Aşağıdaki Nginx sunucu yapılandırma dosyasına bir göz atın:

Bundan şunu çıkarabiliriz, eğer X-Forwarded-For HTTP istek başlığı eşleşiyor 127.0.0.1güvenilir olarak işaretlenir ve isteği iletir. Aksi halde reddeder ve 403 yanıt durum kodunu döndürür.

Sihirli bağlantılarda son kullanma tarihinin olmaması

Sihirli bağlantılar kimlik doğrulama mekanizması olarak giderek daha fazla kullanılıyor. Bu, kullanıcının hesapla ilişkili e-posta adresini girdiği ve oturum açmak için kullanılabilecek benzersiz bir oturum açma bağlantısı aldığı, parolasız bir kimlik doğrulama işlemidir.

Sorun, belirtecin öngörülebilir olması veya süresinin hiç dolmaması durumunda ortaya çıkar. Benzersiz oturum açma bağlantısında kullanılan belirteç zayıfsa, bu da tahmin edilebilir ve herkesin herhangi bir kullanıcı hesabı için sihirli bağlantılarını oluşturmasına olanak tanır. Kimlik doğrulama katmanını tamamen atlamayı mümkün kılmak.

Sihirli bağlantının süresi hiçbir zaman dolmazsa ve bağlantılardan biri yanlışlıkla sızdırılırsa (ana bilgisayar başlığı enjeksiyonu yoluyla veya bir arama motoru tarafından dizine eklenmişse), yetkisiz kullanıcıların gelecekte aynı bağlantıyı kullanarak erişim elde etmesine izin verebilir.

Parolasız kimlik doğrulama uygulamaları dağıtan hedefleri test ettiğinizden emin olun.

Kimlik doğrulama güvenlik açıklarının tespit edilmesi daha zordur ancak genellikle saldırganların yetkisiz hizmetlere veya bileşenlere erişim sağlamasına olanak tanıyan önemli bir etkiye sahiptir. Hedeflerinizi bozuk kimlik doğrulama açıklarına karşı test etmek her zaman iyi bir fikirdir; özellikle de hedefiniz, güvenlik açıklarına dönüşebilecek tasarım kusurlarına daha yatkın olduğundan, benzersiz kimlik doğrulama uygulamasını konuşlandırdığında.

Yetersiz kimlik doğrulama güvenlik açıkları hakkında yeni bir şey öğrendiniz… Şu anda becerilerinizi test etme zamanı! Intigriti’deki 70’ten fazla genel hata ödül programımıza göz atın ve kim bilir, belki bir sonraki ödülünüz bizimle kazanılır!

BUGÜN INTIGRITI’DE HACKLEMEYE BAŞLAYIN



Source link