GCP - Understanding Domain-Wide Delegation

Support HackTricks

This post is the introduction of https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover which can be accessed for more details.

Understanding Domain-Wide Delegation

Google Workspace's Domain-Wide delegation inaruhusu kituo cha utambulisho, ama programu ya nje kutoka Google Workspace Marketplace au GCP Service Account ya ndani, kupata data katika Workspace kwa niaba ya watumiaji. Kipengele hiki, ambacho ni muhimu kwa programu zinazoshirikiana na Google APIs au huduma zinazohitaji uigaji wa mtumiaji, kinaboresha ufanisi na kupunguza makosa ya kibinadamu kwa kuendesha kazi kiotomatiki. Kwa kutumia OAuth 2.0, waendelezaji wa programu na wasimamizi wanaweza kuwapa akaunti hizi za huduma ufikiaji wa data za watumiaji bila idhini ya mtumiaji binafsi. Google Workspace inaruhusu uundaji wa aina mbili kuu za utambulisho wa kimataifa wa delegat:

  • GWS Applications: Programu kutoka kwenye Marketplace ya Workspace zinaweza kuwekwa kama utambulisho wa delegat. Kabla ya kupatikana kwenye soko, kila programu ya Workspace hupitia ukaguzi na Google ili kupunguza matumizi mabaya yanayoweza kutokea. Ingawa hii haiondoi kabisa hatari ya matumizi mabaya, inafanya kuwa ngumu zaidi kwa matukio kama hayo kutokea.

  • GCP Service Account: Jifunze zaidi kuhusu GCP Service Accounts here.

Domain-Wide Delegation: Under the Hood

Hivi ndivyo GCP Service Account inaweza kupata Google APIs kwa niaba ya utambulisho mwingine katika Google Workspace:

  1. Utambulisho unaunda JWT: Utambulisho unatumia funguo za kibinafsi za akaunti ya huduma (sehemu ya faili ya jozi ya funguo za JSON) kusaini JWT. Huu JWT unajumuisha madai kuhusu akaunti ya huduma, mtumiaji wa lengo wa kuigizwa, na OAuth scopes za ufikiaji wa REST API inayohitajika.

  2. Utambulisho unatumia JWT kuomba token ya ufikiaji: Programu/mtumiaji anatumia JWT kuomba token ya ufikiaji kutoka huduma ya OAuth 2.0 ya Google. Ombi pia linajumuisha mtumiaji wa lengo wa kuigizwa (barua pepe ya mtumiaji wa Workspace), na scopes ambazo ufikiaji unahitajika.

  3. Huduma ya OAuth 2.0 ya Google inarudisha token ya ufikiaji: Token ya ufikiaji inawakilisha mamlaka ya akaunti ya huduma kutenda kwa niaba ya mtumiaji kwa ajili ya scopes zilizotajwa. Token hii kwa kawaida ni ya muda mfupi na inahitaji kusasishwa mara kwa mara (kulingana na mahitaji ya programu). Ni muhimu kuelewa kwamba OAuth scopes zilizotajwa katika token ya JWT zina uhalali na zinaathiri token ya ufikiaji inayotolewa. Kwa mfano, token za ufikiaji zenye scopes nyingi zitakuwa na uhalali kwa programu nyingi za REST API.

  4. Utambulisho unatumia token ya ufikiaji kuita Google APIs: Sasa ikiwa na token ya ufikiaji inayofaa, huduma inaweza kupata REST API inayohitajika. Programu inatumia token hii ya ufikiaji katika kichwa cha "Authorization" cha maombi yake ya HTTP yanayokusudiwa kwa Google APIs. APIs hizi zinatumia token kuthibitisha utambulisho wa kuigizwa na kuthibitisha kuwa ina idhini inayohitajika.

  5. Google APIs inarudisha data iliyohitajika: Ikiwa token ya ufikiaji ni halali na akaunti ya huduma ina idhini inayofaa, Google APIs inarudisha data iliyohitajika. Kwa mfano, katika picha ifuatayo, tumetumia users.messages.list njia ili orodhesha IDs za ujumbe wa Gmail zinazohusiana na mtumiaji wa lengo wa Workspace.

Support HackTricks

Last updated