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 je kod koji će se aktivirati kada korisnik sa dozvolom za uređivanje pristupi dokumentu sa kojim je povezan App Script i nakon prihvatanja OAuth prompta. Takođe se mogu postaviti da se izvršavaju svakog određenog vremena od strane vlasnika App Script-a (Persistencija).
Postoji nekoliko načina za kreiranje App Script-a, iako su najčešći iz Google dokumenta (bilo koje vrste) i kao samostalni projekat:
Počnite tako što ćete kreirati App Script, moja preporuka za ovaj scenario je da kreirate Google Sheet i idete na Extensions > App Scripts
, ovo će otvoriti novi App Script za vas povezan sa tabelom.
Da biste omogućili pristup OAuth tokenu, potrebno je da kliknete na Services +
i dodate opsege kao što su:
AdminDirectory: Pristup korisnicima i grupama direktorijuma (ako korisnik ima dovoljno dozvola)
Gmail: Da biste pristupili podacima iz gmail-a
Drive: Da biste pristupili podacima iz drive-a
Google Sheets API: Da bi radilo sa okidačem
Da biste promenili potrebne opsege, možete otići na podešavanja projekta i omogućiti: Show "appsscript.json" manifest file in editor
.
Da biste uhvatili zahtev, jednostavno možete pokrenuti:
Permissions requested to execute the App Script:
Kada se izvrši spoljni zahtev, OAuth prompt će takođe tražiti dozvolu za pristup spoljnim krajnjim tačkama.
Kada se aplikacija pročita, kliknite na ⏰ Triggers da kreirate okidač. Kao funkciju izaberite getToken
, pokreće se na implementaciji Head
, u izvoru događaja izaberite From spreadsheet
i tip događaja izaberite On open
ili On edit
(u zavisnosti od vaših potreba) i sačuvajte.
Napomena: možete proveriti izvršenja App Scripts u tabu Executions ako želite da debagujete nešto.
Da bi se pokrenuo App Script, žrtva treba da se poveže sa Editor Access.
Token koji se koristi za izvršenje App Script biće onaj od kreatora okidača, čak i ako je datoteka otvorena kao Editor od strane drugih korisnika.
Ako je neko podelio sa vama dokument sa App Scripts i okidačem koristeći Head App Script-a (ne fiksnu implementaciju), možete modifikovati kod App Script-a (dodajući, na primer, funkcije za krađu tokena), pristupiti mu, i App Script će biti izvršen sa dozvolama korisnika koji je podelio dokument sa vama! (napomena: OAuth token vlasnika će imati pristupne opsege one koje su date kada je okidač kreiran).
Obaveštenje će biti poslato kreatoru skripte koje ukazuje da je neko modifikovao skriptu (Šta mislite o korišćenju gmail dozvola za generisanje filtera kako bi se sprečila upozorenja?)
Ako napadač modifikuje opsege App Script-a, ažuriranja neće biti primenjena na dokument dok se ne kreira novi okidač sa izmenama. Stoga, napadač neće moći da ukrade token vlasnika kreatora sa više opsega nego što je postavio u okidaču koji je kreirao.
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 da mu pristupite, google će vas pitati da li želite da generišete kopiju dokumenta:
Ako korisnik kopira i pristupi, i sadržaj dokumenta i App Scripts će biti kopirani, međutim okidači nisu, stoga ništa neće biti izvršeno.
Napomena: takođe je moguće podeliti App Script kao Web aplikaciju (u Editoru App Script-a, implementirati kao Web aplikaciju), ali će se pojaviti upozorenje poput ovog:
Praćeno tipičnim OAuth promptom koji traži potrebne dozvole.
Možete testirati prikupljeni token za listanje emailova sa:
Lista kalendara korisnika:
Jedna opcija za persistenciju bi bila da napravite dokument i dodate okidač za funkciju getToken i podelite dokument sa napadačem tako da svaki put kada napadač otvori datoteku, on izvlači token žrtve.
Takođe je moguće napraviti App Script i postaviti ga da se aktivira svakih X vremena (kao što je svaka minuta, sat, dan...). Napadač koji je kompromitovao akreditive ili sesiju žrtve mogao bi postaviti vremenski okidač za App Script i svaki dan izliti veoma privilegovan OAuth token:
Jednostavno napravite App Script, idite na Okidače, kliknite na Dodaj Okidač, i izaberite kao izvor događaja Vremenski okidač i izaberite opcije koje vam najbolje odgovaraju:
Ovo će kreirati email obaveštenje o bezbednosti i push poruku na vašem mobilnom uređaju koja vas obaveštava o tome.
Štaviše, ako vam je neko podelio dokument sa pristupom za uređivanje, možete generisati App Scripts unutar dokumenta i VLASNIK (kreator) dokumenta će biti vlasnik App Script-a.
To znači da će se kreator dokumenta pojaviti kao kreator bilo kog App Script-a koji bilo ko sa pristupom za uređivanje kreira unutar njega.
To takođe znači da će App Script biti poveren od strane Workspace okruženja kreatora dokumenta.
To takođe znači da ako je App Script već postojao i ljudi su dali pristup, bilo ko sa pristupom za uređivanje na dokumentu može modifikovati i zloupotrebiti taj pristup.
Da biste zloupotrebili ovo, takođe vam je potrebno da ljudi aktiviraju App Script. Jedan pametan trik je da objavite skriptu kao web aplikaciju. Kada ljudi koji su već dali pristup App Script-u pristupe web stranici, oni će aktivirati App Script (ovo takođe funkcioniše koristeći <img>
tagove).
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)