OWASP TOP 10 | SESSİON FİXATİON
Session fixation bir web saldırı tekniğidir . Saldırgan, kullanıcıyı belirli bir oturum kimliği kullanması için kandırır. Kullanıcı, sağlanan oturum kimliğini kullanarak web uygulamasında oturum açtıktan sonra,
saldırgan, kullanıcının hesabına erişmek için bu geçerli oturum kimliğini kullanır. Owasp TOP 10 güvenlik açıklarını
sizlere anlatırken iyi simüle edebilmek için Application Security platformu üzerinden anlatacağım.
saldırgan, kullanıcının hesabına erişmek için bu geçerli oturum kimliğini kullanır. Owasp TOP 10 güvenlik açıklarını
sizlere anlatırken iyi simüle edebilmek için Application Security platformu üzerinden anlatacağım.
Yukarıda gördüğünüz üzere bizim için oluşturulan ve penetrasyon testi yapabilmemizi sağlayan bir oda var.
Burada ise bize bir bağlantı linki verilmiş bizden istediği ise bağlantıya gidip faturalandırılabilir web uygulamasını tarayıcımıza indirmek.
Bize verdiği bağlantıya gittik, fakat uygulama url'sinde ck_session_id olarak ayarlanmış bir oturum kimliği parametresi eklendiğini görüyoruz.
pO8STıZ2cıhKtrQ6o74oEPILEqıjnEabVYP7NWN7[/color
Bir oturum tanımlayıcısını doğrudan URL'ye iletmek çok fazla yaygın değildir geliştiriciler büyük olasılıkla eski bir web framework veya özel bir oturum yönetimi kitaplığı kullanıyor.
Şimdi uygulamanın oturum yönetimini test etmek için, Oturum Sabitleme olarak bilinen oturumla ilgili ortak bir zayıflıktan yararlanmaya çalışıcağız.
Alice'in hesabına karşı güvenlik açığından yararlanmak için, Invoiceable'ın oturum açma sayfası yüklenirken oluşturulan URL'yi kopyalayıp.
Daha sonra Alice'nin bu URL'ye erişebilmesi için bir e-posta gönderir.
Daha sonra Alice'nin bu URL'ye erişebilmesi için bir e-posta gönderir.
Alice'in gelen kutusuna erişerek epostamızın içeriğini analiz edelim.
Alice genellikle bilinmeyen alıcılardan gelen istenmeyen e-postaları yoksayar ve siler.
Ancak, e-posta Konusunun makul ve alakalı olduğu göz önüne alındığında, Alice bizim tarafımızdan gönderilen mesajı açar.
gönderdiğimiz eposta nın içeriği:
e-postamızda, Fatura#122342 eksik yazan bir konu satırı kullanarak, Alice'i Faturalandırılabilir uygulamadaki bir faturalandırma hatasını gözden geçirmeye teşvik ediyoruz.
Alice, URL'yi daha ayrıntılı olarak inceler ve bunun Invoiceable'ın portalına işaret eden geçerli bir bağlantı olduğunu onaylar.
E-postayı okuduktan sonra Alice URL'ye erişir.
Şimdi ise Alice olarak devam ediceğiz ve aşağıdaki Faturalandırılabilir bilgileri kullanarak oturum açıcağız.
Alice tarafından kullanılan oturum açma URL'sinin, Bizim Faturalandırılabilir uygulamaya eriştiğimizde daha önce oluşturulan oturum kimliğinin aynısını içerdiğine dikkat edin:
pO8STiZ2cihKtrQ6o74oEPILEqijnEabVYP7NWN7
Alice hesabına başarılı bir şekilde giriş yaptı, faturalarının mevcut durumunu görebileceği Faturalandırılabilir panosuna yönlendirilir.
Alice ayrıca gönderdiğimiz e-postada bahsedilen hayali faturayı bulmaya çalışır, ancak işleme dair herhangi bir kanıt bulamaz ve aramayı bırakır.
Biz birkaç saat bekledikten sonra tarayıcının oturumuna dönüp, Faturalandırılabilir oturum açma sayfasını yeniliyoruz.
Vee BUM tarayıcımızı yenileyerek alice'in hesabına erişmiş bulunuyoruz.
Yaptığımız saldırı, bir kullanıcının kimliğini her doğruladığında bir uygulamanın yeni bir oturum kimliği oluşturma başarısızlığından yararlanan Oturum Sabitleme saldırısı olarak bilinir.
Biz ilk önce geçerli bir oturum kimliği elde ettikten ve ardından Alice'in bu oturum kimliğiyle kimlik doğrulaması yapması için kandırdığımızdan, eskiden bize ait olan oturum artık Alice'e aittir.
Ve biz hâlâ kimliğe sahip olduğumuzdan dolayı, Alice'in hesabına tam erişim sağlayan geçerli bir oturuma erişimimiz bulunmaktadır.
Biz ilk önce geçerli bir oturum kimliği elde ettikten ve ardından Alice'in bu oturum kimliğiyle kimlik doğrulaması yapması için kandırdığımızdan, eskiden bize ait olan oturum artık Alice'e aittir.
Ve biz hâlâ kimliğe sahip olduğumuzdan dolayı, Alice'in hesabına tam erişim sağlayan geçerli bir oturuma erişimimiz bulunmaktadır.
Session Fixation güvenlik açığının temel nedenini daha iyi anlamak için Invoiceable uygulamasında bir kullanıcının kimliğini doğrulamak için kullanılan kaynak koduna bir göz atalım.
String username = request.getParameter("username");
Bir kullanıcının kimliğini doğrularken, sunucu tarafı kodu isteğin sağladığı kullanıcı adını
authenticateUserWith(username, password, session);
ve parolayı ayıklar ve geçerli olup olmadıklarını denetler.
HttpSession session = request.getSession(false);
Ayrıca istekten oturum kimliğini ayıklar.
authenticateUserWith(username, password, session);
Kullanıcının kimliği başarıyla doğrulandıysa, istekteki oturum hâlâ etkin olduğu sürece yeni bir oturum kimliği oluşturulmaz. Bizim Alice'in seansını kaçırmamıza izin veren şey bu.
Önce bir oturum kurduk ve kimliği Alice'e gönderdiğimiz bağlantıda URL'ye dahil ettik. Aynı oturum kimliğini kullanarak biz de giriş yaptık. Oturum etkin olduğundan, yeni bir oturum kimliği oluşturulmadı.
Mevcut olan şimdi Alice'in oturumunun kimliği oldu. Tarayıcımızda aynı oturumun hâlâ etkin olduğu sayfayı yenilediğinde, Alice'in verilerini yükler.
Bu Saldırılar Nasıl Önlenir
Oturum Sabitleme saldırılarını etkili bir şekilde azaltmak için , web uygulamaları,
oturum açma sırasında kullanıcının tarayıcısı tarafından sağlanan herhangi bir oturum kimliğini yok saymalı ve her zaman, kullanıcının kimliği başarılı bir şekilde doğrulanırsa oturum açacağı yeni bir oturum oluşturmalıdır.
Ayrıca, her oturum açma, oturum kapatma ve parola sıfırlama olayında tüm oturumlar yenilenmelidir. Bu, bir kullanıcının oturum kimliğinin, halihazırda geçerli bir oturum kimliğine erişimi olan başka bir kullanıcı veya saldırgan tarafından yeniden kullanılmamasını sağlar.
oturum açma sırasında kullanıcının tarayıcısı tarafından sağlanan herhangi bir oturum kimliğini yok saymalı ve her zaman, kullanıcının kimliği başarılı bir şekilde doğrulanırsa oturum açacağı yeni bir oturum oluşturmalıdır.
Ayrıca, her oturum açma, oturum kapatma ve parola sıfırlama olayında tüm oturumlar yenilenmelidir. Bu, bir kullanıcının oturum kimliğinin, halihazırda geçerli bir oturum kimliğine erişimi olan başka bir kullanıcı veya saldırgan tarafından yeniden kullanılmamasını sağlar.