- Uygulamayı kullanmak isteyen kullanıcının tanımlı bir kullanıcı olup olmadığının kontrolü.
- Kimik doğrulamada 3 temel faktör var:
- Kullanıcının bildiği (Şifre, PIN vs)
- Kullanıcının sahip olduğu (ATM kartı, telefon)
- Kullanıcının kendisi (Parmak izi, retina tarama vs.)
- Bu faktörlerden sadece biri de kullanılabilir, ikisi birlikte de (iki etmenli), üçü birlikte de (çok etmenli) kullanılabilir.
- Web kimlik doğrulama çeşitleri:
- Basic:
- En fazla desteklenen metottur.
- Şifreleme base64 kodlama kullanılır (Encryption değil encoding, çok kolay decode edilebilir. Internette de bulabilirsin, otomatize araçlarda da. Örn: Burp kişisel Proxy aracında var) ; username/password sunucuya açıktan gönderilir, bu nedenle kullanılacaksa bile SSL ile kullanılmalıdır.
- Oturum kapama yoktur, tek yapılması gereken browserın kapatılmasıdır.
- Integrated Windows
- Sadece Windows sunucu ve istemcilerde kullanılabilir.
- NTML veya Kerberos
- Şifreler sunucu tarafında açık tutulmaz.
- Genellikle güvenilir ağlarda kullanılır.
- Vekil sunucu ve güvenlik duvarları ile uyumsuzdur.
- Kullanıcı bilgisayar güvenliği çok önemlidir. Bir kere login olunca bir daha user/pwd istenmediği için kullanıcı makineyi açık bırakıp uzaklaşmamalıdır.
- Sertifika tabanlı
- Modern tarayıcıların çoğu destekler
- Çift taraflı doğrulama mümkün; hem istemci sunucuyu, hem sunucu istemciyi tanır.
- İki tarafın da geçerli sertifikası olmalıdır.
- Kimlik doğrulama sonrası trafik şifrelenir (önceki 2 yöntemde kimlik doğrulama sonrası trafik açıktır)
- Sertifikalar iki tarafta da korunmalıdır.
- Form tabanlı
- Özel yapım formlardır; en çok kullanılan kimlik doğrulama çeşididir.
- Esnektir (Şifremi unuttum, kullanıcıyı hatırla vs).
- Sertifika ile kullanılabilir.
- Form: sunucu, istemciyi tanır
- Sertifika: istemci, sunucuyu tanır.
- Encryption ile encoding arasındaki fark:
- Encoding = Input bir algoritmaya göre değiştirilir ve bir output üretilir. Trafikte paketleri yakalarsam ve algoritmayı da biliyorsam çok rahat decode edebilirim.
- Encryption: Algoritma yanında bir de key var.
- Pozitif kimlik doğrulama: Algoritmada girilen değer için default değer “true”dur, hangi şartlarda “false” olacağı belirtilir. Bu, istenmeyen bir durumdur, çünkü öngörülmeyen bir durumla karşılaşıldığında algoritma true dönecektir.
- Negatif kimlik doğrulama: Default değer false’tur, istediğimiz tüm şartlar karşılandığında değer true olarak set edilir.
- Kullanıcı adı ve şifre denetiminde “Kullanıcı adı hatalı” yada “şifre hatalı” mesajları verilmemeli, “kullanıcı adı veya şifre hatalı” mesajı verilmelidir. Mesela “şifre hatalı” mesajı verilmesi, saldırgana doğru kullanıcı adı girdiği mesajını verir ki bu da brute force saldırıları için kapıyı ardına kadar aralar.
- Sözlük tabanlı saldırılar: bilinen user name için en çok kullanılan şifrelerden oluşan bir sözlükten şifreler tek tek denenir. Şifre sözlüğünü kullanıcının milliyeti de belirler.
- Kaba kuvvet (Brute Force) saldırıları: Belirlenen kullanıcı için tüm şifre olasılıkları denenir: a, b, …, aa, bb, …
- Brute force tarama teknikleri:
- Dikey: Her denemede sabit kullanıcı adı, farklı şifre. Önlemi: Belirli sayıda hatalı deneme sonra kullanıcı hesabını kilitleme.
- Yatay: Her denemede farklı kullanıcı adı, aynı şifre. Amaç basit şifre kullanan (123456 gibi) kullanıcıları yakalamak. Önlemi: Hatalı denemelerde aynı şifre girilmesi durumlarında IP kısıtlama.
- Diyagonal: Her denemede farklı kullanıcı adı, farklı şifre. Önlemi: Belli sayıda hatalı deneme halinde IP kısıtlama.
- 3 boyutlu: Her denemede farklı kullanıcı adı ve farklı şifre; ayrıca belli sayıda deneme sonrası farklı sunucu/istemci IP ile devam etme. Önlemi: ?
- Burp Intruder ile kimlik doğrulama saldırıları yapılabilir. Yanlış kullanıcı adı / şifre girildiğinde verilen mesaj (mesela “login failed”) anahtar terim olarak girilir; bu mesajı almadığımız denemeler başarılı demektir.
- DİKKAT: Sunucu, login isteğinin karşılığında doğru bile olsa kesinlikle 200 OK dönmemeli, 302 FOUND dönmeli. Neden? Çünkü 200 OK dönüşlerinde browser kullanıcı adı/şifre ikilisini browser cache’inde saklıyor, her F5’e basıldığında o kullanıcı adına sisteme girilmiş olarak sayfa gelir. Peki sunucunun ne döndüğünü nasıl anlarız? Login olduktan sonra F5’e basalım, bilgilerini tekrar göndereyim mi diye soruyorsa sunucu 200 OK dönüyor demektir.
- DİKKAT: http başlıklarında “Cache control: no-cache, no-store” olmalı. No-store olmazsa logout yaptıktan sonra browserda back tuşuna basarak login iken gezdiğimiz sayfaları bize sakladığı yerden tekrar getirir!
- Expires: -1 olmalı,
- Cache-control: no-cache, no-store olmalı,
- Pragma: no-cache olmalı.
Önceleri web uygulama güvenliğine özel olması düşünülen blog, daha sonra diğer sızma testleri konularını da kapsayacak şekilde genişletilmiştir.
30 Mayıs 2010 Pazar
11: Authentication
Kaydol:
Kayıt Yorumları (Atom)
Web Uygulama Sızma Testleri İçin Kontrol Listeleri - V
Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....
-
& (%26) URL sorgu tümcesindeki parametreleri mesaj gövdesinden ayırmada kullanılır. = (%3d) URL sorgu tümcesindeki parametrelerin i...
-
Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....
-
OWASP'ın 2010 yılı için açıkladığı en önemli 10 güvenlik riski ve bunlar için en faydalı araçlardan birer örnek, bu yazının konusunu ol...
Hiç yorum yok:
Yorum Gönder