Konu gelmez 2 gün falan diyordum ama konu açma ve öğrenme isteğime yenik düşerek açıyorum bu konuyu
Merhaba ben Rapx13 buda CSRF öğrendiğimiz konunun 3. günü
Hoş geldiniz
Temel CSRF - Gizli Bağlantı/Görüntü İstismarını öğreneceğiz şimdi
CSRF'de gizli bağlantı/görüntü istismarı olarak bilinen gizli bir teknik, bir saldırganın kullanıcı tarafından neredeyse algılanamayan bir web sayfasına 0x0 piksellik bir görüntü veya bağlantı eklemesini içerir. Genellikle, resmin öğesi, kullanıcının haberi olmadan kullanıcı adına işlem yapması amaçlanan bir hedef URL'ye ayarlanır. Kullanıcının tarayıcısının kimlik bilgilerini çerezler gibi otomatik olarak aktarmasından yararlanır.
KOD:
| <!-- Website --> <a href="https://mybank.thm/transfer.php" target="_blank">Click Here</a> <!-- User visits attacker's website while authenticated --> |
Bu teknik, kimliği doğrulanmış oturumları kullanır ve bir kullanıcı oturum açmış durumdayken yanlışlıkla farklı bir web sitesinde işlem gerçekleştirebildiğinde bir sosyal mühendislik yaklaşımı kullanır.
bakalım bu nasıl çalışıyor
↓
↓
↓
şimdi site bize diyorki makinaya gir ve postaları kontrol et. ettiğimizde josh adlı bir adamın banka hesabındayız ve 4 mail var 2 si zararlı csrf açığı olan diğer 2 si zararsız olanlardan hadi bakalım.
makinadan görüntü
↓
önce bu açıklı sitenin kodları
bakalım bu nasıl çalışıyor
↓
↓
↓
şimdi site bize diyorki makinaya gir ve postaları kontrol et. ettiğimizde josh adlı bir adamın banka hesabındayız ve 4 mail var 2 si zararlı csrf açığı olan diğer 2 si zararsız olanlardan hadi bakalım.
makinadan görüntü
↓
önce bu açıklı sitenin kodları
| <?php <form action="transfer.php" method="post"> <label for="to_account">To Account:</label> <input type="text" id="to_account" name="to_account" required> <label for="amount">Amount:</label> <input type="number" id="amount" name="amount" required> <button type="submit">Transfer</button> </form> |
anlattığına göre tranfer.php'de geçen olaylar gönderme(post) parametresiyle gönderiliyormuş <label> etiketi, form elemanının etiketini tanımlıyor.
for özelliği, etiketin hangi form elemanına ait olduğunu id değeri ile belirtir. "To Account:" metni, to_account id'li <input> alanına bağlı
<input> etiketi, kullanıcıdan giriş yapılmasını bekleyen bir form elemanı. type="text" ile bir metin girişi alanı oluşturuyor. id özelliği, etiketle ilişkilendirilmiş olan <label> etiketi için bir referans sağlamakta. name özelliği, form verilerini sunucuya iletmek için kullanılan isimdir. required özelliği, bu alanın boş bırakılamayacağını belirtir.
"Amount:" etiketli bir miktar girişi alanı oluşturur. Özellikleri ve işlevi, "To Account:" etiketli alanla benzer
<button> etiketi, formun gönderilmesi için bir düğme oluşturur. type="submit" özelliği, bu düğmenin formu göndermek için kullanılacağını belirtir. Düğmenin metni "Transfer" olarak belirlenmiştir.
beyler bu josh'un 2 senaryosu var kötü olandan başlıyalım
Kötü senaryo:
arkadaş geldi ve sarı bölmeye tıkladı tıklarsa ne olucak
josh'u soyup soğana çeviricekler XD
tabi bu çıkan yazıyıda engellemek mümkün ama onu nasıl kodlarım bilmiyorum uğraşırsam yaparım
şimdi bu açığın düzeltimi için gerekli olanlar ve düzeltilmiş kodu vereceğim
İYİ SENARYO:
Sızma testçisi/red tim üyesi perspektifinden, formun her istek ve yanıt parametresini sızma testi yapmak çok önemlidir.
Güvenli bir kodlayıcı perspektifinden, web sunucusuna gönderilen her isteğin, sunucunun geçerli bir kaynak aracılığıyla tıklanıp tıklanmadığını belirleyebilmesi için benzersiz bir belirteç taşımasını sağlamak önemlidir.
Bankanın BT ekibi (bilgi teknolojileri ekibi) sorunu hızlı bir şekilde tespit etti ve sunucuya gönderilen her istekle birlikte bir CSRF belirteci ekledi. Aşağıdaki kod, güncelleştirilmiş istemci tarafı kodunu içerir. Her istekle sunucuya gönderilecek ek bir gizli parametre olduğunu görebiliriz. parametre : csrf_token
KOD:
for özelliği, etiketin hangi form elemanına ait olduğunu id değeri ile belirtir. "To Account:" metni, to_account id'li <input> alanına bağlı
<input> etiketi, kullanıcıdan giriş yapılmasını bekleyen bir form elemanı. type="text" ile bir metin girişi alanı oluşturuyor. id özelliği, etiketle ilişkilendirilmiş olan <label> etiketi için bir referans sağlamakta. name özelliği, form verilerini sunucuya iletmek için kullanılan isimdir. required özelliği, bu alanın boş bırakılamayacağını belirtir.
"Amount:" etiketli bir miktar girişi alanı oluşturur. Özellikleri ve işlevi, "To Account:" etiketli alanla benzer
<button> etiketi, formun gönderilmesi için bir düğme oluşturur. type="submit" özelliği, bu düğmenin formu göndermek için kullanılacağını belirtir. Düğmenin metni "Transfer" olarak belirlenmiştir.
beyler bu josh'un 2 senaryosu var kötü olandan başlıyalım
Kötü senaryo:
arkadaş geldi ve sarı bölmeye tıkladı tıklarsa ne olucak
josh'u soyup soğana çeviricekler XD
tabi bu çıkan yazıyıda engellemek mümkün ama onu nasıl kodlarım bilmiyorum uğraşırsam yaparım
şimdi bu açığın düzeltimi için gerekli olanlar ve düzeltilmiş kodu vereceğim
İYİ SENARYO:
Sızma testçisi/red tim üyesi perspektifinden, formun her istek ve yanıt parametresini sızma testi yapmak çok önemlidir.
Güvenli bir kodlayıcı perspektifinden, web sunucusuna gönderilen her isteğin, sunucunun geçerli bir kaynak aracılığıyla tıklanıp tıklanmadığını belirleyebilmesi için benzersiz bir belirteç taşımasını sağlamak önemlidir.
Bankanın BT ekibi (bilgi teknolojileri ekibi) sorunu hızlı bir şekilde tespit etti ve sunucuya gönderilen her istekle birlikte bir CSRF belirteci ekledi. Aşağıdaki kod, güncelleştirilmiş istemci tarafı kodunu içerir. Her istekle sunucuya gönderilecek ek bir gizli parametre olduğunu görebiliriz. parametre : csrf_token
KOD:
| <form method="post" action=""> <label for="password">Password:</label> <input type="password" id="password" name="current_password" required> <label for="confirm_password">ConfirmPassword:</label> <input type="password" id="confirm_password" name="confirm_password" required> <input type="hidden" id="csrf_token" name="csrf_token" value="<?php echo $_COOKIE['csrf-token']; ?>"> <button type="submit" name="password_submit" >Update Password</button> </form>submit"> </form> |
görüldüğü gibi koda token eklendi ve olay çözüldü bakalım sitemiz nasıl bir tepki vericek bu durumda
Josh kurtuldu iyisin yine josh
Bu konuluk bu kadardı umarım hoşunuza gider şu konu için uyumadım beğendiyseniz lütfen beğenin bana gerçekten motivasyon verir
iyi forumlar dilerim
Rapx Out
Josh kurtuldu iyisin yine josh
Bu konuluk bu kadardı umarım hoşunuza gider şu konu için uyumadım beğendiyseniz lütfen beğenin bana gerçekten motivasyon verir
iyi forumlar dilerim
Rapx Out

