GWS - App Scripts
Skripte aplikacija
Skripte aplikacija su kod koji će biti pokrenut kada korisnik sa dozvolom urednika pristupi dokumentu sa kojim je povezana App Script i nakon prihvatanja OAuth prozora. Takođe se mogu postaviti da se izvršavaju svaki određeni vremenski period od strane vlasnika App Script-a (Upornost).
Kreiranje App Script-a
Postoji nekoliko načina za kreiranje App Script-a, iako su najčešći iz Google dokumenta (bilo kog tipa) i kao samostalan projekat:
Scenario sa App Script-om
Kreiranje Google tabele sa App Script-om
Započnite kreiranjem App Script-a, moja preporuka za ovaj scenario je da kreirate Google tabelu i idite na Extensions > App Scripts
, što će otvoriti novi App Script povezan sa tabelom.
Otkrivanje tokena
Da biste omogućili pristup OAuth tokenu, treba da kliknete na Services +
i dodate opsege kao što su:
AdminDirectory: Pristup korisnicima i grupama direktorijuma (ako korisnik ima dovoljno dozvola)
Gmail: Za pristup podacima Gmail-a
Drive: Za pristup podacima Drive-a
Google Sheets API: Da bi radilo sa okidačem
Da biste sami promenili potrebne opsege možete otići u postavke projekta i omogućiti: Prikaži "appsscript.json" manifest fajl u uređivaču
.
Za snimanje zahteva možete jednostavno pokrenuti:
Dozvole koje su zatražene za izvršenje App skripte:
Kako se vrši spoljni zahtev, OAuth prozor će takođe zatražiti dozvolu za pristup spoljnim krajnjim tačkama.
Kreiranje Okidača
Kada se App pročita, kliknite na ⏰ Okidači da biste kreirali okidač. Kao funkciju izaberite getToken
, pokreće se pri implementaciji Head
, u izvoru događaja izaberite Iz tabele
i tip događaja izaberite Pri otvaranju
ili Pri izmeni
(u skladu sa vašim potrebama) i sačuvajte.
Imajte na umu da možete proveriti izvršavanje App skripti u kartici Izvršavanja ako želite da debagujete nešto.
Deljenje
Da bi se okidač pokrenuo, žrtva mora da se poveže sa pristupom uređivača.
Token koji se koristi za izvršavanje App skripte biće onaj kreatora okidača, čak i ako je datoteka otvorena kao uređivač od strane drugih korisnika.
Zloupotreba Deljenih Dokumenata
Ako vam je neko podelio dokument sa App skriptama i okidačem koji koristi Head App skripte (a ne fiksnu implementaciju), možete izmeniti kod App skripte (dodavanjem, na primer, funkcija za krađu tokena), pristupiti mu, i App skripta će biti izvršena sa dozvolama korisnika koji je podelio dokument sa vama! (imajte na umu da će OAuth token vlasnika imati pristupne opsege koje su dodeljene prilikom kreiranja okidača).
Obaveštenje će biti poslato kreatoru skripte koji ukazuje da je neko izmenio skriptu (Šta kažete na korišćenje gmail dozvola za generisanje filtera kako biste sprečili upozorenje?)
Ako napadač izmeni opsege App skripte, ažuriranja neće biti primenjena na dokumentu dok se ne kreira novi okidač sa promenama. Stoga, napadač neće moći da ukrade token kreatora sa više opsega od onih koje je postavio u okidaču koji je kreirao.
Kopiranje umesto deljenja
Kada kreirate link za deljenje dokumenta, kreira se link sličan ovom: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Ako promenite završetak "/edit" u "/copy", umesto pristupa, Google će vas pitati da li želite da generišete kopiju dokumenta:
Ako korisnik napravi kopiju i pristupi, sadržaj dokumenta i App skripte će biti kopirani, međutim okidači neće, stoga ništa neće biti izvršeno.
Deljenje kao Veb Aplikacija
Imajte na umu da je takođe moguće deliti App skriptu kao Veb aplikaciju (u uređivaču App skripte, implementirajte kao Veb aplikaciju), ali će se pojaviti upozorenje poput ovog:
Zatim će se pojaviti tipičan OAuth prozor koji traži potrebne dozvole.
Testiranje
Možete testirati prikupljeni token da biste naveli e-pošte sa:
Lista kalendara korisnika:
Skripta aplikacije kao upornost
Jedna opcija za upornost bila bi kreiranje dokumenta i dodavanje okidača za funkciju getToken i deljenje dokumenta sa napadačem tako da svaki put kada napadač otvori datoteku, izvlači token žrtve.
Takođe je moguće kreirati skriptu aplikacije i postaviti je da se okida svaki X vremena (kao svaki minut, sat, dan...). Napadač koji je kompromitovao akreditive ili sesiju žrtve mogao bi postaviti okidač vremena za skriptu aplikacije i otkriti veoma privilegovani OAuth token svaki dan:
Jednostavno kreirajte skriptu aplikacije, idite na Okidače, kliknite na Dodaj okidač, i izaberite kao izvor događaja Vremenski vođen i izaberite opcije koje vam najviše odgovaraju:
Ovo će kreirati bezbednosno upozorenje putem e-pošte i push poruku na vašem mobilnom uređaju obaveštavajući o tome.
Bypass neproverene poruke o deljenom dokumentu
Osim toga, ako vam je neko podelio dokument sa pristupom za uređivanje, možete generisati skripte aplikacije unutar dokumenta i VLASNIK (kreator) dokumenta će biti vlasnik skripte aplikacije.
To znači da će kreator dokumenta biti prikazan kao kreator bilo koje skripte aplikacije koju bilo ko sa pristupom za uređivanje kreira unutar njega.
To takođe znači da će skripta aplikacije biti poverena radnom okruženju Workspace-a kreatora dokumenta.
To takođe znači da ako je skripta aplikacije već postojala i ljudi su dali pristup, bilo ko sa dozvolom za uređivanje na dokumentu može je izmeniti i zloupotrebiti taj pristup.
Da biste zloupotrebili ovo, takođe vam trebaju ljudi koji će pokrenuti skriptu aplikacije. Još jedan trik je da objavite skriptu kao veb aplikaciju. Kada ljudi koji su već dali pristup skripti aplikacije pristupe veb stranici, oni će pokrenuti skriptu aplikacije (ovo takođe funkcioniše korišćenjem <img>
oznaka).
Last updated