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. Вони також можуть бути налаштовані на виконання через певний проміжок часу власником App Script (постійність).
Існує кілька способів створити App Script, хоча найпоширеніші з них - це з Google Документу (будь-якого типу) та як окремий проект:
Почніть зі створення App Script, моя рекомендація для цього сценарію - створити Google Sheet і перейти до Розширення > App Scripts
, це відкриє новий App Script, пов'язаний з таблицею.
Щоб надати доступ до токена OAuth, вам потрібно натиснути на Служби +
і додати області, такі як:
AdminDirectory: Доступ до користувачів і груп каталогу (якщо у користувача достатньо прав)
Gmail: Для доступу до даних gmail
Drive: Для доступу до даних диска
Google Sheets API: Щоб це працювало з тригером
Щоб змінити необхідні області, ви можете перейти до налаштувань проекту та увімкнути: Показати файл маніфесту "appsscript.json" в редакторі
.
Щоб захопити запит, ви можете просто виконати:
Permissions requested to execute the App Script:
Оскільки зроблено зовнішній запит, вікно запиту OAuth також попросить дозволи на доступ до зовнішніх кінцевих точок.
Після того, як додаток буде прочитано, натисніть на ⏰ Triggers, щоб створити тригер. Як функцію для виконання виберіть getToken
, виконується при розгортанні Head
, у джерелі події виберіть From spreadsheet
і тип події виберіть On open
або On edit
(згідно з вашими потребами) і збережіть.
Зверніть увагу, що ви можете перевірити виконання App Scripts на вкладці Виконання, якщо хочете щось налагодити.
Щоб запустити App Script, жертва повинна підключитися з доступом редактора.
Токен, використаний для виконання App Script, буде токеном творця тригера, навіть якщо файл відкрито як редактор іншими користувачами.
Якщо хтось поділився з вами документом з App Scripts і тригером, використовуючи Head App Script (не фіксоване розгортання), ви можете змінити код App Script (додавши, наприклад, функції для крадіжки токенів), отримати до нього доступ, і App Script буде виконано з дозволами користувача, який поділився з вами документом! (зверніть увагу, що токен OAuth власника матиме такі області доступу, які були надані під час створення тригера).
Сповіщення буде надіслано творцеві скрипта, вказуючи, що хтось змінив скрипт (як щодо використання дозволів gmail для створення фільтра, щоб запобігти сповіщенню?)
Якщо зловмисник змінює області доступу App Script, оновлення не будуть застосовані до документа, поки не буде створено новий тригер з змінами. Тому зловмисник не зможе вкрасти токен власника творця з більшими областями доступу, ніж ті, які він встановив у тригері, який він створив.
Коли ви створюєте посилання для спільного доступу до документа, створюється посилання, подібне до цього: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Якщо ви зміните закінчення "/edit" на "/copy", замість доступу до нього Google запитає вас, чи хочете ви створити копію документа:
Якщо користувач копіює його та отримує доступ, як вміст документа, так і App Scripts будуть скопійовані, однак тригери не будуть, тому нічого не буде виконано.
Зверніть увагу, що також можливо поділитися App Script як веб-додатком (в редакторі App Script, розгорніть як веб-додаток), але з'явиться сповіщення, подібне до цього:
Після цього з'явиться типове вікно запиту OAuth, що запитує необхідні дозволи.
Ви можете протестувати зібраний токен для переліку електронних адрес за допомогою:
Список календаря користувача:
Один з варіантів постійного доступу - це створити документ і додати тригер для функції getToken та поділитися документом з атакуючим, щоб щоразу, коли атакуючий відкриває файл, він екстрагує токен жертви.
Також можливо створити App Script і налаштувати його тригер на кожен X час (наприклад, кожну хвилину, годину, день...). Атакуючий, який компрометував облікові дані або сесію жертви, може налаштувати тригер часу App Script і щодня витікати дуже привілейований OAuth токен:
Просто створіть App Script, перейдіть до Тригерів, натисніть Додати тригер і виберіть як джерело події Часовий тригер, а також виберіть опції, які вам найбільше підходять:
Це створить електронний лист про безпеку та push-повідомлення на ваш мобільний телефон, що сповіщає про це.
Більше того, якщо хтось поділився з вами документом з доступом редактора, ви можете створювати App Scripts всередині документа, а ВЛАСНИК (творець) документа буде власником App Script.
Це означає, що творець документа з'явиться як творець будь-якого App Script, який будь-хто з доступом редактора створює всередині нього.
Це також означає, що App Script буде довіреним середовищем Workspace творця документа.
Це також означає, що якщо App Script вже існував і люди надали доступ, будь-хто з доступом редактора до документа може модифікувати його та зловживати цим доступом.
Щоб зловживати цим, вам також потрібно, щоб люди активували App Script. І один з цікавих трюків - це опублікувати скрипт як веб-додаток. Коли люди, які вже надали доступ до App Script, отримують доступ до веб-сторінки, вони активують App Script (це також працює за допомогою тегів <img>
).
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)