Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.

Benzer bir sunumlar


... konulu sunumlar: "Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP."— Sunum transkripti:

1 Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation OWASP http://www.owasp.org Web Uygulamalarında Güvenlik Problemleri Bünyamin DEMİR www.owasp.org/index.php/Turkey www.webguvenligi.org bunyamin@owasp.org 13 Mayıs 2009

2 2 İçerik  OWASP  Nedir?  Neler Yapar?  OWASP-TR & WGT  Amaç ve Hedefler  Projeler  WebGoat  Nedir?  Kurulum  Path Based Access Control  XSS  SQL Injection  Blind SQL Injection  Güvenlik Zaafiyeti ve İkili Arama  Algoritma Analizi ve Karmaşıklık  İkili Arama (Binary Search)  Blind SQL Injection ve Binary Search  Blind SQL Injection için Binary Search Optimizasyonu

3 3 OWASP – Nedir?  Open Web Application Security Projest (OWASP)‏  Güvensiz yazılımların sebep oldukları açıkları bulup, bunlarla mücadele eden bir topluluktur.  Tüm OWASP ürünleri ücretsiz ve açıktır.  Kar amacı gütmez  Topluluga ait rakamlar  120+ (Chapter)‏  30+ Sponsor  50+ Proje  100+ E-posta listesi  Aylık beş milyon üzerinde ziyaret

4 4 OWASP Neler Yapar? Araçlar Topluluk Dökümanlar Testing Guide Wiki WebGoat WebScarab Bölgeler (chapters)‏ Günlükler (blogs)‏ Çeviriler Konferanslar Forumlar Top 10 Legal AppSec FAQ Metrics … Live CD.NET Research LAPSE …

5 5 OWASP-TR / WGT Amaç ve Hedefler  Web uygulaması güvenliğine ülkemizde gerekli duyarlılığın gösterilmesini sağlamak  Web uygulaması güvenliği konusunda çalışan ve ilgi duyan arkadaşları bir platformda toplamak  Güvenlik konulu makaleler, dökümanlar ve projelere yer ve destek sağlamak.  Web uygulamalarının ortaya çıkardığı zararları en aza indirme yolunda çalışmalar yapmak  Dünyada yapılan web uygulaması güvenliği konulu çalışmaların takibini sağlamak  OWASP Vakfının Türkiye çalışmalarını sürdürmek  Web uygulaması güvenliği projeleri geliştirmek.  Web uygulaması güvenliği alanında yardımcı dökümanlar temin etmek.  Özel ve kamu kuruluşları arası güvenlik konulu çalışmalar yapmak.  Uluslararası konferanslar düzenlemek.  Açık kaynak kodlu güvelik çalışmalarına destek vermek.  Üniversitelerimizde uygulamalı web güvenliği farkındalığı eğitimleri vermek.

6 6 OWASP-TR / WGT Projelerimiz  Jarvinen (Web tabanlı ModSecurity log analizi)  Owasp-WeBekci (SoC 2008)‏ ve MSALParser  CAMMP ( C hroot A pache M ysql M odSecurity P HP)  SecureImage (.NET, Java ve PHP API)  SecureTomcat (Tomcat J2EE sunucu güvenlik denetimi)  Çeviri Projesi (~500 sayfa doküman)  Otomatize Sql Entektörleri Analizi (SoC 2008)‏  AntiCsurf (Cross Side Request Forgery için PHP API`si)  ApacheLive (Apache sunucusunun Keep-alive parametresi için güvenlik kontrolü yapan bir araçtır)  Web Güvenliği Terimler Sözlüğü  WIVET (Web Crawler’ın Teknik Yeteneklerinin Ölçülmesi ve Karşılaştırılması)

7 7 WebGoat  Güvenlik açıklıkları barındıran bir OWASP projesidir (J2EE ile yazılmıştır).  Web uygulama güveliği bilincini arttırmak için hazırlanmış bir eğitim aracıdır. Bu araç sayesinde açıklıkları anlayabilme ve bunları exploit edebilme yeteneği kazandırılmak istenmektedir.  Yüzlerce açıklık içermektedir.  Açıklıkların detaylı çözümleri ve bu açıklıkları çözmek için yardımcı ipuçları barındırır.  Açıklıklar belli kategorilerde sunulmaktadır.  Kolayca yeni açıklıklar ilave edilebilir.  Güvenlik testleri için ideal bir çalışma ortamı sunulur.  Kolay kuruluma sahiptir.

8 8 WebGoat Kurulumu  WebGoat Proje Sayfası: http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project  WebGoat-OWASP_Standard-5.2 indirilir. Webgoat.bat çalıştırılır  http://localhost/WebGoat/attack  Kullanıcı adı: guest Şifre: guest  WebScarab Proje Sayfası: http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project  webscarab-installer indirilir ve kolay şekilde kurulur.  WebScarab ile HTPP ve HTTPS trafiği izlenir ve araya girme imkanı sağlanır.  WebScarab aracını proxy (vekil sunucu) olarak kullanmak için  Firefox  Araçlar > Seçenekler > Gelişmiş > Ağ > Ayarlar > Vekil Sunucu Ayarları kısmına  “Localhost, port 8008” yazılmalıdır.  WebScarab  Proxy > Intercept Requests

9 9 Path Based Access Control (Demo)  Web uygulamalarında özellikle dizinlerden dosya okuturken karşımıza çıkan bir güvenlik açığıdır.  Erişim sağlanan dizinin dışına çıkma imkanı varsa, bu imkan sayesinde stahmin edilen bazı dosyalara izinsiz erişim sağlanır. ../main.jsp ye erişim sağlanabilir.

10 10 Stored XSS  Saldırgan tarafından girilen zararlı kod parçasının kurban tarafından çalıştırılmasından kaynaklanmaktadır. 1.Bir mesaj formı yardımıyla zararlı kod enjekte edilir. 2. Kullanıcı kendine gelen mesajı açmayı ister. 3. Mesaj açıldıktan sonra, mesaj içindeki zararlı kod client tarafında çalışır.

11 11 Stored XSS (Demo) 1 2 3 4 1.Bruce olarak sisteme girilir. 2.Bilgileri güncellerken “street” alanında xss açığı olduğu tespit edilir ve zararlı kod parçaçığı yazılır. 3. Yönetici olan Moe sisteme girer. 4. Moe sisteme girdikten sonra kullanıcı profillerine bakarken Bruce`un girmiş olduğu zararlı kod parçacığı browser tarafından çalıştırılır.

12 12 Sql Injection (Demo) Sql Injection açığı bulunan bir formdan arka arkaya sql cümleciklerinin çalışma demosu.

13 13 Blind Sql Injection Web uygulamaları bazen gerçekleştirdikleri SQL sorgu sonuçlarını direk olarak cevapta barındırmazlar, ama sorguların sonuçları cevabın içeriğini değiştirir. Örnek olarak kimlik doğrulama ekranları, durum kontrol ekranları v.b. Bu tür durumlarda SQL enjeksiyonu zafiyeti varsa yani ilgili SQL sorgusu dinamik olarak oluşturuluyorsa, saldırganın önünde bu durumu exploit edebilmesi için yazacağı saldırı sorguları ile cevap farklılığı oluşturması gerekmektedir. Bu farklılık sayesinde, oluşturduğu sql sorgularının doğru çalışıp çalışmadığını anlayacak ve buna göre bilgiler çıkarmaya başlayacaktır.

14 14 Blind Sql Injection (Demo) Sorgu: SELECT field1, field2, field3 FROM Users WHERE Id='$id' Gerekli Fonksiyonlar: SUBSTRING (text, start, length): klasik string manipulasyon fonksiyonu ASCII (char): verilen char değerinin ascii int karşılığı LENGTH (text): klasik string uzunluk fonksiyonu $id -> 1' AND ASCII(SUBSTRING(username,1,1))=97 AND '1'='1 Değişen Sorgu: SELECT field1, field2, field3 FROM Users WHERE Id='1' AND ASCII(SUBSTRING(username,1,1))=97 AND '1'='1' Koyu kısım doğru dönerse içerik değişmeyecektir. Yanlış dönerse cevap değişecektir. Doğal olarak bu işlem çok fazla istek gerektirir. 1’; waitfor delay ‘0:0:5 ile sunucu 5 saniye geç cevap verir (MSSQL).

15 15 Dökümanlar  http://www.owasp.org/ altında;  Web Uygulamalarında XSS’i Önlemek İçin; index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet  Web Uygulamalarında SQL Enjeksiyonu’nu Önlemek İçin; index.php/SQL_Injection_Prevention_Cheat_Sheet  Web Uygulamalarını Güvenlik Açıklarına Karşı Denetlemek İçin; index.php/Category:OWASP_Testing_Project

16 16 Algoritma Analizi ve Karmaşıklık Neden algoritmayı analiz ederiz? Algoritmanın performansını ölçmek için Farklı algoritmalarla karşılaştırmak için Daha iyisi mümkün mü? Olabileceklerin en iyisi mi? Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan Algoritmalarda Kamaşıklık: Bir algoritmanın hesaplama karmaşıklığının değerlendirilmesi algoritmanın çalışma hızı ve bellekte kapladığı alan ile ilgili bilgiler verir. Hesaplama karmaşıklığı iki açıdan incelebilir: zaman karmaşıklığı(time complexity) ve alan karmaşıklığı(space complexity). Zaman karmaşıklığı (Büyüme Hızı) Büyük-O notasyonu ile gösterilir. Büyüme hız bir algoritmanın performansını yansıtan en iyi göstergedir. Büyük-O girdi verisinin büyüklüğünü gösteren bir N parametresine dayanan bir fonksiyondur. Örneğin n değerine bağlı olarak performansı (sabit a, b, c değerleri için) an 2 + bn + c olan bir algoritmanın performansı O(n 2 )’dir

17 17 Sık Kullanılan Büyüme Hızları Zaman karmaşıklığıÖrnek O(1) sabitBağlı listeye ilk eleman olarak ekleme yapma O(log N) logSıralı bir dizide bir eleman arama O(N) lineerSıralı olmayan bir dizide bir eleman arama O(N log N)n-log-nN elemanı böl-parçala-yut yöntemiyle sıralama O(N 2 ) ikinci derecedenBir grafikte iki düğüm arasındaki en kısa yolu bulma O(N 3 ) üçüncü dereceden Ardarda gerçekleştirilen lineer denklemler O(2 N ) üstelHanoi’nin Kuleleri problemi

18 18 İkili Arama (Binary Search) Problem çözümlerinde böl ve yönet prensibine dayanır. Problemin büyüklüğünü belli oranda (genelde ½) azaltmak için sabit bir zaman harcanıyorsa bu algoritma O(log N)’dir. Bu algoritmada verilen veriler artan şekilde sıralanmış olmalıdır. – Veriler tamsayı ise en küçükten en büyüğe doğru sıralanmış, eğer kelime iseler alfabetik olarak sıralı şekildedir. Böyle bir veri kümesinde bir eleman aranması için algoritma ikili aramadır. İkili arama algoritmasının mantığı; sıralı veri kümesi ortadan iki kümeye ayrılarak bulunması istenen veri bu alt kümelerden hangisinin içerisinde olabileceğinin kontrolü prensibine bağlıdır. Arama işlemi alt kümelerde tekrarlanarak bulunması gerekli olan veri bulunmaya çalışılır.

19 19 İkili Arama Örneği

20 20 Blind SQL Injection & Binary Search Sorgu: Değişen Sorgu: SELECT field1, field2, field3 FROM Users WHERE Id='1' AND ASCII(SUBSTRING(username,1,1))=97 AND '1'='1‘ ASCII karakter kümesinde 97, ‘a’ harfine denk gelmektedir. Her bir karakterin kontrolü yapılır. İlk karakterin doğruluğunun ölçülebilmesi için (ASCII okunabilir karakter kümesi aralığı 32-126 dır); f(n) = Θ(log n) f(126-32) = Θ(log (126-32))‏ ~7 karşılaştırmada karakterin doğruluğuna erişilir. Milyon tane karakter için ne yapılabilir?

21 21 Blind SQL Injection için Binary Search Optimizasyonu Normal karakter kümesi boyutu ASCII 126 'dan 32'ye kadar : 94 karakter. Uppercase,Lowercase gibi dbms fonksiyonları ile karakter kümesi dörtte birine indirilebilir. - ASCII 65-90 (A-Z)‏ - f(90-65) = Θ(log (90-65)) = ~5 Farklı ikili arama ağaçları tanımlanarak istekte bulunulur. Örneğin; öyle bir binary tree oluşturulurki, sol tarafta harfler, sağ tarafta sayılar olur. Sayısal Dolayısıyla sayısal ifadelerin çok geçtiği isterler için daha hızlı sonuçlar verecektir.

22 22 Kaynaklar SQLiBench http://code.google.com/p/sqlibench/ http://code.google.com/p/sqlibench/ OWASP Project http://www.owasp.org/index.php/Category:OWASP_Sqlibenc h_Project http://www.owasp.org/index.php/Category:OWASP_Sqlibenc h_Project Binary Tree Applet http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20a pplet.htm http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20a pplet.htm Bedirhan Urgun – General Binary Search Algorithm http://www.webguvenligi.org/sqlibench/on_general_binary_search_s qli_algorithm_theory.html http://www.webguvenligi.org/sqlibench/on_general_binary_search_s qli_algorithm_theory.html

23 23 Teşekkürler! www.webguvenligi.org www.owasp.org E-posta listesine kayıt olmak için google: owasp turkey mail list


"Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP." indir ppt

Benzer bir sunumlar


Google Reklamları