GWS - App Scripts
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
App Scripts, App Script'in bağlı olduğu belgeye erişen bir editör iznine sahip kullanıcı tarafından tetiklenecek koddur ve OAuth istemini kabul ettikten sonra çalışır. Ayrıca, App Script'in sahibi tarafından belirli bir zaman diliminde çalışacak şekilde ayarlanabilir (Süreklilik).
App Script oluşturmanın birkaç yolu vardır, ancak en yaygın olanları herhangi bir türdeki bir Google Belgesi'nden ve bağımsız bir proje olarak oluşturmaktır:
Bir App Script oluşturarak başlayın, bu senaryo için önerim bir Google Sheet oluşturmak ve Eklentiler > App Scripts
'e gitmektir, bu, sayfaya bağlı yeni bir App Script açacaktır.
OAuth token'ına erişim vermek için Hizmetler +
'a tıklayıp aşağıdaki gibi kapsamlar eklemeniz gerekir:
AdminDirectory: Dizinin kullanıcılarına ve gruplarına erişim (kullanıcının yeterli izinleri varsa)
Gmail: Gmail verilerine erişim
Drive: Drive verilerine erişim
Google Sheets API: Tetikleyici ile çalışması için
Gerekli kapsamları kendiniz değiştirmek için proje ayarlarına gidip appsscript.json
manifest dosyasını editörde göster seçeneğini etkinleştirebilirsiniz.
İsteği yakalamak için sadece şunu çalıştırabilirsiniz:
Permissions requested to execute the App Script:
Dış bir istek yapıldığında OAuth istemi ayrıca dış uç noktalarına erişim izni istemektedir.
Uygulama okunduktan sonra, bir tetikleyici oluşturmak için ⏰ Tetikleyiciler üzerine tıklayın. Fonksiyon olarak getToken
seçin, dağıtımda Head
olarak çalışır, olay kaynağında From spreadsheet
seçin ve olay türü olarak On open
veya On edit
(ihtiyacınıza göre) seçin ve kaydedin.
Bir şeyi hata ayıklamak isterseniz, Uygulama Scriptlerinin çalıştırmalarını Çalıştırmalar sekmesinde kontrol edebileceğinizi unutmayın.
App Script'i tetiklemek için kurbanın Düzenleyici Erişimi ile bağlanması gerekir.
App Script'i çalıştırmak için kullanılan token, tetikleyicinin yaratıcısının token'ı olacaktır, dosya diğer kullanıcılar tarafından Düzenleyici olarak açılsa bile.
Eğer biri App Script ve tetikleyici ile bir belgeyi sizinle paylaştıysa ve App Script'in Head'ini kullanıyorsa (sabit bir dağıtım değilse), App Script kodunu değiştirebilir (örneğin, çalma token fonksiyonları ekleyerek), erişebilir ve App Script, belgeyi sizinle paylaşan kullanıcının izinleriyle çalıştırılacaktır! (sahiplerin OAuth token'ının, tetikleyici oluşturulduğunda verilen erişim kapsamlarına sahip olacağını unutmayın).
Bir bildirim, scriptin yaratıcısına birinin scripti değiştirdiğini belirten bir bildirim gönderilecektir (uyarıyı önlemek için gmail izinlerini kullanarak bir filtre oluşturmayı düşünün?)
Eğer bir saldırgan App Script'in kapsamlarını değiştirirse, güncellemeler yeni bir tetikleyici oluşturulmadıkça belgeye uygulanmayacaktır. Bu nedenle, bir saldırgan, oluşturduğu tetikleyicide ayarladığı kapsamdan daha fazla kapsamla sahiplerin yaratıcı token'ını çalamayacaktır.
Bir belgeyi paylaşmak için bir bağlantı oluşturduğunuzda, buna benzer bir bağlantı oluşturulur: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Eğer "/edit" sonunu "/copy" ile değiştirirseniz, erişmek yerine google size belgenin bir kopyasını oluşturmak isteyip istemediğinizi soracaktır:
Kullanıcı bunu kopyalayıp erişirse, hem belgenin içeriği hem de App Scriptler kopyalanacaktır, ancak tetikleyiciler kopyalanmaz, bu nedenle hiçbir şey çalıştırılmayacaktır.
Bir App Script'i Web uygulaması olarak paylaşmanın da mümkün olduğunu unutmayın (App Script'in Düzenleyicisinde, Web uygulaması olarak dağıtın), ancak bu tür bir uyarı görünecektir:
Ardından gerekli izinleri isteyen tipik OAuth istemi gelecektir.
Toplanan bir token'ı e-posta listelemek için test edebilirsiniz:
Kullanıcının takvimini listele:
Süreklilik için bir seçenek, bir belge oluşturmak ve getToken fonksiyonu için bir tetikleyici eklemek ve belgeyi saldırganla paylaşmaktır, böylece saldırgan dosyayı her açtığında kurbanın token'ını dışarı aktarır.
Ayrıca, bir App Script oluşturmak ve her X zamanda (her dakika, saat, gün gibi) tetiklenmesini sağlamak da mümkündür. Kompromize olmuş kimlik bilgileri veya bir kurbanın oturumu olan bir saldırgan, bir App Script zaman tetikleyicisi ayarlayabilir ve her gün çok yetkili bir OAuth token'ını sızdırabilir:
Sadece bir App Script oluşturun, Tetikleyiciler'e gidin, Tetikleyici Ekle'ye tıklayın ve olay kaynağı olarak Zaman odaklıyı seçin ve size en uygun seçenekleri seçin:
Bu, bir güvenlik uyarı e-postası ve mobil cihazınıza bu konuda bir bildirim mesajı oluşturacaktır.
Ayrıca, eğer biri sizinle düzenleyici erişimi olan bir belge paylaştıysa, belgede App Script'ler oluşturabilirsiniz ve belgenin SAHİBİ (yaratıcı) App Script'in sahibi olacaktır.
Bu, belgenin yaratıcısının, belgede herhangi bir App Script'i oluşturan herkesin yaratıcısı olarak görüneceği anlamına gelir.
Bu aynı zamanda, App Script'in belgenin yaratıcısının Workspace ortamı tarafından güvenilir olacağı anlamına gelir.
Bu aynı zamanda, eğer bir App Script zaten mevcutsa ve insanlar erişim vermişse, belgede Düzenleyici iznine sahip olan herkesin onu değiştirebileceği ve bu erişimi kötüye kullanabileceği anlamına gelir.
Bunu kötüye kullanmak için ayrıca insanların App Script'i tetiklemesi gerekir. Ve güzel bir hile, script'i bir web uygulaması olarak yayınlamaktır. Erişim vermiş olan insanlar web sayfasına eriştiğinde, App Script'i tetikleyeceklerdir (bu <img>
etiketleri kullanarak da çalışır).
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)