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 ist Code, der ausgelöst wird, wenn ein Benutzer mit Bearbeitungsberechtigung auf das Dokument zugreift, mit dem das App Script verknüpft ist und nach Akzeptieren der OAuth-Aufforderung. Sie können auch so eingestellt werden, dass sie in bestimmten Abständen vom Eigentümer des App Scripts ausgeführt werden (Persistenz).
Es gibt mehrere Möglichkeiten, ein App Script zu erstellen, obwohl die gebräuchlichsten aus einem Google-Dokument (jeder Art) und als eigenständiges Projekt sind:
Beginnen Sie mit der Erstellung eines App Scripts, meine Empfehlung für dieses Szenario ist, ein Google Sheet zu erstellen und zu Erweiterungen > App Scripts
zu gehen, dies öffnet ein neues App Script, das mit dem Sheet verknüpft ist.
Um Zugriff auf das OAuth-Token zu gewähren, müssen Sie auf Dienste +
klicken und Berechtigungen wie hinzufügen:
AdminDirectory: Zugriff auf Benutzer und Gruppen des Verzeichnisses (wenn der Benutzer über ausreichende Berechtigungen verfügt)
Gmail: Um auf Gmail-Daten zuzugreifen
Drive: Um auf Drive-Daten zuzugreifen
Google Sheets API: Damit es mit dem Trigger funktioniert
Um die benötigten Berechtigungen selbst zu ändern, können Sie zu den Projekteinstellungen gehen und aktivieren: Zeige "appsscript.json" Manifestdatei im Editor
.
Um die Anfrage zu erfassen, können Sie einfach Folgendes ausführen:
Permissions requested to execute the App Script:
Da eine externe Anfrage gestellt wird, wird das OAuth-Prompt auch um Erlaubnis bitten, externe Endpunkte zu erreichen.
Sobald die App gelesen wurde, klicken Sie auf ⏰ Triggers, um einen Trigger zu erstellen. Wählen Sie als Funktion getToken
, läuft bei Bereitstellung Head
, wählen Sie als Ereignisquelle From spreadsheet
und als Ereignistyp On open
oder On edit
(je nach Bedarf) und speichern Sie.
Beachten Sie, dass Sie die Ausführungen der App-Skripte im Tab Ausführungen überprüfen können, wenn Sie etwas debuggen möchten.
Um das App-Skript zu triggern, muss das Opfer mit Editorzugriff verbunden sein.
Das Token, das zur Ausführung des App-Skripts verwendet wird, ist das des Erstellers des Triggers, auch wenn die Datei von anderen Benutzern als Editor geöffnet wird.
Wenn jemand ein Dokument mit Ihnen geteilt hat, das App-Skripte und einen Trigger verwendet, der den Head des App-Skripts nutzt (nicht eine feste Bereitstellung), können Sie den Code des App-Skripts ändern (zum Beispiel die Funktionen zum Stehlen des Tokens hinzufügen), darauf zugreifen, und das App-Skript wird mit den Berechtigungen des Benutzers ausgeführt, der das Dokument mit Ihnen geteilt hat! (Beachten Sie, dass das OAuth-Token des Eigentümers die Zugriffsbereiche hat, die beim Erstellen des Triggers festgelegt wurden).
Eine Benachrichtigung wird an den Ersteller des Skripts gesendet, die anzeigt, dass jemand das Skript geändert hat (Was ist mit der Verwendung von Gmail-Berechtigungen, um einen Filter zu erstellen, um die Warnung zu verhindern?)
Wenn ein Angreifer die Bereiche des App-Skripts ändert, werden die Updates nicht auf das Dokument angewendet, bis ein neuer Trigger mit den Änderungen erstellt wird. Daher kann ein Angreifer das Token des Eigentümers nicht mit mehr Bereichen stehlen, als er im Trigger festgelegt hat, den er erstellt hat.
Wenn Sie einen Link zum Teilen eines Dokuments erstellen, wird ein ähnlicher Link wie dieser erstellt: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Wenn Sie das Ende "/edit" durch "/copy" ersetzen, wird Google Sie fragen, ob Sie eine Kopie des Dokuments erstellen möchten:
Wenn der Benutzer es kopiert und darauf zugreift, werden sowohl die Inhalte des Dokuments als auch die App-Skripte kopiert, jedoch die Trigger nicht, daher wird nichts ausgeführt.
Beachten Sie, dass es auch möglich ist, ein App-Skript als Webanwendung zu teilen (im Editor des App-Skripts, als Webanwendung bereitstellen), aber eine Warnung wie diese wird erscheinen:
Gefolgt von dem typischen OAuth-Prompt, der nach den benötigten Berechtigungen fragt.
Sie können ein gesammeltes Token testen, um E-Mails aufzulisten mit:
Liste des Kalenders des Benutzers:
Eine Option für Persistenz wäre es, ein Dokument zu erstellen und einen Trigger für die getToken-Funktion hinzuzufügen und das Dokument mit dem Angreifer zu teilen, sodass jedes Mal, wenn der Angreifer die Datei öffnet, er das Token des Opfers exfiltriert.
Es ist auch möglich, ein App Script zu erstellen und es alle X Zeit (wie jede Minute, Stunde, Tag...) auszulösen. Ein Angreifer, der kompromittierte Anmeldeinformationen oder eine Sitzung eines Opfers hat, könnte einen App Script-Zeit-Trigger setzen und jeden Tag ein sehr privilegiertes OAuth-Token leaken:
Erstellen Sie einfach ein App Script, gehen Sie zu Trigger, klicken Sie auf Trigger hinzufügen und wählen Sie als Ereignisquelle Zeitgesteuert und wählen Sie die Optionen, die am besten zu Ihnen passen:
Dies wird eine Sicherheitswarnungs-E-Mail und eine Push-Nachricht an Ihr Mobilgerät senden, die darüber informiert.
Darüber hinaus, wenn jemand Ihnen ein Dokument mit Bearbeitungszugriff geteilt hat, können Sie App Scripts im Dokument generieren und der EIGENTÜMER (Ersteller) des Dokuments wird der Eigentümer des App Scripts sein.
Das bedeutet, dass der Ersteller des Dokuments als Ersteller jedes App Scripts erscheint, das jemand mit Bearbeitungszugriff darin erstellt.
Das bedeutet auch, dass das App Script von der Workspace-Umgebung des Erstellers des Dokuments vertraut wird.
Das bedeutet auch, dass wenn ein App Script bereits existierte und Leute Zugriff gewährt haben, jeder mit Bearbeiter-Berechtigung auf dem Dokument es ändern und diesen Zugriff missbrauchen kann.
Um dies auszunutzen, müssen auch Leute das App Script auslösen. Ein praktischer Trick ist es, das Script als Webanwendung zu veröffentlichen. Wenn die Personen, die bereits Zugriff auf das App Script gewährt haben, die Webseite aufrufen, werden sie das App Script auslösen (das funktioniert auch mit <img>
-Tags).
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)