Web 2.0 Güvenliği @2014 Örnek Eğitim Notu bilgi@bga.com.tr



Benzer belgeler
Basit bir web uygulaması

Öğr. Gör. Serkan AKSU 1

Algorithm of Your Life. AJAX ve...

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

solid; BORDER-LEFT: #1F9FFF 0px solid; BORDER-RIGHT: #1F9FFF 0px solid; BORDER-TOP: #1F9FFF 0px solid; COLOR: #1F9FFF; FONT-FAMILY: Trebuschet MS;

Web Uygulama Pentest Eğitimi

Selective Framebusting

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

JAVASCRIPT JAVASCRIPT DİLİ

YZM 3215 İleri Web Programlama

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

Ajax kullanımı oldukça yaygınlaşmaktadır. Web tabanlı uygulamalar Ajax desteği ile çok daha esnek kullanışlı, performanslı bir yapıya kavuşmaktadır.

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme

AJAX WITH JQUERY. Ajax Hikayesi MODULE 11

Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

Üst Düzey Programlama

Web Uygulama Güvenliği Kontrol Listesi 2010

Google Search API ile ajax arama

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Web Uygulamaları Mimarileri ve Güvenliği

8- Sistem tarihinden gün değerini alarak çift veya tek sayı olup arasındaki sayılardan tek olanları yeşil çift olanları kırmızı

JavaScript & DOM XML & JSON

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

VERİ GÜVENLİĞİ. Web Uygulamaları Güvenliği. Özer Çelik Matematik-Bilgisayar Bölümü

KURULUM KILAVUZU MART Visilabs Target Kurulum Kılavuzu

4.41. WEB DE GENÇ TEKNİK: AJAX. Fırat Üniversitesi Fen Bilimler Enstitüsü, Elazığ. Fırat Üniversitesi Teknik Eğitim Fakültesi,

WEB PROGRAMLAMA. DERS NOTLARI / JavaScript e Giriş YARD. DOÇ. DR. MEHTAP YALÇINKAYA

WEB FORMLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

CODEIGNITER SEMINERI KÜTÜPHANE YAZMA GÜVENLIK ÖNLEMLERI CODEIGNITER 2.0

Güvenlik Java ve Web Uygulama Güvenliği

Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme

İSMET AKTAR ANADOLU TEKNİK LİSESİ BİLİŞİM TEKNOLOJİLERİ ALANI WEB PROGRAMCILIĞI DALI

Javascript Ders Örnekleri -2. Tarayıcı Görüntüsü

YZM 3215 İleri Web Programlama

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

PAKET TRANSFER SİSTEMİ

Güncel İnternet Teknolojileri ve PHP 2

API v2 Multi Smart Card ( ) 4- VERİİMZA API ile bir web uygulaması nasıl haberleşir?

İNTERNET PROGRAMLAMA II. Tanımlar

Hacettepe Üniversitesi Bilgisayar Müh. Bölümü 2005 Güz Dön. Bil 447 Yazılım Müh. Lab. Dersi Araştırma Çalışması. 1. Giriş Ajax nedir?

WEB TASARIMININ TEMELLERİ

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PAKET TRANSFER SİSTEMİ

İstemci Tabanlı Saldırı Türleri. Ozan UÇAR

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

TC KİMLİK NO SMS GÖNDERİM SOAP API

0x01 : Zafiyetin İncelenmesi

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

JavaScript Örnekleri PDF

XSS Exploitation via CHEF

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Doç.Dr. Yaşar SARI ESOGÜ Turizm Fakültesi-Eskişehir BİLGİSAYAR AĞLARI (COMPUTER NETWORKS)

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

FireBug eklentisini eklentiyi yazan sitesinden veya FireFox un eklentiler indirebilirsiniz.

Üst Düzey Programlama

PROGRAMLAMA DERSİ 1. İNTERNET

Client Server Database

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

Pac Dosyası İle Proxy Kullanmak

MOKA ÖDEME SERVİSİ BAYİ İŞLEMLERİ ENTEGRASYON DOKÜMANI

Özgür Yazılımlar ile Statik ve Dinamik Kod Güvenliği Analizi Emre Evren Yalçın

ASP.NET ile Bir Web Sitesi Oluşturma

Javascript Nedir? Javascript Nedir? JAVASCRIPT NEDİR?

Web Tasarımı - Yrd. Doç. Devkan Kaleci 1

Dağıtık Sistemler CS5001

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

WEB TASARIMININ TEMELLERİ

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

PHP 1. Hafta 1. Sunum

Web Uygulama Saldırıları ve Klasik Çözümlerin Yetersizliği

Web Programlama Kursu

Web Application Penetration Test Report

BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

PAKET TRANSFER SİSTEMİ

Web Önyüzü Nasıl Olmalı? <Markup> : İskelet {css} : Görünüm JavaScript() : Etkileşim

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

Web Tasarımının Temelleri

Interprise. Ülker İletişim Web Servisi. Bu doküman Ülker iletişim web servisi hakkında teknik açıklamaları içerir. İletişim web servisi web adresi :

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

FTP ve Güvenlik Duvarları

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

YZM 3215 İleri Web Programlama

Web Uygulama Güvenliğinde Doğru Bilinen Yanlışlar!

Eczane İlaç Satış Onay Bildirimi Web Servislerinin Kullanım Kılavuzu

Spring Security Framework Harezmi Bilişim Çözümleri

DEVLET KURUMLARINDA WEB ERİŞİLEBİLİRLİĞİ

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Transkript:

Web 2.0 Güvenliği @2014 Örnek Eğitim Notu bilgi@bga.com.tr

Javascript 1995 Netscape, Brendan Eich tarafından geliştirildi. Dinamik olmasının yanında en önemli iki özelliği; Lambda Closure

Javascript - Lambda var ikiekle = function (x) { return x + 2; } ikiekle(3); // sonuç 5

Javascript - Closure function birekle (y) { return function() { return y + 1; }; } var x = birekle(5); x(); // sonuç 6

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

İstemci Taraflı Mashup JSON REST XML Uygulama Browser proxy AJAX Kütüphanesi

Sunucu Taraflı Mashup JSON REST XML Browser Uygulama AJAX Kütüphanesi

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)

İSTEMCİ BEKLEME ZAMANI WEB UYGUALAMA Senkron 1. Kullanıcı linke tıklar 2. Uygulama cevap döner

İSTEMCİ AJAX uygulama kodları WEB UYGUALAMA Asenkron Kullanıcı linke tıklar Kullanıcı butona basar

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>

AJAX Örneği İstek / Cevap

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ı

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 ] }

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ü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ü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 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

JSON Denetim Noktaları İstemci JSON kontrolü Uygulama İstemci JSON kontrolü Uygulama İstemci JSON kontrolü Uygulama

JSON Denetimi - Java JSONParser jsonparser = new JSONParser(); try{ JSONObject json = (JSONObject)jsonParser.parse(jsonString); } catch(parseexception pe){ // invalid JSON }

JSON Denetimi - Javascript isvalid = true; try{ obj = JSON.parse(json); } catch(e){ // Invalid JSON isvalid = false; }

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.

JSON Hijacking Senaryo GET / HTTP/1.0 SALDIRGANIN WEB SİTESİ 1 kullanıcı HTML 2 3 [ ahmet, veli, cevat, şeyhmus ] GET /ArkadaslarimiGetir.do HTTP/1.0 Cookie: JESSIONID=3asdkasdja [ ahmet, veli, cevat, şeyhmus ] SOSYAL AĞ WEB UYGULAMASI

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); }

JSON Hijacking - Exploit <html> <head> <script> {Array OVERRIDE} </script> </head> <body> <script src= http://sosyalag.com/arkadaslarimigetir.do > </script> </body> </html>

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.

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}

SOP istemci sunucu abc.com browser http://abc.com/one.js xyz.com

SOP ByPass http://abc.com/one.js browser abc.com xyz.com proxy istekleri

browser xyz.com CORS Örnek http://abc.com/one.js GET / HTTP/1.1 Host: xyz.com Origin: abc.com HTTP/1.1 200 OK Access-Control-Allow-Origin: *

CORS - Browser Desteği

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 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 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

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)); }

DOM Tabanlı XSS - Senaryo Sunucuya giden parametre

DOM Tabanlı XSS - Senaryo Sunucuya giden parametre yok!

DOM Tabanlı XSS - Senaryo Sunucuya giden XSS String yok!

DOM Tabanlı XSS - Önlemler HTML Kodlama kullanılması element.innerhtml = <%= HTMLEncode(param) %> ; element.outerhtml = <%= HTMLEncode(param) %> ; document.write( <%= HTMLEncode(param) %> ); document.writeln( <%= HTMLEncode(param) %> );

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);

İ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

İstemci Taraflı Kodlama Uygulama İstemci CSS/URL/Javascript HTML/HTMLAttribute kodlama

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+ '>);

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>');

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); }

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.

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

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? //... }

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