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
Erstellen Sie ein Google Sheet mit App-Skript
Beginnen Sie mit der Erstellung eines App-Skripts, meine Empfehlung für dieses Szenario ist die Erstellung eines Google Sheets und gehen Sie zu Erweiterungen > App-Skripte
, dies öffnet ein neues App-Skript für Sie, das mit dem Sheet verknüpft ist.
Token-Leak
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: "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:
Bei einer externen Anfrage wird die OAuth-Aufforderung auch um die 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
, 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 Editor-Zugriff 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 Berechtigungen 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 Berechtigungen zu stehlen, als die, die er im von ihm erstellten 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 der Inhalt des Dokuments als auch die App-Skripts kopiert, jedoch nicht die Trigger, 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, bereitstellen als Webanwendung), 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 Script 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 Script zu erstellen und es alle X-Zeit auszulösen (z. B. alle Minute, Stunde, Tag...). Ein Angreifer, der Anmeldeinformationen kompromittiert hat oder eine Sitzung eines Opfers hat, könnte einen zeitgesteuerten App-Script-Trigger einrichten und jeden Tag einen sehr privilegierten OAuth-Token leaken:
Erstellen Sie einfach ein App Script, 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 darüber informiert.
Umgehung der nicht überprüften Aufforderung für freigegebenes Dokument
Darüber hinaus, wenn jemand Ihnen ein Dokument mit Editorzugriff geteilt hat, können Sie App Scripts innerhalb des Dokuments generieren und der BESITZER (Ersteller) des Dokuments wird der Besitzer des App Scripts sein.
Das bedeutet, dass der Ersteller des Dokuments als Ersteller jedes App Scripts erscheinen wird, das jemand mit Editorzugriff 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 existiert 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 Script auslösen. Ein nützlicher Trick ist es, das Skript als Web-App 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 (dies funktioniert auch mit <img>
-Tags).
Last updated