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 είναι κώδικας που θα ενεργοποιηθεί όταν ένας χρήστης με δικαιώματα επεξεργασίας αποκτήσει πρόσβαση στο έγγραφο με το οποίο είναι συνδεδεμένο το App Script και μετά από την αποδοχή του OAuth prompt. Μπορούν επίσης να ρυθμιστούν ώστε να εκτελούνται κάθε συγκεκριμένο χρονικό διάστημα από τον κάτοχο του App Script (Persistence).
Υπάρχουν αρκετοί τρόποι για να δημιουργήσετε ένα App Script, αν και οι πιο συνηθισμένοι είναι από ένα Google Document (οποιουδήποτε τύπου) και ως αυτόνομο έργο:
Ξεκινήστε δημιουργώντας ένα App Script, η σύστασή μου για αυτό το σενάριο είναι να δημιουργήσετε ένα Google Sheet και να μεταβείτε στο Extensions > App Scripts
, αυτό θα ανοίξει ένα νέο App Script για εσάς συνδεδεμένο με το φύλλο.
Για να δώσετε πρόσβαση στο OAuth token πρέπει να κάνετε κλικ στο Services +
και να προσθέσετε scopes όπως:
AdminDirectory: Πρόσβαση σε χρήστες και ομάδες του καταλόγου (αν ο χρήστης έχει αρκετά δικαιώματα)
Gmail: Για πρόσβαση σε δεδομένα gmail
Drive: Για πρόσβαση σε δεδομένα drive
Google Sheets API: Έτσι ώστε να λειτουργεί με το trigger
Για να αλλάξετε εσείς τους απαραίτητους scopes μπορείτε να μεταβείτε στις ρυθμίσεις του έργου και να ενεργοποιήσετε: Show "appsscript.json" manifest file in editor
.
Για να καταγράψετε το αίτημα μπορείτε απλά να εκτελέσετε:
Permissions requested to execute the App Script:
Καθώς γίνεται μια εξωτερική αίτηση, το OAuth prompt θα ζητήσει άδεια για να φτάσει σε εξωτερικά endpoints.
Μόλις διαβαστεί η εφαρμογή, κάντε κλικ στο ⏰ Triggers για να δημιουργήσετε έναν trigger. Ως function για εκτέλεση επιλέξτε getToken
, εκτελείται κατά την ανάπτυξη Head
, στην πηγή γεγονότος επιλέξτε From spreadsheet
και τύπο γεγονότος επιλέξτε On open
ή On edit
(ανάλογα με τις ανάγκες σας) και αποθηκεύστε.
Σημειώστε ότι μπορείτε να ελέγξετε τις εκτελέσεις των App Scripts στην καρτέλα Εκτελέσεις αν θέλετε να αποσφαλίσετε κάτι.
Για να trigger το App Script το θύμα πρέπει να συνδεθεί με Editor Access.
Το token που χρησιμοποιείται για την εκτέλεση του App Script θα είναι αυτό του δημιουργού του trigger, ακόμη και αν το αρχείο ανοιχτεί ως Editor από άλλους χρήστες.
Αν κάποιος σας μοιράστηκε ένα έγγραφο με App Scripts και έναν trigger χρησιμοποιώντας το Head του App Script (όχι μια σταθερή ανάπτυξη), μπορείτε να τροποποιήσετε τον κώδικα του App Script (προσθέτοντας για παράδειγμα τις λειτουργίες κλοπής token), να έχετε πρόσβαση σε αυτό, και το App Script θα εκτελείται με τις άδειες του χρήστη που σας μοιράστηκε το έγγραφο! (σημειώστε ότι το OAuth token του ιδιοκτήτη θα έχει ως πεδία πρόσβασης αυτά που δόθηκαν όταν δημιουργήθηκε ο trigger).
Μια ειδοποίηση θα σταλεί στον δημιουργό του script που θα υποδεικνύει ότι κάποιος τροποποίησε το script (Τι θα λέγατε για τη χρήση των αδειών gmail για να δημιουργήσετε ένα φίλτρο για να αποτρέψετε την ειδοποίηση;)
Αν ένας επιτιθέμενος τροποποιήσει τα πεδία πρόσβασης του App Script οι ενημερώσεις δεν θα εφαρμοστούν στο έγγραφο μέχρι να δημιουργηθεί ένας νέος trigger με τις αλλαγές. Επομένως, ένας επιτιθέμενος δεν θα μπορέσει να κλέψει το token του ιδιοκτήτη με περισσότερα πεδία πρόσβασης από αυτά που έχει ορίσει στον trigger που δημιούργησε.
Όταν δημιουργείτε έναν σύνδεσμο για να μοιραστείτε ένα έγγραφο, δημιουργείται ένας σύνδεσμος παρόμοιος με αυτόν: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Αν αλλάξετε το τέλος "/edit" σε "/copy", αντί να έχετε πρόσβαση σε αυτό, η Google θα σας ρωτήσει αν θέλετε να δημιουργήσετε ένα αντίγραφο του εγγράφου:
Αν ο χρήστης το αντιγράψει και το αποκτήσει, τόσο το περιεχόμενο του εγγράφου όσο και τα App Scripts θα αντιγραφούν, ωστόσο οι triggers δεν είναι, επομένως τίποτα δεν θα εκτελείται.
Σημειώστε ότι είναι επίσης δυνατό να μοιραστείτε ένα App Script ως Web application (στον Editor του App Script, αναπτύξτε ως Web application), αλλά θα εμφανιστεί μια ειδοποίηση όπως αυτή:
Ακολουθούμενη από το τυπικό OAuth prompt που ζητά τις απαραίτητες άδειες.
Μπορείτε να δοκιμάσετε ένα συγκεντρωμένο token για να καταγράψετε emails με:
Λίστα ημερολογίου του χρήστη:
Μία επιλογή για επιμονή θα ήταν να δημιουργήσετε ένα έγγραφο και να προσθέσετε έναν ενεργοποιητή για τη συνάρτηση getToken και να μοιραστείτε το έγγραφο με τον επιτιθέμενο, έτσι ώστε κάθε φορά που ο επιτιθέμενος ανοίγει το αρχείο να εξάγει το token του θύματος.
Είναι επίσης δυνατό να δημιουργήσετε ένα App Script και να το κάνετε να ενεργοποιείται κάθε X χρόνο (όπως κάθε λεπτό, ώρα, ημέρα...). Ένας επιτιθέμενος που έχει συμβιβασμένα διαπιστευτήρια ή μια συνεδρία ενός θύματος θα μπορούσε να ρυθμίσει έναν χρονικό ενεργοποιητή App Script και να διαρρεύσει ένα πολύ προνομιούχο OAuth token κάθε μέρα:
Απλά δημιουργήστε ένα App Script, πηγαίνετε στους Ενεργοποιητές, κάντε κλικ στην Προσθήκη Ενεργοποιητή και επιλέξτε ως πηγή γεγονότος Χρονικά καθοδηγούμενη και επιλέξτε τις επιλογές που σας ταιριάζουν καλύτερα:
Αυτό θα δημιουργήσει ένα email ασφαλείας και ένα μήνυμα push στο κινητό σας που θα σας ειδοποιεί γι' αυτό.
Επιπλέον, αν κάποιος σας μοιράστηκε ένα έγγραφο με πρόσβαση επεξεργασίας, μπορείτε να δημιουργήσετε App Scripts μέσα στο έγγραφο και ο ΙΔΙΟΚΤΗΤΗΣ (δημιουργός) του εγγράφου θα είναι ο ιδιοκτήτης του App Script.
Αυτό σημαίνει ότι ο δημιουργός του εγγράφου θα εμφανίζεται ως δημιουργός οποιουδήποτε App Script δημιουργεί οποιοσδήποτε με πρόσβαση επεξεργασίας μέσα σε αυτό.
Αυτό σημαίνει επίσης ότι το App Script θα είναι αξιόπιστο από το περιβάλλον Workspace του δημιουργού του εγγράφου.
Αυτό σημαίνει επίσης ότι αν ένα App Script ήδη υπήρχε και οι άνθρωποι έχουν παρέχει πρόσβαση, οποιοσδήποτε με δικαίωμα Επεξεργασίας στο έγγραφο μπορεί να το τροποποιήσει και να καταχραστεί αυτή την πρόσβαση.
Για να το καταχραστείτε αυτό, χρειάζεστε επίσης ανθρώπους να ενεργοποιήσουν το App Script. Και ένα έξυπνο κόλπο είναι να δημοσιεύσετε το script ως web app. Όταν οι άνθρωποι που έχουν ήδη παραχωρήσει πρόσβαση στο App Script επισκεφτούν τη σελίδα, θα ενεργοποιήσουν το App Script (αυτό λειτουργεί επίσης χρησιμοποιώντας ετικέτες <img>
).
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)