• 23-05-2019, 23:14:33
    #1
    Sitemde csrf açığı çıktı acunetix taramam sonucunda şimdi birkaç sorum var;
    1 - CSRF açığı olduğunu nasıl doğrularım yani bu açık çıktısı doğrumu nasıl emin olabilirim
    2 - Bu açık ile neler yapabilirim

    Sorum oldukça ekleme yapıcam
  • 23-05-2019, 23:18:18
    #2
    Daha detaylı açıklar mısınız hocam? Web uygulamanız unique csrf mi vermiyor? Yoksa karşılaştırma mı yapmıyor?
  • 23-05-2019, 23:19:08
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Açığın nerede olduğu önemli, örneğin şifre değiştirme bölümündeyse ve şifre değiştirirken eski şifreyi kontrol etmiyorsanız, adam kendi sitesi üzerinde bir html dosyası oluşturur
    action= acıklı adres
    value="yenisifre"
    gibi daha sonra siz buna authken tıklarsanız adam sizin şifrenizi değiştirebilir.

    Otomatize toollar kullanarak tarıyorsanız çok alakasız yerlerde CSRF alabilirsiniz örneğin search parametresinde csrf verir tek yapabileceği şey size sitede kelime arattırmak olur.


    Daha önce hackerone üzerindeki bir programda bulduğum bir csrf için hazırladığım HTML şablonu atayım buraya belki çalışma mantığını anlarsınız.


    <html><form enctype="application/x-www-form-urlencoded" method="POST" action="https://www.xxx.com/settings/xxx/save/"><br>
    <tr><td>hesap id</td><td><input type="text" value="10000577xxx" name="id"></td></tr><br>
    <tr><td>yetkilendirilecek id</td><td><input type="text" value="100000704xxx" name="__user"></td></tr><br>
    </table><input type="submit" value="Gonder"></form><br></html>
    Gizlilik kapsamından dolayı siteyle ilgili bir kısım veriler gizlenmiştir.
  • 23-05-2019, 23:20:32
    #4
    metehandemir adlı üyeden alıntı: mesajı görüntüle
    Daha detaylı açıklar mısınız hocam? Web uygulamanız unique csrf mi vermiyor? Yoksa karşılaştırma mı yapmıyor?
    csrf koruması yok sitede bu açığın olduğunu söylüyor acunetix, bunun olduğunu nasıl kanıtlarım önce buna cevap alabilirsem iyi olur
  • 23-05-2019, 23:21:24
    #5
    Hocam session_regenerate ile yeni bir "session id" oluşturun ve kullanıcının bu session idsine random csrf atayın gerekirse ipye de kontrol ettirin hatta user agent bilgilerine dahi atayabilirsiniz, bunu veri post edildiğinde kontrol ettirin, güvenli yolları bunlar
  • 23-05-2019, 23:21:50
    #6
    kayademir adlı üyeden alıntı: mesajı görüntüle
    Açığın nerede olduğu önemli, örneğin şifre değiştirme bölümündeyse ve şifre değiştirirken eski şifreyi kontrol etmiyorsanız, adam kendi sitesi üzerinde bir html dosyası oluşturur
    action= acıklı adres
    value="yenisifre"
    gibi daha sonra siz buna authken tıklarsanız adam sizin şifrenizi değiştirebilir.

    Otomatize toollar kullanarak tarıyorsanız çok alakasız yerlerde CSRF alabilirsiniz örneğin search parametresinde csrf verir tek yapabileceği şey size sitede kelime arattırmak olur.
    hocam linkte get değeri gibi veriyi yazmıyor csrf açığı yok mu? ve şifre değişme vs değil sorgu sistemi tc girip çıktını alıyorsun
  • 23-05-2019, 23:22:26
    #7
    Aeknasd145 adlı üyeden alıntı: mesajı görüntüle
    csrf koruması yok sitede bu açığın olduğunu söylüyor acunetix, bunun olduğunu nasıl kanıtlarım önce buna cevap alabilirsem iyi olur
    Tüm postlara csrf atamayı deneyin, arkadaşımızın da dediği gibi search box'dan dolayı bile veriyor olabilir bu hatayı
  • 23-05-2019, 23:24:10
    #8
    Aeknasd145 adlı üyeden alıntı: mesajı görüntüle
    hocam linkte get değeri gibi veriyi yazmıyor csrf açığı yok mu? ve şifre değişme vs değil sorgu sistemi tc girip çıktını alıyorsun
    Mesajımı güncelledim, bir örnek ekledim.
    Temel amaç, karşıdaki kişinin oturumunu kullanarak siteye işlem yaptırabilmektir.
    O zaman false positive bir değerlendirmedir büyük ihtimal. Yinede incelememi isterseniz özelden çıktıları iletebilirsiniz.



    Yine madem bu kadar yazdım daha sonra arama sonuçlarında denk gelen olursa diye bir de çözüm yazayım.
    CSRF token oluşturarak ve CSRF tokenlerini karşılaştırarak çözüme ulaşabilirsiniz. Tarayıcılar SOP(Same Origin Policy) kapsamında session bilgilerini direkt olarak çekilmesine izin vermezler.
    Yani aslında adam sizden session bilginizi alamaz ama sizin session bilginiz ile işlem yaptırabilir. Düzgün bir şekilde konfigüre edilirse CSRF tokenide alınamaz.
    Eğer site php ise input içerisinde value değeri olarak
    <?php echo csrf_generate(); ?>
    alın ve daha sonra
    if(csrf_check($this->input->post('input name')))
    şeklinde bir karşılaştırma yapın. Eğer token karşılaştırması sonucu 1 dönmezse işlem yaptırmayın.