Wednesday, 18.06.2025, 03:54

Welcome Guest | RSS

Main » 2010 » August » 18 » Passport Hack
16:48
Passport Hack
Bu yazi Microsoft Passport`taki bir güvenlik açigini anlatiyor. Yazida bir kullanicinin Passport hesabini ele geçirme hakkinda detayli bilgi ve örnek kodlar verilecektir. Orjinali: Chris Shiflett Fakat tüm bilgiler egitim amaçli kullanim içindir. Amaç web üzerindeki güvenligin detayli bir analizini yapmak ve bazi yanlis anlamalari ortaya çikarmak. Su anki Passport mekanizmasinin kullaniminda tavsiyelerim ve güvenligini artirma yollari ile yazimi bitirecegim. Altyapi Microsoft Passport kullanicilarin Internet üzerinde sunulan ve kayit gerektiren servislere daha kolay erisimi için yaratilan bir mekanizmadir. Amaç kullanicilarin bir Passport için kayit olmalari ve çesitli sitelerdeki servisleri, her birinde kayit olmaya gerek duymadan (harcanan vakit ve sifrelerin bakimi her zaman sorun olmusdur) kullanabilmeleridir. Passport`un ek bir özelligi de Wallet`dir (cüzdan). Bir Wallet`e sahip oldugunuzda kredi karti bilgilerini ve ek kisisel bilgileri depolayabilirsiniz. Bu katilimci sitelerde satin alma islemlerinde kullanilabilir. Çerezler (Cookies) Passport basitçe kullanicinin bilgisayarinda depolanan cookie koleksiyonudur. Bu cookie`ler kullaniciyi Passport kulanan bir siteye tanitir. Passport mekanizmasinda sunucudan sunucya haberlesme yoktur, tüm haberlesme kullaniciya dogrudur. Bu islem için ayarlanan çesitli cookie`ler asagidaki gibidir: isim alanadi güvenli? dizin depolanma BrowserTest passport.com Hayir / hafiza MSPVis passport.com Hayir / disk MSPDom passport.com Hayir / disk MSPAuth passport.com Hayir / disk MSPProf passport.com Hayir / disk MSPSec passport.com Evet /ppsecure disk MSPRequ login.passport.com Hayir / hafiza PWSVis wallet.passport.com Evet / hafiza MSPAuth walletpassport.com Evet / hafiza Microsoft Internet Explorer 5.5 öncesi sürümler istemci-tarafi scriptlerin o anki web sunucu ile paylasilmamasi gereken cookie`leri görüntüleyebilmesine izin veren bir cookie güvenlik açigi içeriyordu. Passport`un arkasindaki mekanizma tamamen cookie`lere dayali oldugu için bu kombinasyonun problemleri ortadadir. Kriptolama (Encryption) Bir zincir sadece en güçsüz baglantisi kadar güçlüdür. Tanidik geliyormu? Birseylerin kriptolanmis olmasi ile sahte bir güvenlik duygusuna kapilanlarin çoklugu sizi sasirtabilir. Yukarida bahsedilen cookie`lerin bazisi kriptolanmis degerlere sahiptir. Bu yazida bu degerlerin dekriptolanmasi ile ilgili birseye rastlamayacaksiniz. Neden? Çünkü bunu yapmak zor ve kesinlikle gereksiz. Kriptografi çok zevkli bir konu olsada bu yazinin amaci Passport gibi bir mekanizmanin nasil kolaylikla kirilabilecegi. Web sitemize veya web servisimize girmeye çalisan biri genellikle en kolay yolu seçecektir. Bir kullanici Passport kullanan bir siteye girdiginde sitenin kendisi dekriptolamayi gerçeklestirir. Gerçek kullanicinin sahip oldugu kriptolanmis cookie`lerin aynilarini sunarak o kullanicinin kimligine bürünmek mümkündür. Birisinin cookie içerisindeki degerleri dekriptolamasindaki tek amaç Passport kullanilan bir site yaratmak olabilir. HTTP Detaylari (pek çok web gelistirici tarafindan dahi) gözardi edilsede yada bilinmesede Web`de gezinen çogu insan HTTP hakkinda bilgi sahibi olmustur. Microsoft Passport`u nasil altettigimi anlayabilmek için HTTP 1.1 ve onun cookie`leri nasil kullandigi hakkinda temel bir bilgi sahibi olmak gerekli. HTTP`nin bu yazida bahsedilmeyecek olan pek çok detayi vardir. Tüm tanimlamalar için RFC 2616`ya danisabilirsiniz. Basit HTTP senaryosu bir istek ve cevaptan olusan tek bir transferdir. Kullanici web`de gezinirken, Web browser (istemci) kullanicinin ziyaret ettigi sitelere çesitli istekleri yapar. Web sunuculari da web sayfalarini isleyen browser`a cevaplar döner. örnek istek: GET / HTTP/1.1 Host: www.k2labs.org User-Agent: Mozilla/5.0 Accept: text/xml, image/png, image/jpeg, image/gif, */* Accept-Language: en-us Accept-Encoding: gzip, deflate, compress, identify Connection: keep-alive Bu örnek istek bir MOzilla browser ile [hide] http://www.k2labs.org/ [/hide] adresine yapilmistir. Basliklar (Host, User-Agent, Accept, Accept-Language, Accept-Encoding, Connection) HTTP spesifikasyonunda izin verilen basliklardan bazilaridir. Her baslik sunucunun istemci tarafindan yapilan istege cevap vermesine yardimci olacak bilgiler içerir. örnek cevap: HTTP/1.1 200 OK Date: Wed, 01 Aug 2001 22:00:00 GMT Server: Protoscope 0.0.1 Connection: close Set-Cookie: k2labs=chris; domain=.k2labs.org; Path=/; Content-Length: 38 Content-Type: text/html Protoscope 0.0.1 Örnek cevap web sunucu ve cevap tipi hakkinda bazi bilgiler veriyor. Cevapta içerik ve basliklarin birbirinden 2 yeni satir ile ayrildigini farketmissinizdir. Bu HTTP`nin transfer davranisini açiklar. Baslangiç baglantisi yapilip istek gönderildiginde cevap gelene kadar baglanti (zaman asimi durumu olmadikça) açiktir. Webde oturum yönetimini güvenli hale getirmenin zor olmasinin sebeplerinden biri her transferin atomik olmasidir. Örnek HTTP cevaptaki en önemli baslik Set-Cookie basligi. Örnekte k2labs isminde ve chris degerine sahip bir cookie yaratiliyor. Set-Cookie basligindaki diger tüm bilgiler browser`in daha sonraki isteklerinin basliklarinda bu cookie`yi bulundurup bulundurmayacagini belirleyen bilgilerdir. Görecegimiz gibi diger hiçbir bilgi web sunucuya dönülmez, sadece isim ve degeri saglanir. Örnekteki cookie, son kullanim degeri (expiration date) belirlenmedigi için diske yazilmayacak ve hafiza da duracaktir. Sadece k2labs.org alt-alanlarina (subdomain) yapilan isteklerde gönderilecek ve dizinde bir sinirlama yok. Yazilacak her cookie ayri Set-Cookie basliklari ile geçirilir. Bu asagida gösterildigi gibi, birden fazla cookie`nin web sunucuya geri sunulmasi metodlarinda çesitlilik gösterir. Bilmeniz gereken son bilgi de browser`in bir istek yaparken web sunucuya daha önceden belirlenmis cookie`yi nasil gönderecegidir. Örnek Cookie basligi: Cookie: k2labs=chris Farkedeceginiz gibi cookie`nin degerinden baska hiçbir bilgi verilmiyor. Diger tüm bilgiler daha önce bahsettigim gibi sadece erisim gereksinimlerini belirlemek için. Eger birden fazla cookie sunuluyorsa her biri ayni sekilde (isim=deger) listelenir ve biribirinden noktali virgül ile ayrilir (isim=deger;isim2=deger2). Bu sebeple sadece tek bir Cookie basligi gönderilir. Güvenlik Açigi Microsoft Internet Explorer 5.5 öncesi sürümler cookie`lerde amaçlanan erisim gereksinimlerini tamamen asan bir güvenlik açigi içeriyor. Etkilenen browser`larin genis kullanimi (browserwatch.com`a göre yaklasik olarak %67.6) sebebiyle bu önemli bir açik teskil ediyor. Özel yapilandirilmis bir URL ile, bir web sitesi etkilenen browser`a istemci-tarafinda çalisan (client-side) script`ler yollayarak normalde okuyamayacagi cookie içeriklerini kendisine yollanmasini saglayabilir. Bu güvenlik açigi adresinde anlatilmaktadir. Bu tip bir URL`ye örnek: / ve ? isaretlerinin encode edilmis degerlerini kullanarak www.k2labs.org adresindeki bir sayfanin (etkilenen browser`a) .login.passport.com alanadi içerisindeymis gibi ve /ppsecure dizini altinda çalisiyor gibi gösterdik. URL aslinda asagidaki gibi: Daha önce listeledigimiz Passport cookie`lerini hatirlayacak olursaniz, bu bize .wallet.passport.com alanindaki ikisi (PWSVis ve PWSTok) hariç tüm cookie`lere erisim sagliyor. Diger ikisi de yukaridaki örnekte 'login' yerine 'wallet' yazilarakgörüntülenebilir. Etkilenen browserlar bu URL`yi bozuk olarak algilamiyor. Istek dogru host`a gönderildi (www.k2labs.org). Bu tabi ki bizim erisim yapabilmemiz için gerekli. Diger bir nokta, browser Passport cookie`lerini içeren HTTP Cookie basligini dönmeyecektir. Bu yüzden browser`dan Passport Cookie`lerini çikartmakta bu basligi kullanamayiz ve alternatif bir metod gelistirmemiz gerekli. Iste burda istemci-tarafinda çalisan script`ler devreye giriyor. Client-Side Scripting Örneklerimde istemci-tarafi scriptler için javascript kullanacagim. Asagidaki örnek script yukarida bahsedilen reveal.php sayfasi içerinde kullanilabilir. Script .passport.com ve .login.passport.com alanlarindaki tüm cookie`leri ortaya çikaracak ve bu bilgileri kullanicinin web sunucumuza göndermesi için bir URL baglantisina ekleyecek. Document.cookie formati isim=deger&isim2=deger2 seklindedir ve bu bir URL`de istek degeri olarak asagidaki gibi kullanilabilir: Hepsi bir arada Simdi bir Passport kullanicisinin cookie`si içerisindeki tüm verilere sahipiz. Bu veriler ele geçirildiginde cookie`leri kullanacak diger kisi için bir cookie`lerin alinacagi siteyi hazirlamaliyiz. Bir web istemcisi ile taklit islemi gerçeklestirilebilir fakat bu gerekli bir adim degil. Cookie`leri yazmak için ayni güvenlik açigindan ve istemci-tarafi script isleminden yararlanacagiz. MSPSec cookie`sini javascript (sunucu-tarafi script dili olarak PHP) kullanarak asagidaki örnekteki gibi yazabiliriz: Yazilim HTTP Set-Cookie basliginda oldugu gibi. Bu örnekteki gibi diger Passport cookie`lerini de yaratabilirsiniz. 3 alan adinin her biri için cookie`ler mevcut oldugunda baskasinin kimligine hiçbir kullanici ismi ve sifre girmeden sahip olunabilir. Buna kisisel bilgileri görüntüleme, degistirme ve depolanmis kredi karti bilgileri ile alisveris yapmak da dahil. Özet: Bu islemler kolay gibi görünse de basarili olmasi için asagidaki sartlarin gerçeklesmesi gerekiyor: 1) Kullanici Passport`tan çikmis olmali (logout). 2) Taklit edici tamamen farkli bir IP adresine sahip olmali. 3) Taklit edici farkli bir browser kullaniyor olmali. HTTP kullanarak %100 güvenli bir mekanizma yapmak çok zor çünkü HTTP Microsoft gibi üretici firmalarin müsterilerine saglamaya çalistigi kolayligi desteklemiyor. Passport`a login olurken 'Sign me in automatically on this computer' seçenegini asla isaretlemeyin. Bu çesitli sitelerde tekrar sifrenizi girmeden otomatik olarak login olmanizi saglayacak olan MSPSec cookie`sini yaratir. Bu cookie ele geçirildiginde kullanici hesabiniz için büyük tehlike yaratir. Passport`a sadece gereksinim duyan sitelere girmeden önce login olun ve ziyaretiniz bittiginde hemen logout yapin. Logout islemi cookie`lerin çogunu yok eder. En önemlisi etkilenen browser sürümlerini kullanmamak. Eger Microsoft Internet Explorer`in etkilenen bir sürümünü kullaniyorsaniz, ve kullanmaya devam etmek istiyorsaniz Microsoft bu açik için bir yama çikardi. Asagidaki adresten bu yamayi çekip kurun: Son Not: Passport mekanizmasinda daha pek çok açik bulunacaktir. Bir baskasinin kullanici hesabini ele geçirmek için Passport kullanilan bir site gibi görünmek belki en kolay yol. Çünkü Passport`un nasil uygulandigi hakkinda bir bilgi gerektirmiyor. Umarim bu yazida bahsedilen saldiri su anki web teknolojisini ve web gelistiricilerin karsilastigi problemleri daha iyi anlamanizi saglamistir.
Views: 789 | Added by: Isco | Rating: 0.0/0
Total comments: 0
Only registered users can add comments.
[ Registration | Login ]