Atlantis Security
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze na zoezi la GCP Hacking:
Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Taarifa Msingi
Atlantis kimsingi inakusaidia kutekeleza terraform kutoka kwa Maombi ya Kuvuta kutoka kwa seva yako ya git.
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3270244124-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FNMQzPwpgCFpke97H2tTI%252Fuploads%252Fgit-blob-58c4ba09eeb037fdfb33ecbe6e5887b2576103e2%252Fimage%2520%28161%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=76de5fd1&sv=1)
Maabara ya Kienyeji
Nenda kwenye ukurasa wa kutolewa kwa atlantis kwenye https://github.com/runatlantis/atlantis/releases na pakua ile inayokufaa.
Unda ishara ya kibinafsi (yenye ufikivu wa repo) ya mtumiaji wako wa github
Tekeleza
./atlantis testdrive
na itaunda repo ya onyesho unayoweza kutumia kuzungumza na atlantisUnaweza kufikia ukurasa wa wavuti kwenye 127.0.0.1:4141
Upatikanaji wa Atlantis
Ishara za Seva ya Git
Atlantis inasaidia mwenyeji wa git kadhaa kama Github, Gitlab, Bitbucket na Azure DevOps. Hata hivyo, ili kupata ufikivu wa repos kwenye majukwaa hayo na kutekeleza vitendo, inahitaji kuwa na ufikivu wa kipekee uliopewa (angalau ruhusa za kuandika). Nyaraka zinahimiza kuunda mtumiaji kwenye majukwaa haya kwa kusudi la Atlantis, lakini baadhi ya watu wanaweza kutumia akaunti za kibinafsi.
Kwa mtazamo wa mshambuliaji, akaunti ya Atlantis itakuwa moja ya vitu vya kuvutia sana vya kudukua.
Webhooks
Atlantis hutumia hiari Siri za Webhook kuthibitisha kuwa webhooks inayopokea kutoka kwa mwenyeji wako wa Git ni halali.
Njia moja ya kuthibitisha hii ni kuruhusu maombi yaje tu kutoka kwa IPs ya mwenyeji wako wa Git lakini njia rahisi ni kutumia Siri ya Webhook.
Tambua kwamba isipokuwa unatumia seva ya github au bitbucket ya kibinafsi, utahitaji kufunua miisho ya webhook kwa Mtandao.
Atlantis itakuwa ina kufunua webhooks ili seva ya git iweze kutuma habari kwake. Kwa mtazamo wa mshambuliaji itakuwa ya kuvutia kujua kama unaweza kutuma ujumbe kwake.
Ishara za Mtoaji
Atlantis inatekeleza Terraform kwa kutekeleza tu amri za terraform plan
na apply
kwenye seva Atlantis inayoendeshwa. Kama vile unapotekeleza Terraform kwa kibinafsi, Atlantis inahitaji ishara kwa mtoaji wako maalum.
Ni juu yako jinsi unavyo utoa ishara kwa mtoaji wako maalum kwa Atlantis:
Mchoro wa Atlantis Helm na Moduli ya AWS Fargate ina njia zao za kutoa ishara kwa mtoaji. Soma nyaraka zao.
Ikiwa unatekeleza Atlantis kwenye wingu basi mawingu mengi yana njia za kutoa ufikivu wa API ya wingu kwa programu zinazoendeshwa kwenye mawingu hayo, mfano:
Vyeo vya AWS EC2 (Tafuta "Vyeo vya EC2")
Watumiaji wengi huanzisha mazingira ya mazingira, mfano.
AWS_ACCESS_KEY
, ambapo Atlantis inaendeshwa.Wengine hufanya faili za usanidi muhimu, mfano.
~/.aws/credentials
, ambapo Atlantis inaendeshwa.Tumia Mtoaji wa Hazina ya HashiCorp kupata ishara za mtoaji.
Kontena ambapo Atlantis inaendeshwa itakuwa na uwezekano mkubwa wa kuwa na ishara za kipekee kwa watoaji (AWS, GCP, Github...) ambao Atlantis inasimamia kupitia Terraform.
Ukurasa wa Wavuti
Kwa chaguo-msingi Atlantis itaendesha ukurasa wa wavuti kwenye bandari 4141 kwenye localhost. Ukurasa huu tu unakuwezesha kuwezesha/kulemaza atlantis apply na kuangalia hali ya mpango wa repos na kuzifungua (hauruhusu kuhariri vitu, hivyo sio muhimu sana).
Labda hautaupata umefunuliwa kwa mtandao, lakini inaonekana kwa chaguo-msingi hakuna ishara zinahitajika kufikia (na kama zinahitajika atlantis
:atlantis
ni zile za chaguo-msingi).
Usanidi wa Seva
Usanidi wa seva ya atlantis
unaweza kutajwa kupitia bendera za mstari wa amri, mazingira ya mazingira, faili ya usanidi au mchanganyiko wa vitatu hivyo.
Unaweza kupata hapa orodha ya bendera inayoungwa mkono na seva ya Atlantis
Thamani zinachaguliwa kwa mpangilio huu:
Bendera
Mazingira ya Mazingira
Faili ya Usanidi
Tambua kwamba katika usanidi unaweza kupata thamani za kuvutia kama vile ishara na nywila.
Usanidi wa Repos
Baadhi ya usanidi unaathiri jinsi repos zinavyosimamiwa. Hata hivyo, inawezekana kwamba kila repo inahitaji mipangilio tofauti, kwa hivyo kuna njia za kufafanua kila repo. Hii ni mpangilio wa kipaumbele:
Repo
/atlantis.yml
faili. Faili hii inaweza kutumika kufafanua jinsi atlantis inavyopaswa kutibu repo. Hata hivyo, kwa chaguo-msingi baadhi ya funguo haziwezi kufafanuliwa hapa bila bendera zinazoruhusu hilo.Labda inahitajika kuruhusiwa na bendera kama
allowed_overrides
auallow_custom_workflows
Usanidi wa Upande wa Seva: Unaweza kuipitisha kwa bendera
--repo-config
na ni yaml inayopanga mipangilio mpya kwa kila repo (regexes inasaidiwa)Thamani za Chaguo-msingi
Kinga za PR
Atlantis inaruhusu kuonyesha ikiwa unataka PR iwe imeidhinishwa
na mtu mwingine (hata kama hiyo haijawekwa katika kinga ya tawi) na/au iwe inayoweza kufungwa
(kinga ya tawi imepita) kabla ya kukimbia apply. Kutoka mtazamo wa usalama, kuweka chaguo zote ni muhimu.
Katika kesi allowed_overrides
ni Kweli, mipangilio hii inaweza kubadilishwa kwenye kila mradi kupitia faili ya /atlantis.yml
.
Scripts
Mipangilio ya repo inaweza kuainisha scripts za kukimbia kabla (pre workflow hooks) na baada (post workflow hooks) ya workflow kutekelezwa.
Hakuna chaguo la kuruhusu kuainisha scripts hizi katika faili ya repo /atlantis.yml
.
Workflow
Katika mipangilio ya repo (mipangilio ya upande wa seva) unaweza kuainisha mfumo wa kazi uliozoeleka mpya, au kuunda mifumo ya kazi ya desturi mpya. Unaweza pia kuainisha ni repo zipi zinaweza kufikia zile mipya zilizozalishwa. Kisha, unaweza kuruhusu faili ya atlantis.yaml ya kila repo kuainisha mfumo wa kazi utakaotumika.
Ikiwa bendera ya mipangilio ya upande wa seva allow_custom_workflows
imewekwa kuwa Kweli, mifumo ya kazi inaweza kuainishwa katika faili ya atlantis.yaml
ya kila repo. Pia inaweza kuwa muhimu kwamba allowed_overrides
inaainisha pia workflow
kwa kubadilisha mfumo wa kazi utakaotumika.
Hii kimsingi itatoa RCE kwenye seva ya Atlantis kwa mtumiaji yeyote anayeweza kufikia repo hiyo.
Ukaguzi wa Sera ya Conftest
Atlantis inasaidia kukimbia conftest sera upande wa server dhidi ya matokeo ya mpango. Matumizi ya kawaida ya hatua hii ni pamoja na:
Kukataa matumizi ya orodha ya moduli
Kudai sifa za rasilimali wakati wa uundaji
Kukamata kufutwa kwa rasilimali kwa bahati mbaya
Kuzuia hatari za usalama (yaani kufunua bandari salama kwa umma)
Unaweza kuangalia jinsi ya kuiwezesha katika nyaraka.
Amri za Atlantis
Katika nyaraka unaweza kupata chaguo unazoweza kutumia kukimbia Atlantis:
Mashambulizi
Ikiwa wakati wa uvamizi unakutana na kosa hili: Kosa: Kosa la kupata kufunga hali
Unaweza kulitatua kwa kukimbia:
Atlantis mpango wa RCE - Kubadilisha Mipangilio kwenye PR mpya
Ikiwa una ufikiaji wa kuandika kwenye hazina, utaweza kuunda tawi jipya ndani yake na kuzalisha PR. Ikiwa unaweza kutekeleza atlantis plan
(au labda inatekelezwa kiotomatiki) utaweza kufanya RCE ndani ya seva ya Atlantis.
Unaweza kufanya hivi kwa kufanya Atlantis iweke chanzo cha data cha nje. Weka mzigo kama huu katika faili ya main.tf
:
Shambulizi la Kujificha
Unaweza kutekeleza shambulizi hili hata kwa njia ya kujificha 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:
Unaweza kupata msimbo wa rev shell katika https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules
Katika rasilimali ya nje, tumia kipengele cha ref kuficha msimbo wa rev shell wa terraform katika tawi ndani ya repo, kitu kama:
git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b
Badala ya kuunda PR kwa masta kuzindua Atlantis, unda matawi 2 (jaribio1 na jaribio2) na unda PR kutoka moja kwenda nyingine. Ukikamilisha shambulio, ondoa tu PR na matawi.
Atlantis plan Secrets Dump
Unaweza kudondosha siri zinazotumiwa na terraform kwa kukimbia atlantis plan
(terraform plan
) kwa kuweka kitu kama hiki katika faili ya terraform:
Atlantis inatumia RCE - Kubadilisha Mipangilio kwenye PR mpya
Ikiwa una ufikiaji wa kuandika kwenye hazina utaweza kuunda tawi jipya ndani yake na kuzalisha PR. Ikiwa unaweza kutekeleza atlantis apply
utaweza kufanya RCE ndani ya seva ya Atlantis.
Hata hivyo, kawaida utahitaji kukiuka baadhi ya kinga:
Inayoweza Kufungwa: Ikiwa kinga hii imewekwa kwenye Atlantis, unaweza tu kukimbia
atlantis apply
ikiwa PR inaweza kufungwa (ambayo inamaanisha kuwa kinga ya tawi inahitaji kukiukwa).Angalia njia za kukiuka kinga za tawi
Imeidhinishwa: Ikiwa kinga hii imewekwa kwenye Atlantis, mtumiaji mwingine lazima apitishe PR kabla ya wewe kuweza kukimbia
atlantis apply
Kwa chaguo-msingi unaweza kutumia kitufe cha Gitbot kukiuka kinga hii
Kukimbia terraform apply
kwenye faili ya Terraform yenye nia mbaya na local-exec.
Unahitaji tu kuhakikisha kuwa mzigo fulani kama huu unamalizika kwenye faili ya main.tf
:
Fuata mapendekezo kutoka kwa mbinu iliyopita kutekeleza shambulio hili kwa njia ya kujificha zaidi.
Uingizaji wa Paramu za Terraform
Unapokuwa unatekeleza atlantis plan
au atlantis apply
terraform inatekelezwa chini ya pazia, unaweza kupitisha amri kwa terraform kutoka atlantis kwa kutoa maoni kama:
Kitu unachoweza kupitisha ni mazingira ya env ambayo yanaweza kusaidia kuzidi baadhi ya ulinzi. Angalia mazingira ya env ya terraform katika https://www.terraform.io/cli/config/environment-variables
Mchakato wa Kibinafsi
Kutekeleza amri za ujenzi za kawaida zenye nia mbaya zilizotajwa katika faili ya atlantis.yaml
. Atlantis hutumia faili ya atlantis.yaml
kutoka tawi la ombi la kuvuta, sio ya master
.
Uwezekano huu ulitajwa katika sehemu iliyopita:
Ikiwa bendera ya upande wa seva allow_custom_workflows
imewekwa kuwa Kweli, mchakato wa kazi unaweza kuwa umeainishwa katika faili ya atlantis.yaml
ya kila repo. Pia inaweza kuwa muhimu kwamba allowed_overrides
inaainisha pia workflow
kwa kuzidi mchakato wa kazi utakaotumiwa.
Hii kimsingi itatoa RCE kwenye seva ya Atlantis kwa mtumiaji yeyote anayeweza kufikia repo hiyo.
Kupita mipango/maombi ya ulinzi
Ikiwa bendera ya upande wa seva allowed_overrides
ime sanidiwa na apply_requirements
, ni rahisi kwa repo kurekebisha mipango/maombi ya ulinzi ili kuzipita.
Utekaji wa PR
Ikiwa mtu anatuma maoni ya atlantis plan/apply
kwenye maombi yako halali ya pull, itasababisha terraform kufanya kazi wakati hauitaki.
Zaidi ya hayo, ikiwa huna kuweka katika ulinzi wa tawi kuomba kupitia tena kila PR wakati commit mpya inapigwa kwenye hiyo, mtu anaweza kuandika mizunguko ya uovu (angalia mifano iliyopita) kwenye mizunguko ya terraform, kukimbia atlantis plan/apply
na kupata RCE.
Hii ni mazingira katika ulinzi wa matawi ya Github:
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3270244124-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FNMQzPwpgCFpke97H2tTI%252Fuploads%252Fgit-blob-942957ade0227c9566ae8634e66ceb1425e7c79b%252Fimage%2520%28216%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ee74c24e&sv=1)
Siri ya Webhook
Ikiwa unaweza kuiba siri ya webhook iliyotumiwa au ikiwa hakuna siri ya webhook inayotumiwa, unaweza kuita webhook ya Atlantis na kuita amri za atlatis moja kwa moja.
Bitbucket
Bitbucket Cloud haishikilii siri za webhook. Hii inaweza kuruhusu wachomaji kufanya ombi za uwongo kutoka Bitbucket. Hakikisha unaruhusu tu anwani za IP za Bitbucket.
Hii inamaanisha kwamba mchomaji anaweza kufanya ombi bandia kwa Atlantis ambazo zinaonekana kama zinatoka kwa Bitbucket.
Ikiwa unaweka
--repo-allowlist
basi wanaweza tu kufanya ombi bandia yanayohusiana na repos hizo hivyo uharibifu mkubwa wanaweza kufanya ni kupanga/kutekeleza kwenye repos zako.Ili kuzuia hili, ruhusu anwani za IP za Bitbucket (angalia Anwani za IP za IPv4 za kutoka).
Baada ya Utekaji
Ikiwa umefanikiwa kupata ufikiaji wa seva au angalau umepata LFI kuna vitu vya kuvutia unapaswa kujaribu kusoma:
/home/atlantis/.git-credentials
Ina vibali vya ufikiaji wa vcs/atlantis-data/atlantis.db
Ina vibali vya ufikiaji wa vcs pamoja na maelezo zaidi/atlantis-data/repos/<org_name>
/
<repo_name>/<pr_num>/<workspace>/<path_to_dir>/.terraform/terraform.tfstate
Faili ya hali ya terraformMfano: /atlantis-data/repos/ghOrg_/_myRepo/20/default/env/prod/.terraform/terraform.tfstate
/proc/1/environ
Vigezo vya mazingira/proc/[2-20]/cmdline
Mstari wa amri yaatlantis server
(inaweza kuwa na data nyeti)
Kupunguza Hatari
Usitumie kwenye Repos za Umma
Kwa sababu yeyote anaweza kutoa maoni kwenye maombi ya pull ya umma, hata na mikakati ya kupunguza hatari inapatikana, bado ni hatari kufanya Atlantis kwenye repos za umma bila usanidi sahihi wa mipangilio ya usalama.
Usitumie --allow-fork-prs
--allow-fork-prs
Ikiwa unatumia kwenye repo ya umma (ambayo sio ilipendekezwa, angalia hapo juu) usiweke --allow-fork-prs
(inayopendelewa kuwa ya uwongo) kwa sababu yeyote anaweza kufungua maombi ya pull kutoka kwa fork yao kwenye repo yako.
--repo-allowlist
--repo-allowlist
Atlantis inahitaji uweke orodha ya ruhusa ya repositori itakayokubali webhooks kutoka kupitia bendera ya --repo-allowlist
. Kwa mfano:
Repositori maalum:
--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests
Shirika lako zima:
--repo-allowlist=github.com/runatlantis/*
Kila repositori kwenye usanidi wako wa GitHub Enterprise:
--repo-allowlist=github.yourcompany.com/*
Repositori zote:
--repo-allowlist=*
. Inafaa wakati uko kwenye mtandao uliolindwa lakini hatari bila kuweka siri ya webhook.
Bendera hii inahakikisha usanidi wako wa Atlantis haikutumiwa na repositori usizodhibiti. Angalia atlantis server --help
kwa maelezo zaidi.
Lina Terraform Planning
Ikiwa wachomaji wanawasilisha maombi ya pull na nambari mbaya ya Terraform iko kwenye mfano wako wa tishio basi lazima uwe na ufahamu kwamba idhini za terraform apply
hazitoshi. Inawezekana kutekeleza nambari mbaya katika terraform plan
kwa kutumia chanzo cha data cha external
au kwa kufafanua mtoa huduma mbaya. Nambari hii inaweza kisha kuchukua vibali vyako.
Ili kuzuia hili, unaweza:
Ingiza watoa huduma kwenye picha ya Atlantis au mwenyeji na kataa kutoka nje kwenye uzalishaji.
Tekeleza itifaki ya usajili wa watoa huduma ndani na kataa kutoka nje ya umma, hivyo unadhibiti ni nani anayeandika upatikanaji wa usajili.
Badilisha usanidi wa repo upande wa seva hatua ya
plan
kuthibitisha dhidi ya matumizi ya watoa huduma au vyanzo vya data vilivyozuiliwa au PR kutoka kwa watumiaji wasioruhusiwa. Unaweza pia kuongeza uthibitisho wa ziada wakati huu, k.m. kuhitaji "kuidhinisha" kwenye PR kabla ya kuruhusuplan
kuendelea. Conftest inaweza kuwa na manufaa hapa.
Siri za Webhook
Atlantis inapaswa kuendeshwa na siri za Webhook zilizowekwa kupitia mazingira ya $ATLANTIS_GH_WEBHOOK_SECRET
/$ATLANTIS_GITLAB_WEBHOOK_SECRET
. Hata na bendera ya --repo-allowlist
iliyowekwa, bila siri ya webhook, wachomaji wanaweza kufanya maombi kwa Atlantis wakijifanya kuwa ni repo iliyoruhusiwa. Siri za webhook zinahakikisha kuwa maombi ya webhook yanatoka kweli kwa mtoa huduma wako wa VCS (GitHub au GitLab).
Ikiwa unatumia Azure DevOps, badala ya siri za webhook ongeza jina la msingi na nywila.
Uthibitishaji wa Msingi wa Azure DevOps
Azure DevOps inasaidia kutuma kichwa cha uthibitishaji wa msingi katika matukio yote ya webhook. Hii inahitaji kutumia URL ya HTTPS kwa eneo lako la webhook.
SSL/HTTPS
Ikiwa unatumia siri za webhook lakini trafiki yako ni juu ya HTTP basi siri za webhook zinaweza kuibiwa. Wezesha SSL/HTTPS kwa kutumia bendera za --ssl-cert-file
na --ssl-key-file
.
Wezesha Uthibitishaji kwenye Seva ya Wavuti ya Atlantis
Inapendekezwa sana kuwezesha uthibitishaji kwenye huduma ya wavuti. Wezesha BasicAuth kwa kutumia --web-basic-auth=true
na weka jina la mtumiaji na nywila kwa kutumia bendera za --web-username=yourUsername
na --web-password=yourPassword
.
Unaweza pia kupitisha haya kama mazingira ya mazingira ATLANTIS_WEB_BASIC_AUTH=true
ATLANTIS_WEB_USERNAME=yourUsername
na ATLANTIS_WEB_PASSWORD=yourPassword
.
Marejeo
Jifunze & jaribu Udukuzi wa AWS:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze & jaribu Udukuzi wa GCP:
Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Last updated