resmin diğer yüzü: saldırılar ve Önlemler

30
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org Resmin Diğer Yüzü: Saldırılar ve Önlemler Mesut TİMUR Web Güvenliği Topluluğu Pro-G Bilişim Güvenliği [email protected] 23 ARALIK 2008

Upload: dagan

Post on 21-Mar-2016

59 views

Category:

Documents


7 download

DESCRIPTION

Resmin Diğer Yüzü: Saldırılar ve Önlemler. Mesut TİMUR Web Güvenliği Topluluğu Pro-G Bilişim Güvenliği [email protected]. 23 ARALIK 2008. İçerik. Grafik Manipülasyonu XSS IE - MIME Belirleme Algoritması LFI Savunma SecureImage Son. 2. Grafik Manipülasyonu Nedir ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Resmin Diğer Yüzü: Saldırılar ve Önlemler

Mesut TİMURWeb Güvenliği TopluluğuPro-G Bilişim Güvenliğ[email protected]

23 ARALIK 2008

Page 2: Resmin Diğer Yüzü: Saldırılar ve Önlemler

2

İçerik

Grafik Manipülasyonu XSS IE - MIME Belirleme AlgoritmasıLFISavunmaSecureImageSon

Page 3: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Grafik Manipülasyonu Nedir ?

Bir çok yazılım, kullanıcılardan resim kabul etmektedir: Forumlar Fotoğraf Galerileri Upload Sistemleri

Kullanıcıdan (dışarıdan) alınan her türlü girdinin kontrolleri eksiksiz biçimde yapılmalıdır.

Page 4: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Doğrulama Aşaması

Böyle bir yazılım tasarlıyorsak, neleri kontrol etmemiz gerekir ?Uzantı kontrolü

En genel doğrulama tipi. Sadece grafik dosyası uzantılarının kabülü Yeterli değil.

Boyut kontrolü 0 B 'dan büyük mü ? 5 MB'dan düşük mü ?

İçerik Kontrolü Gerçekten resim mi ?

Page 5: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Doğrulama Olmazsa ?

Alınan dosyalar webden erişilebilir bir klasör altına koyuluyorsa :Uzantı Kontrolü

Siteler Arası Betik Çalıştırma (XSS) Yerel Dosya Ekleme (LFI) PHP/ASP/x Shell Flash Politikası Atakları

İçerik Kontrolü Uzantı kontrolü yapılmamasından doğan tüm zafiyetler

Page 6: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Doğrulama Olmazsa ?

Alınan dosyalar webden erişilebilir bir klasör altına koyulmuyorsa : Boyut Kontrolü

Band genişliğinden hizmet aksatma Web sunucu harddiskini doldurmak

Çok pratik ataklar olmamalarına rağmen dağıtık gelen bir saldırı hedef sistem üzerinde çok etkili olabilir.

Page 7: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Cross-Site Scripting olarak bilinirKullanıcıların oturum bilgileri çalınabilirPort tarama yaptırılabilir.Phishing saldırıları yapılabilir. İnternet tarayıcısına hakimiyet (bazı

kısıtlamalar ile)Kurban kullanıcı sonraki ataklar için vekil

edilebilir.

Page 8: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Yeni bir grafik dosyası oluşturulurDosya notepad ya da başka bir metin

editörü ile açılır İlgili saldırının kabuk kodu girilir.

Dosya kayıt edilir, ve web uygulamasına yollanır.

Page 9: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Kötü niyetli hazırlanmış JavaScipt kodları, attack.jpg'e kaydedilir.

http://localhost/attack.jpg

Page 10: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Page 11: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Page 12: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Page 13: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Web uygulaması, ilgili grafik dosyasını erişilebilir bir yere yükler.

Grafik dosyasının URL'ine kurban kullanıcının IE ile bir şekilde tıklaması sağlanır.

Kurban kullanıcının linke tıklamasıyla, grafik dosyası içindeki JavaScript kodları çalışır ve saldırı gerçekleşir.

Page 14: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Siteler Arası Betik Çalıştırması (XSS)

Artık ilgili alan adının haklarıyla rastgele betik çalıştırılabilir.

Page 15: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Samy is My Hero

Samy çok yalnız ve arkadaşsızdı, fakat JavaScript bilgisi iyiydi. Bir XSS solucanı kodladı.

MySpace.com 'da bir adet XSS zafiyeti ile, 24 saatte 1.000.000'un uzerinde arkadaş edindi.

Portal solucanı temizlemek için, web sunucularını bir süre kapatmak zorunda kaldı.

Page 16: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Web Tarayıcının Yargılanması

Söz konusu atak sadece IE üzerinde çalışmaktadır.

Zafiyetin sadece IE üzerinde geçerli olma sebebi, IE'nin MIME İçerik Tipi belirleme algoritmasındaki bir tasarım probleminden kaynaklanmaktadır.

Mozilla Firefox bu zafiyetten etkilenmemektedir.

Page 17: Resmin Diğer Yüzü: Saldırılar ve Önlemler

MIME İçerik Tipi (Content-Type) Nedir ?

HTTP Protokolünde, sunucu tarafından gönderilen verinin istemci yazılım tarafından değerlendirilmesi için veriye eklenen başlık bilgisidir.

Verinin içerik tipini belirler. text/plain --> Düz Yazı image/jpg --> Jpeg Resim

Page 18: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Web Tarayıcının Yargılanması - II

IE web sunucudan gelen MIME içerik tipine güvenmeyip, kendisi farklı bir algoritma ile gelen dosyanın tipine karar vermektedir.

Bu algoritma kabaca gelen dosyanın ilk 200 byte'ını okuyup, bilinen MIME içerik tipleri ile eşleşip, eşleşmediğini kontrol etmektir.

Eğer MIME içerik tipi belirlenirse, IE gelen dosyayı tespit ettiği biçimde yorumlar.

Page 19: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Ve XSS Gerçekleşir

Aslında GIF,JPEG,PNG ya da başka bir uzantı ile gelen ve resim dosyası olması gereken dosyanın içeriği kötü niyetli JavaScript kodları olunca IE saldırganın işini kolaylaştırır ve ilgili JavaScript kodlarını çalıştırır.

Bu noktada saldırgan, kurban kullanıcının internet tarayıcısında rastgele betik çalıştırma hakkı(bazı kısıtlamalarla) kazanmıştır.

Page 20: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Dosya Ekleme

PHP dilindeki, dosya ekleme zafiyetleri bulunamaktadır. Bundan faydalınarak kod enjeksiyonu atakları yapılabilmektedir.

http://www.example.org/index.php?page=archivepage Paramatresi include, require gibi

gösterilen dosyayı koda ekleyen PHP fonksiyonlara gönderilir.

Eğer page parametresi hiçbir kontrolden geçirilmiyorsa, saldırgan istediği dosyayı index.php dosyasının kodlarına ekler ve çalıştırabilir.

Page 21: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Dosya Ekleme - II

File Inclusion olarak bilinirSunucu üzerinde, web sunucu yazılımının

haklarıyla rastgele komut çalıştırılabilir.Geliştirilen güvenlik önlemleri sebebiyle bir

çok durumda, farklı web sitelerinden dosya eklenememektedir.

Bundan dolayı, aynı sistem üzerinden dosya eklemeye izin veren zafiyetlere, Lokal Dosya Ekleme zafiyetleri denir.

Page 22: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Dosya Ekleme - III

Ama kötü durum şudur ki; genellikle web sunucu üzerinde , sisteme hakimiyet sağlayacağınız kodların bulunduğu bir sayfa yoktur.

Ama sisteme resim yükleme hakkınız varsa, istediğiniz kodlarla doldurulmuş bir dosyayı yükleme ihtimaliniz doğar.

Kötü niyetli hazırlanmış PHP kabuk kodları bir resim dosyasına doldurulur ve sunucuya yüklenir.

Page 23: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Dosya Ekleme - IV http://www.example.org/index.php?page=images/BadImage.jpeg?Bu şekilde index.php dosyasına, kötü niyetli

PHP kabuk kodları eklenebilir. Sonrasında :

Page 24: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Peki Savunma !

Yapılması gereken, her zaman olduğu gibi dışarıdan girdi olarak alınan hiçbir şeye güvenmemektir.

Resim dosyası da pekala bir girdidir ve dışarıdan alınmadan, çeşitli kontrollerden geçirilmesi zorunludur.

Doğru şekilde kontrol edilmemiş her girdi, problem yaratma potansiyelini barındırmaktadır.

Page 25: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Genel Kontroller

Sunumun başında bahsettiğimiz kontroller, 3 ana başlıkta toplanabilir :Uzantı kontrolüBoyut kontrolü İçerik kontrolü

Uzantı ve boyut kontrolü, basit bir karşılaştırma işlemi ile gerçekleştirilebilir, asıl sorun içerik kontrolünün ne şekilde gerçekleştirileceğidir.

Page 26: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Gerçekten Resim Mi ?

1.Resimin, gerçekten resim olduğundan emin olunur.

Bu noktada çeşitli fikirler olabilir, lakin benim önereceğim bilinen herhangi bir API ile grafik dosyasının açılmaya çalışılmasıdır

2.EXIF gibi veri saklanacak alanlar temizlenir. Hem EXIF'te saklanacak PHP kabuk kodları için,

hem de kullanılacak API'nin yazılım marka ve model bilgilerinin sızmasını engellemek için gereklidir.

Page 27: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Kontrol Metodolojisi – PHP İmp.

1.Dosya openImage fonksiyonu ile açılmaya çalışılır. Eğer açılamazsa dosya geçerli değildir. Bu aşamada , dosyanın salt istemci taraflı dil

kodlarından oluşmadığına emin olabiliriz. 2.Dosya başka bir tipe çevrilir ( X --> Y)3.Tersine çevrim işlemi yapılır ( Y--> X)

Bu aşamada dosyanın içindeki tüm zararlı kodların temizlendiğine emin olabiliriz.

Çevirme işlemlerinden sonra EXIF alanında kullanılan GD kütüphanesinin banner'ı kalır, potansiyel GD zafiyetlerinde hedef olmamak için temizlemek gerekir.

Page 28: Resmin Diğer Yüzü: Saldırılar ve Önlemler

SecureImage ve Kod Örneği

Bu işlemleri bünyesinde yapan ufak bir kütüphane SecureImage

http://code.google.com/p/secureimage1.<?php2.include("SecureImage.php");3.$image=new SecureImage('image.jpg');4.if($image->CheckIt())– echo "Yeaah Dude! You can trust it";1.else– echo "Bad image file!";– ?>

Page 29: Resmin Diğer Yüzü: Saldırılar ve Önlemler

NSecureImage ve JSecureImage

SecureImage kütüphanesinin .NET ve Java portları yayınlandı :NSecureImage, Kerem Küsmezer

http://www.codeplex.com/owaspturkey/Release/ProjectReleases.aspx?ReleaseId=18008

JSecureImage, Bedirhan Urgun http://code.google.com/p/jsecureimage/downloads/list

Page 30: Resmin Diğer Yüzü: Saldırılar ve Önlemler

Sorularınız & Teşekkürler & Son

http://www.webguvenligi.orghttp://www.h-labs.org