Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web 2.0 Güvenliği

5,808 views

Published on

Published in: Technology
  • Sex in your area is here: ♥♥♥ http://bit.ly/2F7hN3u ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2F7hN3u ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Web 2.0 Güvenliği

  1. 1. Web 2.0 Güvenliği @2014 Örnek Eğitim Notu bilgi@bga.com.tr Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  2. 2. Javascript • 1995 Netscape, Brendan Eich tarafından geliştirildi. • Dinamik olmasının yanında en önemli iki özelliği; – Lambda – Closure Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  3. 3. Javascript - Lambda var ikiEkle = function (x) { return x + 2; } ikiEkle(3); // sonuç 5 Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  4. 4. Javascript - Closure function birEkle (y) { return function() { return y + 1; }; } var x = birEkle(5); x(); // sonuç 6 Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  5. 5. Mashup • Diğer servislerin verilerinin birleştirilmesi ve sunulması ile oluşturulan servis tipidir. • Başkasının aklını kullanmak • Mashup tipleri; – İstemci taraflı – Sunucu taraflı Mashup’larda Kullanılabilen Popüler Servisler Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  6. 6. İstemci Taraflı Mashup JSON REST XML Uygulama Browser proxy AJAX Kütüphanesi Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  7. 7. Sunucu Taraflı Mashup JSON REST XML Browser Uygulama AJAX Kütüphanesi Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  8. 8. AJAX • Asynchronous JavaScript and XML • Asenkron web uygulamaları geliştirmek için kullanılan birbirleri ile uzaktan ilgili web geliştirme teknolojileridir; – Javascript – DOM, HTML, CSS – XMLHttpRequest nesnesi – JSON (XML daha azınlıkta) Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  9. 9. BEKLEME ZAMANI İSTEMCİ 1. Kullanıcı linke tıklar 2. Uygulama cevap döner WEB UYGUALAMA Senkron Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  10. 10. Asenkron Kullanıcı butona basar WEB UYGUALAMA AJAX uygulama kodları İSTEMCİ Kullanıcı linke tıklar Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  11. 11. AJAX Örneği <script type="text/javascript"> function sH(str){ // kod } </script> <form> İsim: <input type="text" onkeyup="sH(this.value)" /> </form> Öneriler: <span id="txtHint"></span> Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  12. 12. AJAX Örneği – İstek / Cevap Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  13. 13. AJAX Veri Transfer Şekilleri • XML – Yarı yapısal dil – Javascript kullanılan istemciler için anlamsız • JSON – Javascript tabanlı bir notasyon şekli – Javascript kullanılan istemciler işlemeye hazır yapı Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  14. 14. JSON • Javascript tabanlı hafif sıklet veri iletişim formatıdır. • XML ile karşılaştırıldığında, daha okunaklı ve anlaşılır ve daha kolay parse edilebilir. { “name” : “hagi” , “name” : “ronaldo” } [“ulvi” , “rıza”, “metin”, “cevat” ] { “names” : [“feyyaz”, “cüneyt”, “müjdat”] } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  15. 15. XML vs. JSON <menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> </popup> </menu> {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"} ] }} Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  16. 16. Güvensiz Callback’ler • Dinamik script’ler ile yapılan asenkron veri aktarımı istek /insecurecallback/cntcts.php?callback=showContacts&q=a cevap showContacts([“ahmet”,”veli”,“cevdet”]); Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  17. 17. Güvensiz Callback’ler - Saldırı • CSRF kullanılarak kontak listesinin çalınması <script type="text/javascript"> function hijacked (contacts){ alert(contacts); } </script> <script src="http://hedef/cntcts.php?callback=hijacked&q=*"> </script> Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  18. 18. Güvenli JSON Yönetimi • JSON verisinin işlenebilmesi için model nesnelere dönüştürülmesi gerekir. • Dönüştürme işlemi sırasında oluşabilecek injection problemleri engellemek için JSON verileri mutlaka yapısal olarak denetlenmelidir. – Sunucu tarafında JSON veriyi alırken – Sunucu tarafında JSON veriyi istemciye gönderirken – İstemci tarafında JSON veriyi alırken Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  19. 19. JSON Denetim Noktaları JSON kontrolü İstemci Uygulama JSON kontrolü İstemci Uygulama JSON kontrolü İstemci Uygulama Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  20. 20. JSON Denetimi - Java JSONParser jsonParser = new JSONParser(); try{ JSONObject json = (JSONObject)jsonParser.parse(jsonString); } catch(ParseException pe){ // invalid JSON } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  21. 21. JSON Denetimi - Javascript isValid = true; try{ obj = JSON.parse(json); } catch(e){ // Invalid JSON isValid = false; } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  22. 22. JSON Hijacking • 2006’da Gmail’de bulunan bir zafiyet ile popüler olan bir zafiyettir. • Modern browser’lar ile beraber günümüzde düşük seviyeli bir zafiyettir. Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  23. 23. JSON Hijacking – Senaryo SALDIRGANIN WEB SİTESİ GET / HTTP/1.0 [‘ahmet’, ‘veli’, ‘cevat’, ‘şeyhmus’] 3 HTML 1 GET /ArkadaslarimiGetir.do HTTP/1.0 Cookie: JESSIONID=3asdkasdja SOSYAL AĞ WEB UYGULAMASI kullanıcı 2 [‘ahmet’, ‘veli’, ‘cevat’, ‘şeyhmus’] Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  24. 24. JSON Hijacking - Kod function Array(){ var orjinalArray = this; var yeniArray = function(){ for(var x in orjinalArray) calinanListe += orjinalArray[x] + “,”; // çalınanListe’yi gönder } // this nesnesinin dolmasını bekle setTimeout(yeniArray, 150); } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  25. 25. JSON Hijacking - Exploit <html> <head> <script> {Array OVERRIDE} </script> </head> <body> <script src=“http://sosyalag.com/ArkadaslarimiGetir.do”> </script> </body> </html> Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  26. 26. JSON/Javascript Önlemler • Eski tarayıcılar için; – Hassas bilgi dönen AJAX isteklerinin GET yerine sadece POST ile çalıştırılması – JSON array yerine JSON object dönülmesi {…} – CSRF token’ları – Hassas bilgi; • Kullanıcı listesi, profili, mesajları, geçmişi v.b. • Kişisel bilgiler; adres, telefon, isim soyisim, v.b. • Sağlık bilgileri, finansal bilgiler v.b. Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  27. 27. Cross Domain Access - CORS • SOP’un yani Aynı Kaynak Politikası’nın uyguladığı cross domain istek kısıtlamalarına karşı geliştirilen bir W3C standardıdır. • Kaynak: {protokol, alan ismi, port} Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  28. 28. SOP istemci sunucu abc.com browser http://abc.com/one.js xyz.com Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  29. 29. SOP ByPass http://abc.com/one.js browser abc.com xyz.com proxy istekleri Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  30. 30. CORS Örnek GET / HTTP/1.1 Host: xyz.com Origin: abc.com HTTP/1.1 200 OK Access-Control-Allow-Origin: * xyz.com browser http://abc.com/one.js Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  31. 31. CORS - Browser Desteği Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  32. 32. Güvenli CORS Stratejileri • Access-Control-Allow-Origin: * değeri dikkatli kullanılmalıdır. Access-Control-Allow-Origin: * Access-Control-Allow-Origin: www.izinverilendomain.com Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  33. 33. Güvenli CORS Stratejileri • Origin: domainismi değeri klasik yetkilendirme kontrolleri için kullanılmamalıdır. String origin = request.getHeader(“Origin”); if(origin!=null && origin.equals(“www.abc.com”)) // hassas bilgileri istemciye dön else // normal sayfayı göster Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  34. 34. Güvenli CORS Stratejileri • Origin başlığının değeri hedef uygulamalarda mutlaka kontrol edilmelidir. response.setHeader(“Access-Control-Allow-Origin”, “www.abc.com”); // isteği işlemeye devam et String origin = request.getHeader(“Origin”); if(origin!=null && origin.equals(“www.abc.com”)) response.setHeader(“Access-Control-Allow-Origin”, “www.abc.com”); else return; // isteği işlemeden dön Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  35. 35. DOM Tabanlı XSS • Javascript’in neden olduğu XSS çeşididir. <script> function printName(){ var index = length = document.URL.length; if(document.URL.indexOf("name=") != -1) index = document.URL.indexOf("name=") + 5; var substr = document.URL.substring(index,length); document.write(unescape(substr)); } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  36. 36. DOM Tabanlı XSS - Senaryo Sunucuya giden parametre Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  37. 37. DOM Tabanlı XSS - Senaryo Sunucuya giden parametre yok! Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  38. 38. DOM Tabanlı XSS - Senaryo Sunucuya giden XSS String yok! Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  39. 39. DOM Tabanlı XSS - Önlemler • HTML Kodlama kullanılması element.innerHTML = “<%= HTMLEncode(param) %>”; element.outerHTML = “<%= HTMLEncode(param) %>”; document.write(“<%= HTMLEncode(param) %>”); document.writeln(“<%= HTMLEncode(param) %>”); Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  40. 40. DOM Tabanlı XSS - Önlemler • Javascript Kodlama kullanılması var x = document.createElement(“input”); x.setAttribute(“name”, “cname”); x.setAttribute(“value”, “<%= JSEncode(param) %>”); var form1 = document.forms[0]; form1.appendChild(x); Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  41. 41. İstemci Taraflı Kodlama • Browser’da, güvensiz mashup kaynaklarını çağıran javascript uygulamalarının alması gereken önlemler • Sunucu taraflı XSS koruma yöntemlerinin istemci tarafındaki versiyonu • JQEncoder Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  42. 42. İstemci Taraflı Kodlama Uygulama İstemci CSS/URL/Javascript HTML/HTMLAttribute kodlama Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  43. 43. HTML ve HTML Attribute Kodlama HTML Kodlama: $('#item1').html(data[0]); $('#item1').html($.encoder.encodeForHTML(data[0])); HTML Attribute Kodlama: $('#item2').html('<div width="' + data[1] + '">'); ec = $.encoder.encodeForHTMLAttribute('width', data[1], false); $('#item2').html('<div ' + ec+ '>); Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  44. 44. Javascript ve URL Kodlama Javascript Kodlama: $('#item4').html('<div onclick="s='' + data[3] + ''">'); ec = $.encoder.encodeForJavascript(data[3]); $('#item4').html('<div onclick="s='' + ec + ''">'); URL Kodlama: $('#item5').html('<a href="?a=' + data[4] + '">link</a>'); ec = $.encoder.encodeForURL(data[4]); $('#item5').html('<a href="?a=' + ec + '">link</a>'); Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  45. 45. CSS Kodlama CSS Kodlama: $('#item3').html('<div style="color:' + data[2] + ';">'); ec = $.encoder.encodeForCSS('background-color', data[2], false); try{ $('#item3').html('<div style="' + ec + '">'); } catch(e){ alert('encodeForCSS throws exception: ' + e); } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  46. 46. SOA Güven Karmaşası • Servis tabanlı mimaride karşılaşılan en büyük dizayn problemlerinde biri güven karmaşasıdır. • Servis veren veya tüketen bileşenler güvenlik kontrollerini birbirlerinin sorumluluğu olarak görmektedirler. • Bu "yanlış sorumluluk transferi" ciddi güvenlik problemlerine yol açmaktadır. Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  47. 47. SOA Güven Karmaşası istemci sunucu A Ben intranet’teyim, uygulama tarafına güveniyorum! Ekim 2009 Zamanım az, web servis tarafı kontrolleri yapmıştır! B intranet web servis Kasım 2012 Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  48. 48. Kontrol Stratejisi • SOA’nın mantığına uygun olarak her servis aldığı parametre değerleri ile yapabileceği maximum kontrolü gerçekleştirmelidir. function paraOde(int id, String tamisim, String tckno, int miktar, DateTime odemeTarihi, String ccNo){ // tckno ile tamisim örtüşüyor mu? // odemeTarihi uygun mu? // ccNo ile tamisim örtüşüyor mu? // miktar doğru mu? // ... } Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr
  49. 49. BGA İletişim www.bga.com.tr blog.bga.com.tr twitter.com/bgasecurity facebook.com/BGAkademisi bilgi@bga.com.tr egitim@bga.com.tr Güvenli Web 2.0 Eğitimi© 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

×