GWS - App Scripts
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
App Scripts
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).
App Script erstellen
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:
App Script-Szenario
Erstelle Google Sheet mit App Script
Beginne 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.
Token leaken
Um Zugriff auf das OAuth-Token zu gewähren, musst du auf Dienste +
klicken und Scopes 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 Scopes selbst zu ändern, kannst du 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.
Trigger erstellen
Sobald die App gelesen wurde, klicken Sie auf ⏰ Trigger, 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.
Teilen
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.
Missbrauch von "Mit mir geteilt"-Dokumenten
Wenn jemand ein Dokument mit App-Skripten und einem Trigger unter Verwendung des Heads des App-Skripts (nicht einer festen Bereitstellung) mit Ihnen geteilt hat, können Sie den App-Skript-Code ä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 als Zugriffsbereiche die 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.
Kopieren statt Teilen
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" in "/copy" ändern, 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.
Teilen als Webanwendung
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.
Testen
Sie können ein gesammeltes Token testen, um E-Mails aufzulisten mit:
Liste der Kalender des Benutzers:
App Script als Persistenz
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 zeitgesteuerten App Script-Trigger einrichten 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.
Umgehung der unbestätigten Eingabeaufforderung für freigegebene Dokumente
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 vom Workspace-Umfeld des Erstellers des Dokuments vertraut wird.
Das bedeutet auch, dass wenn ein App Script bereits existierte und Personen Zugriff gewährt haben, jeder mit Bearbeiter-Berechtigung auf dem Dokument es ändern und diesen Zugriff missbrauchen kann.
Um dies auszunutzen, benötigen Sie auch Personen, die 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)
Last updated