230 likes | 543 Vues
Web 2.0. Savunma. Saldırı. Dili: Javascript. Bedirhan URGUN Web Güvenlik Topluluğu Tübitak – UEKAE urgunb@hotmail.com. İçerik. Amaç Motivasyon Javascript Temelleri Javascript ve İki Sıradışı Özelliği Javascript ile Saldırı Tespit - Demo Sonuç. Amaç.
E N D
Web 2.0 Savunma Saldırı Dili: Javascript Bedirhan URGUN Web Güvenlik Topluluğu Tübitak – UEKAE urgunb@hotmail.com
İçerik • Amaç • Motivasyon • Javascript Temelleri • Javascript ve İki Sıradışı Özelliği • Javascript ile Saldırı Tespit - Demo • Sonuç
Amaç • Javascript ileWeb 2.0 güvenliği farkındalığı
Motivasyon devam • Javascript Malware (kötücül yazılım) • Bilgi hırsızlığı • Oturum korsanlığı • Clipboard çalma • Tuş yakalama • Ekran çalma • İçerik değişikliği (tahrifat)
Geçmiş Tarama Motivasyon www.gnucitizen.org
Port Tarama Motivasyon www.gnucitizen.org
Dahili IP Çalma Motivasyon www.gnucitizen.org
Web Spidering Motivasyon www.gnucitizen.org
XSS Bot(net) Motivasyon www.gnucitizen.org
Açıklık Tarama Motivasyon www.spidynamics.com
Web Solucanı Motivasyon www.webguvenligi.org
Javascript Temelleri • 1995 Netscape, Brendan Eich • 1996 Microsoft, JScript • 1997 ECMA-262, ECMAScript • Lehçeler; • Mozilla Firefox, Spider Monkey, Rhino • IE, Opera, Konqueror, Safari • .NET Framework • Adobe: Flash, Flex, Acrobat
Javascript Temelleri devam • Dinamik • Prototip tabanlı • Zayıf yapısal (loose typing) • Statik kapsamlı (lexical scoping) • Birinci sınıf nesneler olarak fonksiyonlar • Açık kod dağıtımı (source code delivery)
Javascript Temelleri devam • Global ve lokal değişkenler tat = “tuzsuz”; function tuzkoy(){ tat = “tuzlu”; } tuzkoy() alert(tat); • Komut sonu karakteri ; veya yeni satır • Büyük küçük harf hassasiyeti var
Javascript Temelleri devam • Veri tipleri • Number • Boolean • String • null • undefined • ve diğer herşey Object
Javascript ve Farklı Özellikleri • Programlama Dilleri – 3xx • Buyurucu (Imperative) programlama • komutlarla durumun değişmesi • örn: for(var i=0; i < myarray.length; i++) square( myarray[i] ) • Bildirimsel (Declarative) programlama • fonksiyonların uygulanması • örn: myarray.map(square, null)
Javascript ve Farklı Özellikleri • Bildirimsel programlamanın 2 temeli • Lambda(birincisınıf nesneler : fonksiyonlar) var ikiEkle = function (x){ return x + 2; } ikiEkle(3); // sonuç 5 • Bir kez oluştur ve bir kez çalıştır
Javascript ve Farklı Özellikleri • Bildirimsel programlamanın 2 temeli devam • Closure (Kuşatma) function birEkle (y) { return function() { return y + 1; }; } var x = birEkle(5); x(); // sonuç 6
DEMO • Depolanmış XSS • Javascript ile Saldırı Tespit Stratejisi • Atlatma • Daha İyi Saldırı Tespit Stratejisi DEMO SUNUMDA DEĞİL
Sonuç • Javascript • Web 2.0 güvenliği için temel, • Web 2.0 uygulama geliştirilmesi için temel, • Göründüğünden daha karmaşık ve güçlü, • Her açıdan incelenmeye değer bir dil
Kaynaklar • Yahoo! UI Library: YUI Theater • Douglas Crockford • http://developer.yahoo.com/yui/theater/ • Javascript: The Definitive Guide • David Flanagan • http://books.google.com