Terraform Security
Last updated
Last updated
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)
HashiCorp Terraform ni chombo cha miundombinu kama msimbo ambacho kinakuruhusu kufafanua rasilimali za wingu na za ndani katika faili za usanidi zinazoweza kusomeka na binadamu ambazo unaweza kuziandika upya, kuzitumia tena, na kuzishiriki. Kisha unaweza kutumia mtiririko wa kazi unaofanana ili kuandaa na kusimamia miundombinu yako yote wakati wa mzunguko wake wa maisha. Terraform inaweza kusimamia vipengele vya chini kama vile kompyuta, uhifadhi, na rasilimali za mtandao, pamoja na vipengele vya juu kama vile entries za DNS na vipengele vya SaaS.
Terraform inaunda na kusimamia rasilimali kwenye majukwaa ya wingu na huduma nyingine kupitia interfaces zao za programu za maombi (APIs). Watoa huduma wanaruhusu Terraform kufanya kazi na karibu jukwaa au huduma yoyote yenye API inayopatikana.
HashiCorp na jamii ya Terraform tayari wameandika zaidi ya watoa huduma 1700 kusimamia maelfu ya aina tofauti za rasilimali na huduma, na nambari hii inaendelea kukua. Unaweza kupata watoa huduma wote wanaopatikana hadharani kwenye Terraform Registry, ikiwa ni pamoja na Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, na mengine mengi.
Mtiririko wa msingi wa Terraform unajumuisha hatua tatu:
Andika: Unafafanua rasilimali, ambazo zinaweza kuwa kwenye watoa huduma na huduma nyingi za wingu. Kwa mfano, unaweza kuunda usanidi wa kupeleka programu kwenye mashine za virtual katika mtandao wa Virtual Private Cloud (VPC) pamoja na vikundi vya usalama na balancer ya mzigo.
Panga: Terraform inaunda mpango wa utekelezaji unaofafanua miundombinu itakayoundwa, kusasishwa, au kuharibiwa kulingana na miundombinu iliyopo na usanidi wako.
Tumia: Kwa idhini, Terraform inatekeleza operesheni zilizopendekezwa kwa mpangilio sahihi, ikiheshimu utegemezi wowote wa rasilimali. Kwa mfano, ikiwa unasasisha mali za VPC na kubadilisha idadi ya mashine za virtual katika VPC hiyo, Terraform itaunda upya VPC kabla ya kupanua mashine za virtual.
Sakinisha terraform kwenye kompyuta yako.
Hapa una mwongozo na hapa una njia bora ya kupakua terraform.
Terraform haina jukwaa linalofichua ukurasa wa wavuti au huduma ya mtandao tunaweza kuhesabu, kwa hivyo, njia pekee ya kuathiri terraform ni kuwa na uwezo wa kuongeza/kubadilisha faili za usanidi wa terraform.
Hata hivyo, terraform ni kipengele nyeti sana kuathiri kwa sababu itakuwa na ufikiaji wa kijasiri kwa maeneo tofauti ili iweze kufanya kazi ipasavyo.
Njia kuu kwa mshambuliaji kuwa na uwezo wa kuathiri mfumo ambapo terraform inafanya kazi ni kuathiri hazina inayohifadhi usanidi wa terraform, kwa sababu kwa wakati fulani wata fasiriwa.
Kwa kweli, kuna suluhisho huko nje ambazo zinafanya mpango wa terraform/tumia kiotomatiki baada ya PR kuundwa, kama Atlantis:
Atlantis SecurityIkiwa una uwezo wa kuathiri faili ya terraform kuna njia tofauti unaweza kufanya RCE wakati mtu anatekeleza terraform plan
au terraform apply
.
Mpango wa Terraform ni amri inayotumika zaidi katika terraform na waendelezaji/misitu inayotumia terraform huipigia simu kila wakati, hivyo njia rahisi ya kupata RCE ni kuhakikisha unachafua faili ya usanidi wa terraform ambayo itatekeleza amri zisizo za kawaida katika terraform plan
.
Kutumia mtoa huduma wa nje
Terraform inatoa external
provider ambayo inatoa njia ya kuunganishwa kati ya Terraform na programu za nje. Unaweza kutumia chanzo cha data external
kuendesha msimbo wowote wakati wa plan
.
Kuingiza katika faili ya usanidi wa terraform kitu kama ifuatavyo kutaendesha rev shell wakati wa kutekeleza terraform plan
:
Kutumia mtoa huduma maalum
Mshambuliaji anaweza kutuma mtoa huduma maalum kwenye Terraform Registry na kisha kuiongeza kwenye msimbo wa Terraform katika tawi la kipengele (mfano kutoka hapa):
Mtoa huduma hupakuliwa katika init
na utaendesha msimbo mbaya wakati plan
inatekelezwa
Unaweza kupata mfano katika https://github.com/rung/terraform-provider-cmdexec
Kutumia rejeleo la nje
Chaguzi zote zilizotajwa ni muhimu lakini si za siri sana (ya pili ni ya siri zaidi lakini ngumu zaidi kuliko ya kwanza). Unaweza kufanya shambulio hili hata kwa njia ya siri zaidi, kwa kufuata mapendekezo haya:
Badala ya kuongeza rev shell moja kwa moja kwenye faili ya terraform, unaweza kupakia rasilimali ya nje ambayo ina rev shell:
You can find the rev shell code in https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules
Katika rasilimali ya nje, tumia kipengele cha ref kuficha kodi ya rev shell ya terraform katika tawi ndani ya repo, kitu kama: git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b
Terraform apply itatekelezwa ili kutekeleza mabadiliko yote, unaweza pia kuitumia vibaya kupata RCE kwa kuingiza faili ya Terraform yenye local-exec.
Unahitaji tu kuhakikisha payload fulani kama ifuatavyo inamalizika katika faili ya main.tf
:
Fuata mapendekezo kutoka kwa mbinu ya awali ili kufanikisha shambulio hili kwa njia ya siri zaidi kwa kutumia marejeleo ya nje.
Unaweza kuwa na thamani za siri zinazotumiwa na terraform zikiwa zimeandikwa kwa kukimbia terraform apply
kwa kuongeza kwenye faili la terraform kitu kama:
Katika hali ambapo una ufikiaji wa kuandika kwenye faili za hali za terraform lakini huwezi kubadilisha msimbo wa terraform, utafiti huu unatoa chaguzi za kuvutia za kunufaika na faili hiyo:
Kuna njia 2 za kuharibu rasilimali:
Weka rasilimali yenye jina la nasibu kwenye faili la hali ikielekeza kwenye rasilimali halisi ya kuharibu
Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiharibu (ikifuatilia kitambulisho halisi cha rasilimali kilichotajwa). Mfano kutoka ukurasa wa awali:
Badilisha rasilimali ili kufuta kwa njia ambayo haiwezekani kuisasisha (hivyo itafutwa na kuundwa upya)
Kwa mfano la EC2, kubadilisha aina ya mfano ni ya kutosha kufanya terraform ifute na kuunda upya.
Pia inawezekana kuunda mtoa huduma maalum na kubadilisha tu mmoja wa watoa huduma katika faili ya hali ya terraform kwa yule mbaya au kuongeza rasilimali tupu na mtoa huduma mbaya. Mfano kutoka utafiti wa awali:
Katika hali ambapo unakutana na hali ambapo hashicorp/external
imeorodheshwa, unaweza kuanzisha upya mtoa huduma external
kwa kufanya yafuatayo. Kumbuka: Tunatumia fork ya mtoa huduma wa external iliyochapishwa na https://registry.terraform.io/providers/nazarewk/external/latest. Unaweza kuchapisha fork yako mwenyewe au upya-utekelezaji pia.
Kisha unaweza kutumia external
kama kawaida.
tfsec: tfsec inatumia uchambuzi wa statiki wa msimbo wako wa terraform kubaini uwezekano wa makosa ya usanidi.
terascan: Terrascan ni mchambuzi wa msimbo wa statiki kwa Miundombinu kama Msimbo.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)