GWS - App Scripts
App Scripts
App Scripts sind Code, der ausgelöst wird, wenn ein Benutzer mit Editorberechtigung auf das Dokument zugreift, mit dem das App-Skript verknüpft ist, und nach Akzeptieren der OAuth-Aufforderung. Sie können auch so eingestellt werden, dass sie vom Besitzer des App-Skripts zu einem bestimmten Zeitpunkt ausgeführt werden (Persistenz).
App-Skript erstellen
Es gibt mehrere Möglichkeiten, ein App-Skript zu erstellen, obwohl die häufigsten aus einem Google-Dokument (jeder Art) und als eigenständiges Projekt sind:
App-Skript-Szenario
Google-Tabelle mit App-Skript erstellen
Beginnen Sie mit der Erstellung eines App-Skripts, meine Empfehlung für dieses Szenario ist die Erstellung einer Google-Tabelle und gehen Sie zu Erweiterungen > App-Skripte
, dies wird ein neues App-Skript für Sie öffnen, das mit der Tabelle verknüpft ist.
Token leaken
Um Zugriff auf das OAuth-Token zu gewähren, müssen Sie auf Dienste hinzufügen +
klicken und Bereiche 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 Bereiche selbst zu ändern, können Sie zu den Projekteinstellungen gehen und aktivieren: "appsscript.json"
-Manifestdatei im Editor anzeigen.
Um die Anfrage abzufangen, können Sie einfach Folgendes ausführen:
Berechtigungen, die zur Ausführung des App-Skripts angefordert werden:
Wenn eine externe Anfrage gestellt wird, wird die OAuth-Aufforderung auch um Berechtigung zur Erreichung externer Endpunkte bitten.
Trigger erstellen
Sobald die App gelesen wurde, klicken Sie auf ⏰ Trigger, um einen Trigger zu erstellen. Wählen Sie als Funktion getToken
aus, die bei Bereitstellung Head
ausgeführt wird. Wählen Sie als Ereignisquelle Von Tabellenkalkulation
und als Ereignistyp Beim Öffnen
oder Beim Bearbeiten
(je nach Bedarf) und speichern Sie.
Beachten Sie, dass Sie die Ausführungen der App-Skripts im Register Ausführungen überprüfen können, wenn Sie etwas debuggen möchten.
Teilen
Um das App-Skript auszulösen, muss das Opfer eine Verbindung mit Editorzugriff herstellen.
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 geteilten" Dokumenten
Wenn Ihnen jemand ein Dokument mit App-Skripts und einem Trigger, der den Head des App-Skripts verwendet (keine feste Bereitstellung), geteilt hat, können Sie den App-Skript-Code ändern (zum Beispiel die Funktionen zum Stehlen von Token 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 haben wird, die bei der Erstellung des Triggers angegeben wurden).
Eine Benachrichtigung wird an den Skriptersteller gesendet, die darauf hinweist, dass jemand das Skript geändert hat (Wie wäre es, Gmail-Berechtigungen zu verwenden, um einen Filter zu generieren, um den Alarm zu verhindern?)
Wenn ein Angreifer die Berechtigungsbereiche des App-Skripts ändert, werden die Aktualisierungen nicht auf das Dokument angewendet, bis ein neuer Trigger mit den Änderungen erstellt wird. Daher wird ein Angreifer nicht in der Lage sein, das Token des Eigentümers mit mehr Bereichen zu stehlen, als er im Trigger festgelegt hat.
Kopieren anstelle von Teilen
Wenn Sie einen Link erstellen, um ein Dokument zu teilen, wird ein Link ähnlich diesem 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 eine Kopie erstellt und darauf zugreift, werden sowohl die Inhalte des Dokuments als auch die App-Skripts kopiert, jedoch werden die Trigger nicht kopiert, daher wird nichts ausgeführt.
Als Webanwendung teilen
Beachten Sie, dass es auch möglich ist, ein App-Skript als Webanwendung zu teilen (im Editor des App-Skripts als Webanwendung bereitstellen), aber es wird eine Warnung wie diese angezeigt:
Gefolgt von der typischen OAuth-Aufforderung, die um die benötigten Berechtigungen bittet.
Testen
Sie können ein gesammeltes Token testen, um E-Mails aufzulisten, mit:
Kalender des Benutzers auflisten:
App-Skript als Persistenz
Eine Option für Persistenz wäre es, ein Dokument zu erstellen und einen Trigger für die Funktion getToken hinzuzufügen und das Dokument mit dem Angreifer zu teilen, sodass jedes Mal, wenn der Angreifer die Datei öffnet, der Token des Opfers exfiltriert wird.
Es ist auch möglich, ein App-Skript zu erstellen und es alle X Zeit auszulösen (zum Beispiel alle Minute, Stunde, Tag...). Ein Angreifer, der Anmeldeinformationen kompromittiert hat oder eine Sitzung eines Opfers hat, könnte einen zeitgesteuerten App-Skript-Trigger einrichten und jeden Tag einen sehr privilegierten OAuth-Token leaken:
Erstellen Sie einfach ein App-Skript, gehen Sie zu Triggern, klicken Sie auf Trigger hinzufügen und wählen Sie als Ereignisquelle Zeitgesteuert und wählen Sie die Optionen aus, die am besten zu Ihnen passen:
Dies wird eine Sicherheitswarnungs-E-Mail und eine Push-Nachricht an Ihr Mobilgerät erstellen, die Sie über dies informiert.
Umgehung der nicht überprüften Aufforderung für freigegebenes Dokument
Darüber hinaus, wenn jemand Ihnen ein Dokument mit Editorzugriff freigegeben hat, können Sie App-Skripte im Dokument generieren und der BESITZER (Ersteller) des Dokuments wird der Besitzer des App-Skripts sein.
Das bedeutet, dass der Ersteller des Dokuments als Ersteller jedes App-Skripts erscheinen wird, das jemand mit Editorzugriff darin erstellt.
Das bedeutet auch, dass das App-Skript vom Workspace-Umfeld des Erstellers des Dokuments vertraut wird.
Das bedeutet auch, dass wenn ein App-Skript bereits existierte und Personen Zugriff gewährt haben, jeder mit Editor-Berechtigung auf dem Dokument es ändern und diesen Zugriff missbrauchen kann.
Um dies auszunutzen, benötigen Sie auch Personen, die das App-Skript auslösen. Ein weiterer Trick besteht darin, das Skript als Web-App zu veröffentlichen. Wenn die Personen, die bereits Zugriff auf das App-Skript gewährt haben, die Webseite aufrufen, wird das App-Skript ausgelöst (dies funktioniert auch mit <img>
-Tags).
Last updated