GCP - Storage Privesc
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)
Taarifa za Msingi:
storage.objects.get
Ruhusa hii inakuruhusu kupakua faili zilizohifadhiwa ndani ya Cloud Storage. Hii inaweza kukuruhusu kupandisha mamlaka kwa sababu katika baadhi ya matukio taarifa nyeti huhifadhiwa hapo. Aidha, baadhi ya huduma za GCP huhifadhi taarifa zao katika ndoo:
GCP Composer: Unapounda Mazingira ya Composer, kanuni za DAG zote zitahifadhiwa ndani ya ndoo. Kazi hizi zinaweza kuwa na taarifa za kuvutia ndani ya kanuni zao.
GCR (Container Registry): Picha za kontena huhifadhiwa ndani ya ndoo, ambayo ina maana kwamba ikiwa unaweza kusoma ndoo, utaweza kupakua picha na kutafuta leaks na/au msimbo wa chanzo.
storage.objects.setIamPolicy
Unaweza kujipa ruhusa ya kudhulumu yoyote ya matukio ya awali ya sehemu hii.
storage.buckets.setIamPolicy
Kwa mfano wa jinsi ya kubadilisha ruhusa kwa kutumia ruhusa hii, angalia ukurasa huu:
storage.hmacKeys.create
Kipengele cha "interoperability" cha Cloud Storage, kilichoundwa kwa ajili ya mawasiliano ya msalaba wa wingu kama na AWS S3, kinahusisha kuunda funguo za HMAC kwa Akaunti za Huduma na watumiaji. Mshambuliaji anaweza kutumia hii kwa kuunda funguo za HMAC kwa Akaunti ya Huduma yenye mamlaka ya juu, hivyo kupandisha mamlaka ndani ya Cloud Storage. Ingawa funguo za HMAC zinazohusishwa na watumiaji zinaweza kupatikana tu kupitia konsoli ya wavuti, funguo za ufikiaji na siri zinabaki kupatikana milele, zikiwa na uwezo wa kuhifadhi upatikanaji wa akiba. Kwa upande mwingine, funguo za HMAC zinazohusishwa na Akaunti za Huduma zinapatikana kupitia API, lakini funguo zao za ufikiaji na siri hazipatikani baada ya kuundwa, kuongeza kiwango cha ugumu kwa upatikanaji wa kudumu.
Scripti nyingine ya unyakuzi kwa njia hii inaweza kupatikana hapa.
storage.objects.create
, storage.objects.delete
= Ruhusa za Kuandika HifadhiIli kuunda kitu kipya ndani ya bakuli unahitaji storage.objects.create
na, kulingana na nyaraka, unahitaji pia storage.objects.delete
ili kubadilisha kitu kilichopo.
Unyakuzi wa kawaida sana wa bakuli ambapo unaweza kuandika kwenye wingu ni katika kesi ambapo bakuli linaokoa faili za seva za wavuti, unaweza kuwa na uwezo wa kuhifadhi msimbo mpya ambao utatumika na programu ya wavuti.
Composer ni Apache Airflow inayosimamiwa ndani ya GCP. Ina vipengele kadhaa vya kuvutia:
Inafanya kazi ndani ya GKE cluster, hivyo SA ambayo cluster inatumia inapatikana na msimbo unaotembea ndani ya Composer
Vipengele vyote vya mazingira ya composer (msimbo wa DAGs, plugins na data) vinahifadhiwa ndani ya bakuli la GCP. Ikiwa mshambuliaji ana ruhusa za kusoma na kuandika juu yake, anaweza kufuatilia bakuli na wakati wowote DAG inaundwa au kusasishwa, kuwasilisha toleo lililo na backdoor ili mazingira ya composer yapate toleo lililo na backdoor kutoka hifadhi.
Unaweza kupata PoC ya shambulio hili kwenye repo: https://github.com/carlospolop/Monitor-Backdoor-Composer-DAGs
Msimbo wa Cloud Functions unahifadhiwa katika Hifadhi na wakati toleo jipya linaundwa msimbo unasukumwa kwenye bakuli na kisha kontena jipya linajengwa kutoka kwa msimbo huu. Kwa hivyo, kufuta msimbo kabla ya toleo jipya kujengwa kunawezekana kufanya kazi ya wingu kutekeleza msimbo wa kiholela.
Unaweza kupata PoC ya shambulio hili kwenye repo: https://github.com/carlospolop/Monitor-Backdoor-Cloud-Functions
Toleo za AppEngine zinaunda data fulani ndani ya bakuli kwa muundo wa jina: staging.<project-id>.appspot.com
. Ndani ya bakuli hii, inawezekana kupata folda inayoitwa ae
ambayo itakuwa na folda kwa kila toleo la programu ya AppEngine na ndani ya folda hizi itakuwa inawezekana kupata faili ya manifest.json
. Faili hii ina json yenye faili zote ambazo zinapaswa kutumika kuunda toleo maalum. Zaidi ya hayo, inawezekana kupata majina halisi ya faili, URL zao ndani ya bakuli ya GCP (faili ndani ya bakuli zilibadilisha majina yao kwa hash yao ya sha1) na hash ya sha1 ya kila faili.
Kumbuka kwamba haiwezekani kuchukua bakuli hii kabla kwa sababu watumiaji wa GCP hawana mamlaka ya kuunda bakuli kwa kutumia jina la kikoa appspot.com.
Hata hivyo, kwa ruhusa za kusoma na kuandika juu ya bakuli hii, inawezekana kupandisha mamlaka kwa SA iliyoambatanishwa na toleo la App Engine kwa kufuatilia bakuli na wakati wowote mabadiliko yanapofanywa (toleo jipya), kubadilisha toleo jipya haraka iwezekanavyo. Kwa njia hii, kontena linaloundwa kutoka kwa msimbo huu litatekeleza msimbo wa backdoored.
Shambulio lililotajwa linaweza kufanywa kwa njia nyingi tofauti, zote huanza kwa kufuatilia bakuli staging.<project-id>.appspot.com
:
Pakia msimbo mpya kamili wa toleo la AppEngine kwenye bakuli tofauti na linalopatikana na kuandaa faili ya manifest.json
yenye jina jipya la bakuli na hash za sha1 za hizo. Kisha, wakati toleo jipya linaundwa ndani ya bakuli, unahitaji tu kubadilisha faili ya manifest.json
na kupakia ile mbaya.
Pakia toleo lililobadilishwa la requirements.txt
ambalo litatumia msimbo wa utegemezi mbaya na kusasisha faili ya manifest.json
na jina jipya la faili, URL na hash yake.
Pakia faili iliyobadilishwa ya main.py
au app.yaml
ambayo itatekeleza msimbo mbaya na kusasisha faili ya manifest.json
na jina jipya la faili, URL na hash yake.
Unaweza kupata PoC ya shambulio hili kwenye repo: https://github.com/carlospolop/Monitor-Backdoor-AppEngine
Google Container Registry inahifadhi picha ndani ya bakuli, ikiwa unaweza kuandika bakuli hizo unaweza kuwa na uwezo wa kuhamasisha kwa upande ambapo bakuli hizo zinatumika.
Bakuli inayotumika na GCR itakuwa na URL inayofanana na gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com
(Subdomains za kiwango cha juu zimeelezwa hapa).
Huduma hii imeondolewa hivyo shambulio hili halifai tena. Zaidi ya hayo, Katalogi ya Vitu, huduma inayochukua nafasi hii, haihifadhi picha katika bakuli.
Jifunze na fanya mazoezi ya Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)