- 15 Ocak 2019
- 303
- 71
Merhaba arkadaşlar, bugün cors manipülasyonunu yani kökenler arası kaynak paylaşımını sömürme ile ilgili lavabatuarları çözeceğiz. CORS bir sitenin kökünden başka bir domaine kaynak paylaşımlarının yapılabileceği bir durumdur. Karşımıza daha çok saldırganın kendi kaynağını ekletip sosyal mühendlislikle bu durumu kullanıcıya yedirerek bilgilerini ve verilerini yetkisiz bir şekilde okumasını hedef etmektedir.
BİRİNCİ LABARATUAR
Öncelikle portswigger üzerinden bana verilen id : wiener | pass : peter | olarak sisteme giriş yapıyorum ve e ticaret sitesi içerisinde karşımda kullanıcım hakkında bilgiler ve api keyleri ile karşılaşıyorum.
Sanırım hedef kişi hakkında bilgi alabileceğim tek yer burası, burayı unutmuyorum. Şimdi ise anasayfaya request gönderdiğimde ise origin bilgisi yazmama rağmen karşımda hiçbir veri alamıyorum. Ve HTTP history kısmına geri geldiğimde ise beni /accountDetails kısmı karşılıyor. Buraya request yoladığımda ise güzel bir sonuç alıyorum.
Görmüş olduğunuz gibi Access-Control-Allow-Credentials kısmı true yanıtını dönmekte, bir bug bounty veya pentesting ile uğraşan kişinin aklına ise bu yapıya kendi zararlı web sitesini burada deneyip hedef kullanıcıya yutturmak olacaktır.
Yukarıda görmüş olduğunuz gibi istediğim domaini ekleyebilmiş oldum, bundan sonra sistemin bana verdiği exploit serverin adresini girip o site içerisinde kendi zararlı kodumu enjekte etmem gerekiyor. Bu sayede kurbana XMLHttpRequest içerikli verimi yedirebilirsem ona ait bilgileri çalabilirim.
Görmüş olduğunuz zararlıyı store edip bunun ardından hedef kişiye mail, link kısaltma gibi kaynaklardan yedirdikten sonra access loglarınıza bakın. Bu işlem sayesinde diğer kullanıcının id adresini v.s yazmanıza gerek kalmayacak çünkü kendi bilgilerini açacak url, ve o bilgileri okuyacak bir logumuz olacak.
Hedef kullanıcı zararlı web sitesini yedi ve sonucunda, username bilgisi api key gibi bilgileri ortaya çıkmış oldu. Flag almak için sadece administrator adlı kullanıcının api keyini solition bölümüne yazmanız yeterli olacaktır.
İKİNCİ LABARATUAR
Bu labaratuarda ise origin değerinin allow olmadığından yalnızca null ifade ettiğinden bahsediyor. Origin değeri null olduğunda, null origin'e sahip istekleri güvenli kabul eder. Bu durumda ekranda kendi exploit server adresinizi yazamadınız diye üzülmenize gerek yok.
Aslında test yaparken url ler denemiştim lakin hepsine true değeri yazdırıyordu bunun yerine null yolladığımda ise response değerinde de bu durumu gördüğüm için sevindim. Bunun için hemen exploit serverime geliyorum ve ilgili XMLHTTPRequest imi veriyorum, ayrıca location bilgisini exploit serverim olarak verdim.
Görmüş olduğunuz zararlıya sitenin kullanıcı hakkında kritik bilgilerinin bulunduğu /accountDetalis bölümünü ekliyorum ve kodu baştan store ediyor, ardından hedef maktüle deliver exploit to victim aracılığı ile gönderiyorum.
İlk örnek üzerinde url i verebildiğimiz için herhangi bir location bilgisi eklemedik ama bu durum null döndürdüğü için burayı atlamamanızı öneriyorum. Ve bu lab'a ait api logunu submit solution bölümüne girdiğinizde bölümü tamamlamış oluyoruz.