GWS - App Scripts
App Scripts
App Scripts, kodun, App Script'in bağlı olduğu belgeye erişen düzenleyici iznine sahip bir kullanıcı tarafından tetikleneceği ve OAuth onayını kabul ettikten sonra çalıştırılacağı kodlardır. Ayrıca sahibi tarafından belirli aralıklarla çalıştırılacak şekilde de ayarlanabilirler (Kalıcılık).
App Script Oluşturma
App Script oluşturmanın birkaç yolu vardır, ancak en yaygın olanları herhangi bir türdeki bir Google Belgesinden ve bağımsız bir proje olarak oluşturmaktır:
App Script Senaryosu
App Script ile Google Sheet Oluşturma
Bir App Script oluşturmaya başlamak için, bu senaryo için bir Google Sheet oluşturmanızı öneririm ve Uzantılar > App Scripts
'e gidin, bu size bağlı bir yeni App Script açacaktır.
Token sızdırma
OAuth belirteci erişimini vermek için Hizmetler +
'e tıklayın ve şu gibi kapsamlar ekleyin:
AdminDirectory: Dizin kullanıcılarına ve gruplarına erişim (kullanıcı yeterli izne sahipse)
Gmail: Gmail verilerine erişim için
Drive: Drive verilerine erişim için
Google Sheets API: Tetikleyiciyle çalışması için
Gerekli kapsamları kendiniz değiştirmek için projenin ayarlarına gidip: Düzenleyicide "appsscript.json" manifest dosyasını göster
'i etkinleştirin.
İsteği yakalamak için sadece şunu çalıştırabilirsiniz:
İzinlerin uygulama betiğini çalıştırması için istendi:
Harici bir istek yapıldığında OAuth uyarısı da harici uç noktalara erişim izni isteyecektir.
Tetikleyici Oluşturma
Uygulama okunduğunda, tetikleyici oluşturmak için ⏰ Tetikleyiciler üzerine tıklayın. Fonksiyon olarak getToken
'ı seçin, dağıtımda çalışacak şekilde Baş
'ı seçin, olay kaynağı olarak Tablodan
seçin ve olay türünü Açıldığında
veya Düzenlendiğinde
(ihtiyacınıza göre) seçin ve kaydedin.
Uygulama betiğinin çalışmalarını hata ayıklamak isterseniz, Yürütme sekmesinde kontrol edebilirsiniz.
Paylaşım
Uygulama betiğini tetiklemek için kurbanın Düzenleyici Erişimi ile bağlantı kurması gerekmektedir.
Uygulama betiğini çalıştırmak için kullanılan token, tetikleyiciyi oluşturan kişinin token'ı olacaktır, dosya diğer kullanıcılar tarafından Düzenleyici olarak açılsa bile.
Paylaşılan Belgelerin Kötüye Kullanımı
Eğer birisi size App Scripts ve bir tetikleyiciyi App Script'in Başını kullanarak paylaştıysa, App Script kodunu değiştirebilir (örneğin, token çalma fonksiyonlarını ekleyebilir), erişebilir ve App Script, size belgeyi paylaşan kullanıcının izinleriyle çalıştırılacaktır! (unutmayın ki sahibin OAuth token'ı, tetikleyici oluşturulurken verilen erişim kapsamlarına sahip olacaktır).
Birisi betiği değiştirdiğinde, betiği oluşturan kişiye bir bildirim gönderilecektir (Uyarıyı önlemek için bir filtre oluşturmak için gmail izinlerini kullanmak ne dersiniz?)
Eğer bir saldırgan App Script'in kapsamlarını değiştirirse, güncellemeler belgeye uygulanmayacaktır ta ki değişikliklerle yeni bir tetikleyici oluşturulana kadar. Bu nedenle, bir saldırgan, oluşturduğu tetikleyicide belirlediği kapsamlardan daha fazla kapsama sahip sahibin oluşturucu token'ını çalamayacaktır.
Paylaşmak Yerine Kopyalama
Bir belgeyi paylaşmak için bir bağlantı oluşturduğunuzda şu türden bir bağlantı oluşturulur: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Eğer sonundaki "/edit"'i "/copy" ile değiştirirseniz, google'a erişmek yerine belgenin bir kopyasını oluşturup oluşturmak isteyip istemediğinizi soracaktır:
Kullanıcı kopyaladığında, hem belgenin içeriği hem de App Scripts kopyalanacaktır, ancak tetikleyiciler kopyalanmayacaktır, bu nedenle hiçbir şey çalıştırılmayacaktır.
Web Uygulaması Olarak Paylaşma
Bir App Script'i Web uygulaması olarak paylaşmanın mümkün olduğunu unutmayın (App Script'in Düzenleyicisinde, bir Web uygulaması olarak dağıtın), ancak şu türden bir uyarı görünecektir:
Gerekli izinleri isteyen tipik OAuth uyarısının ardından devam edin.
Test Etme
Toplanan bir token'ı e-postaları listelemek için test edebilirsiniz:
Kullanıcının takvimini listele:
Uygulama Betiği Olarak Kalıcılık
Kalıcılık için bir seçenek, bir belge oluşturmak ve getToken işlevi için bir tetikleyici eklemek ve belgeyi saldırganla paylaşmak olabilir, böylece saldırgan her dosyayı açtığında kurbanın belirteçlerini dışa aktarır.
Ayrıca bir Uygulama Betiği oluşturmak ve her X süre (örneğin her dakika, saat, gün...) için tetikleyici yapmak mümkündür. Kompromize edilmiş kimlik bilgilerine veya bir kurbanın oturumuna sahip bir saldırgan, bir Uygulama Betiği zaman tetikleyici ayarlayabilir ve her gün çok ayrıcalıklı bir OAuth belirteci sızdırabilir:
Sadece bir Uygulama Betiği oluşturun, Tetikleyicilere gidin, Tetikleyici Ekle'ye tıklayın ve olay kaynağı olarak Zaman tabanlı seçin ve size en uygun seçenekleri seçin:
Bu, bunun hakkında bir güvenlik uyarısı e-postası ve bir mobil uyarı mesajı oluşturacaktır.
Onaylanmamış Paylaşılan Belge İzni Atlama
Dahası, birisi size düzenleyici erişimiyle bir belge paylaştıysa, belge içinde Uygulama Betikleri oluşturabilir ve belgenin SAHİBİ (oluşturan) Uygulama Betiğinin sahibi olacaktır.
Bu, belgenin yaratıcısının, belgeye düzenleyici erişimi olan herhangi bir kişinin içine oluşturduğu herhangi bir Uygulama Betiğinin yaratıcısı olarak görüneceği anlamına gelir.
Bu ayrıca, belge oluşturucunun Workspace ortamı tarafından Uygulama Betiğine güvenildiği anlamına gelir.
Bu ayrıca, eğer bir Uygulama Betiği zaten varsa ve insanlar erişim vermişse, belgeye Düzenleyici izni olan herhangi bir kişi bunu değiştirebilir ve bu erişimi kötüye kullanabilir.
Bunu kötüye kullanmak için insanların Uygulama Betiğini tetiklemeleri gerekir. Ve bir hileli yöntem de betiği bir web uygulaması olarak yayınlamaktır. İnsanlar, Uygulama Betiğine zaten erişim vermişse ve web sayfasına erişirlerse, Uygulama Betiğini tetikleyeceklerdir (bu aynı zamanda <img>
etiketleri kullanılarak da çalışır).
Last updated