Oturum öncesi Kimlik Açığı



Gün geçtikçe Rastladıgımız Az Bilinen ve oldukça tehlike yaratabilen Bir Açıktır .

Dünyada Bir çok büyük Sistemde bulunan ve çok az kişi tarafından bu açık çok tehlikeli
olmasına rağmen hala bir çok webmaster bu konu hakkında gerekli önlemleri almıyor


Web’de kimlik kimlik doğrulamasından geçen kullanıcıların oturumlarının sürekliliği için
SessionID/Cookie (çerez) Kullanırlar.
Bu çerez içerisinde kullanıcıya ait oturum kimliği bulunur.

Kimlik doğrulamadan başarı ile geçtikten sonra Kullanıcıya özel
tahmin edilmesi imkansız olan SessionID oluşturulur Bu SessionID Hem Kullanıcı Tarafından
hemde Sunucu Tarafından Saklanır.


Kimlik doğrulama (login) Adımından önce bulunan SessionID Başarılı olan bir oturumdan Sonra
Aynı SessionID kullanılmaya Devam edilirse Login olmadan Önceki SessionID çalan Saldırgan
Aynı sisteme Sizin Kimliğinizi Kullanarak Yetkisiz Giriş yapabilir.

Açığın oluşmasındaki sebeb Oturum açıldıktan sonra oturum açılmadan önceki SessionID leri kullanıyor olmasıdır.

Bilinen 2 Farklı Session Saldırısı Vardır
1.) Oturum Çalma
2.) Oturum sabitleme 

1- Oturum Çalma
En çok kullanılan bu yönteme ’Session Hijacking’ Denildiği Biliniyor.
Bu saldırı türü Oturum Dinleme yani Session Sniffing Attack saldırısı Bu saldırı sürecinin
Daha kullanıcı login olmadan yani kimlik bilgilerini giremeden Başlar.
kullanıcının oturum öncesi kimlik bilgisini Çalan saldırgan ,Kullanıcı login olduktan sonra
aynı SessionID kullandıgından Saldırgan Aynı kimliği kullanarak yetkisiz Giriş işlemini Gerçekleştirir...

2- Oturum Sabitleme 

Bu Saldırıyı ’’Session Fixation Attack’’ Olarakda Adlandırılır.
Bu açığın temelinde Saldırgan kendi oturum bilgilerini veya bildiği bir
kimlik bilgilerini kullanıcı daha login olmadan yani oturum başlatmadan
saldırgan tarafından kullanılmasını sağlar.
böylece kullanıcı login olduktan sonra (authentication) işlemini Saldırganın
bildiği kimlik bilgileri ile yaptıgından Kullanıcı gizliliği ihlal etmiş olur
bunun sonucunda kullanıcı bilgileri Saldırgan tarafından ele geçirilir.

Oturum sabitleme saldırısında Session Açığının bulundugu sistemlerde yani Oturum öncesi ve
sonrası aynı kimlik bilgilerinin kullanıldıgı sistemlerde bu açık olabilir iken
oturum sabitleme saldırısının yapılabildiği her sistem bu açık olmayabilir. ileryen zamanlarda bundanda bahsedeceğiz.


Bu tip Saldırıların önüne geçmek için
Kimlik bilgireleri girilmeden oluşturulmadıgı durumlarda veya sonrasında “session_regenerate_id ” gibi php fonksiyonu ile
Oturum öncesi Çerez açığı Kapatılmış olur ancak oturumun devam ettiği bir anda çerezin Saldırgan tarafından Sabitlenmesine
engel olamamaktadır. Kendi oluşturdugu kimliği kullanıcıya atıyarak onu izleyebilir kısaca Gizliliğini Bozabilir.




Uygulamalı olarak çerez Açığının nasıl oluştugu ve kapatıldıgını aşağıdaki görsellerde anlatacağım.



------
<?php

session_start();

if (isset($_POST["submit"])) {

if ($_POST["user"] == "Cyber" && $_POST["pass"] == "warrior") {



$_SESSION["username"] = $_POST["user"];

   
}

}

?>

<html>

<head>
<meta charset="UTF-8"/>
<title>Cyber Warrior BLACK_RAY</title>

</head>

<bOdy>

<?php

if (isset($_SESSION["username"])) {

echo("Giriş Yaptınız!");

} else {

?>

<form method="post">

<b><font size="8">CyberWarrior</font></b> <br><br>

Kullanıcı adı : <input type="text" name="user" /><br />

şifre : <input type="text" name="pass" /><br />

<input type="submit" name="submit" value="Login" />

</form>

<?php

}

?>

</bOdy>

</html>

----

Kullanıcı Giriş Yaptıktan sonra



Yukarıda görüldüğü gibi Kullanıcı giriş yapmadan ve yaptıktan sonraki çerez bilgileri aynı
Bu durumda Öncesinde çerez bilgileriniz çalınması durumda login olduktan sonra saldırganda login
olmuş sayılacaktı

aşağıda Görsellerde görüleceği gibi
’’session_regenerate_id()’’ php Kodu ile bu açığı gidereceğiz.


--------------------------------------------------------------
<?php

session_start();

if (isset($_POST["submit"])) {

if ($_POST["user"] == "Cyber" && $_POST["pass"] == "warrior") {



$_SESSION["username"] = $_POST["user"];

     session_regenerate_id();
}

}

?>

<html>

<head>
<meta charset="UTF-8"/>
<title>Cyber Warrior BLACK_RAY</title>

</head>

<bOdy>

<?php

if (isset($_SESSION["username"])) {

echo("Giriş Yaptınız!");

} else {

?>

<form method="post">

<b><font size="8">CyberWarrior</font></b> <br><br>

Kullanıcı adı : <input type="text" name="user" /><br />

şifre : <input type="text" name="pass" /><br />

<input type="submit" name="submit" value="Login" />

</form>

<?php

}

?>

</bOdy>

</html>

-------------------------------------------------------------


Görüldüğü üzere Giriş Yapıldıktan sonra Yeniden üretilmiş SessionID

Hakkımda Unknown

Turk DevilZ | Bug Researcher Expert


«
Sonraki
Sonraki Kayıt
»
Önceki
Önceki Kayıt

Hiç yorum yok:

Yorumlar