GWS - App Scripts
App Scripts
App Scripts - це код, який буде активовано, коли користувач з правами редактора отримує доступ до документа, з яким пов'язаний App Script і після прийняття запиту OAuth. Вони також можуть бути налаштовані на виконання через певний проміжок часу власником App Script (постійність).
Create App Script
Існує кілька способів створити App Script, хоча найпоширеніші з них - це з Google Документу (будь-якого типу) і як окремий проект:
App Script Scenario
Create Google Sheet with App Script
Почніть зі створення App Script, моя рекомендація для цього сценарію - створити Google Sheet і перейти до Розширення > App Scripts
, це відкриє новий App Script, пов'язаний з таблицею.
Leak token
Щоб надати доступ до токена OAuth, вам потрібно натиснути на Служби +
і додати області, такі як:
AdminDirectory: Доступ до користувачів і груп каталогу (якщо у користувача достатньо прав)
Gmail: Для доступу до даних gmail
Drive: Для доступу до даних диска
Google Sheets API: Щоб це працювало з тригером
Щоб змінити необхідні області, ви можете перейти до налаштувань проекту і активувати: Показати файл маніфесту "appsscript.json" в редакторі
.
Щоб захопити запит, ви можете просто виконати:
Permissions requested to execute the App Script:
Оскільки зроблено зовнішній запит, запит OAuth також попросить дозволи на доступ до зовнішніх кінцевих точок.
Create Trigger
Після того, як додаток буде прочитано, натисніть на ⏰ Triggers, щоб створити тригер. Як функцію для виконання виберіть getToken
, запускається при розгортанні Head
, у джерелі події виберіть From spreadsheet
і тип події виберіть On open
або On edit
(згідно з вашими потребами) і збережіть.
Зверніть увагу, що ви можете перевірити виконання App Scripts на вкладці Executions, якщо хочете щось налагодити.
Sharing
Щоб запустити App Script, жертва повинна підключитися з доступом редактора.
Токен, використаний для виконання App Script, буде токеном творця тригера, навіть якщо файл відкритий як редактор іншими користувачами.
Abusing Shared With Me documents
Якщо хтось поділився з вами документом з App Scripts і тригером, використовуючи Head App Script (не фіксоване розгортання), ви можете змінити код App Script (додавши, наприклад, функції для крадіжки токенів), отримати до нього доступ, і App Script буде виконано з дозволами користувача, який поділився з вами документом! (зверніть увагу, що токен OAuth власника матиме такі області доступу, які були надані під час створення тригера).
Сповіщення буде надіслано творцеві скрипта, вказуючи, що хтось змінив скрипт (як щодо використання дозволів gmail для створення фільтра, щоб запобігти сповіщенню?)
Якщо зловмисник змінює області доступу App Script, оновлення не будуть застосовані до документа, поки не буде створено новий тригер з змінами. Тому зловмисник не зможе вкрасти токен власника творця з більшими областями, ніж ті, які він встановив у тригері, який він створив.
Copying instead of sharing
Коли ви створюєте посилання для спільного доступу до документа, створюється посилання, подібне до цього: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Якщо ви зміните закінчення "/edit" на "/copy", замість доступу до нього Google запитає, чи хочете ви створити копію документа:
Якщо користувач копіює його та отримує доступ, як вміст документа, так і App Scripts будуть скопійовані, однак тригери не будуть, тому нічого не буде виконано.
Sharing as Web Application
Зверніть увагу, що також можливо поділитися App Script як веб-додатком (в редакторі App Script, розгорніть як веб-додаток), але з'явиться сповіщення, подібне до цього:
Після цього з'явиться типове сповіщення OAuth, що запитує необхідні дозволи.
Testing
Ви можете протестувати зібраний токен для переліку електронних адрес за допомогою:
Список календаря користувача:
App Script як постійний доступ
Один з варіантів для постійного доступу - це створити документ і додати тригер для функції 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>
).
Last updated