2 minute read

Cross-origin resource sharin (CORS), belirli bir domain dışında bulunan kaynaklara kontrollü erişim sağlayan bir tarayıcı mekanızmasıdır. Same-origin policy (SOP)’nin esnetilmesiyle oluşmaktadır. Ancak bir web sitesinin CORS yapılandırması doğru yapılmamışsa, cross-domain saldırılarına neden olur. CORS, CSRF gibi cross-domain saldırılarına karşı bir savunma mekanizması değildir.

Same-origin policy, web sitesinin domain alanı dışındaki kaynaklarla etkileşimde olma yeteneğini sınırlayan kısıtlayıcı bir cross-origin göstergesidir. SOP, bir web sitesinin diğer bir web sitesinden veri çalması gibi potansiyel zararlı domainlerle etkileşimlere tepki olarak tanımlandı.

Lab 1 Lab 2 Lab 3 Lab 4

Lab-1 CORS vulnerability with basic origin

Bu laboratuvarda güvenli olmayan CORS yapılandırması bulunmaktadır ve uygulama bütün origin’lere güvenmektedir. Lab’ın tamamlanması için yönetici API key’ini ele geçiren, CORS kullanan bir JavaScript oluşturulmalı.

weiner:peter bilgileri ile giriş yaptıktan sonra proxy aracında /accountDetails endpointine bir GET request’i gönderilerek kullanıcı ile ilişkili, içerisinde apikey bilgisi de bulunan veriler response’da görüntülenmektedir.

image-center

Lab’ın açıklama kısmında uygulamanın herhangi bir origin’e güvendiği bilgisi verilmiştir. Bu bilginin kontrolü için origin header’ına grkm.com adresi yazılarak request tekrarlanmaktadır. Gönderilen requestin yanıtı olarak daha önce aldığımız veriler bize tekrar döndürülmektedir. CORS’un doğru yapılandırılmadığı doğrulanmaktadır.

image-center

Exploit server’da aşağıdaki script’ler yazılarak kurbana gönderildiğinde, origin’i bizim zararlı web sitemiz olan bir request hedef web uygulamasına içerisinde API key barındıran bir response elde etmek için request oluşturacaktır.

image-center

Zararlı web sitesinin log kayıtları incelendiğinde administrator kullanıcısının apı key verisi görüntülenmektedir.

image-center

image-center

Lab-2 CORS vulnerability with trusted null origin

Bu laboratuvardaki CORS yapılandırılması güvensiz bir şekilde yapılandırılmıştır ve origin değeri “null” olan bütün requestlere güvenmektedir. Lab’ın tamamlanması için administrator API verisinin elde etmeye neden olan bir JavaScript hazırlanmalıdır.

Kullanıcının API verisini döndüren response incelendiğinde Access-Control-Allow-Credentials header’ı görüntülenmektedir. Bu header CORS’un desteklenebileceği düşüncesini doğurmaktadır.

image-center

Origin: grkm.com payload’u denendiğinde sunucu hatası görüntülenmektedir. Ancak aşağıdaki görselde de görüntülenebileceği üzere Origin: null header’ı yazılıp istek yapıldığında sunucu bize API verisini döndürmektedir ve ek olarak null değeri Access-Control-Allow-Origin header’ında yansımaktadır.

image-center

İlgili payload exploit sunucusuna gönderilmektedir.

image-center

Administrator kullanıcısının API bilgisi log kayıtlarına düşmektedir ve submit yapılarak lab tamamlanır.

image-center

image-center

Lab-3 CORS vulnerability with trusted insecure protocols

Bu laboratuvarda protokolden bağımsız olarak subdomainlere güvendiğinden güvenli olmayan bir CORS yapılandırması bulunmaktadır. Lab’ın tamamlanması için Administrator API’ını ele geçiren CORS kullanan bir JavaScript payload’u yazılmalıdır.

Bir önceli lab’da gördüğümüz gibi Access-Control-Allow-Credentials header’ını görmekteyiz. Bu durum CORS olma ihtimalini bize düşündürmekte.

image-center

Lab açıklama kısmında subdomainlere güvendiği bilgisini verdiğinden Origin header’ına subdomain adresi yazılarak deneme yapılmakta ve response’da girilen subdomain bilgisinin yansıtıldığı görüntülenmekte.

image-center

Daha sonraasında bir ürünün stok kontrolünü yapmak istendiğinde açılan sayfada subdomain kullanıldığı gözlemlenmektedir.

image-center

Stok kontrol fonksiyonundaki productID değerinin XSS barındırdığı görüntülenmektedir.

image-center

image-center

Uygulama subdomainlere güvendiğinden stok kontrol sayfasındaki XSS kullanılarak uygulamaya bir istek gönderilmektedir. Gönderilen isteğin yanıtı exploit sunucusuna dönecektir ve administrator kullanıcısının API bilgisi tespit edilecektir.

image-center

image-center

image-center

Lab-4 CORS vulnerability with internal network pivot attack

Bu laboratuvarda bütün iç ağa origin’e güvenen hatalı CORS yapılandırmasına sahiptir. Lab’ın tamamlanması için 192.168.0.0/24 port 8080 end point’ini bulmak için bir JavaScript payload’ı yazılmalıdır. Ayrıca end point tespit edildikten sonra carlos kullanıcısının silinmesi için CORS-based bir saldırı gerçekleştirilmelidir.

Öncelikle endpoint için local network üzerinde tarama yapılmalıdır. Exploit server ve collaborator kullanılarak tarama yapılmaktadır ve sonuç collaborator da görüntülenmektedir.

image-center

image-center

Tespit edilen ip ve port kullanılarak username kısmında bir XSS güvenlik zafiyeti aranmaktadır.

image-center

foundXSS=1

image-center

Ip ve port adressleri kullanarak admin sayfasının kaynak kodunu ele geçirmeye çalışılmaktadır.

image-center

image-center

Tespit edilen kaynak kod kullanılarak hedeflenen kullanıcıyı silmek için exploit server kullanılmaktadır.

image-center

image-center