Concourse Enumeration & Attacks
Uchambuzi na Mashambulizi ya Concourse
Majukumu na Ruhusa za Mtumiaji
Concourse inakuja na majukumu matano:
Concourse Msimamizi: Jukumu hili linatolewa tu kwa wamiliki wa timu kuu (timu ya awali ya concourse). Waandamizi wanaweza kuwezesha timu nyingine (k.m.:
fly set-team
,fly destroy-team
...). Ruhusa za jukumu hili haziwezi kuathiriwa na RBAC.mmiliki: Wamiliki wa timu wanaweza kurekebisha kila kitu ndani ya timu.
mwanachama: Wanachama wa timu wanaweza kusoma na kuandika ndani ya mali za timu lakini hawawezi kurekebisha mipangilio ya timu.
mwendeshaji wa mabomba: Wafanyikazi wa mabomba wanaweza kutekeleza operesheni za mabomba kama kuzindua ujenzi na kufunga rasilimali, hata hivyo hawawezi kusasisha mizunguko ya mabomba.
mtazamaji: Watazamaji wa timu wana upatikanaji wa "soma tu" kwa timu na mabomba yake.
Zaidi ya hayo, ruhusa za majukumu ya mmiliki, mwanachama, mwendeshaji wa mabomba na mtazamaji zinaweza kurekebishwa kwa kusanidi RBAC (kwa kusanidi kwa usahihi zaidi vitendo vyake). Soma zaidi kuhusu hilo katika: https://concourse-ci.org/user-roles.html
Tambua kuwa Concourse inagawa mizunguko ndani ya Timu. Kwa hivyo watumiaji wanaopatikana kwenye Timu wataweza kusimamia mizunguko hiyo na Timu kadhaa zinaweza kuwepo. Mtumiaji anaweza kuwa sehemu ya Timu kadhaa na kuwa na ruhusa tofauti ndani ya kila moja.
Vars & Meneja wa Sifa
Katika mizunguko ya YAML unaweza kusanidi thamani kwa kutumia sintaksia ((_jina-la-chanzo_:_njia-ya-siri_._uchunguzi-wa-siri_))
.
Kutoka kwenye nyaraka: Jina-la-chanzo ni hiari, na ikiachwa, meneja wa sifa wa kikundi atatumika, au thamani inaweza kutolewa kwa njia ya tuli.
uchunguzi-wa-siri wa hiari unataja uchunguzi kwenye siri iliyopatikana kusoma. Ikiachwa, meneja wa sifa anaweza kuchagua kusoma 'uchunguzi wa chaguo-msingi' kutoka kwenye sifa iliyopatikana ikiwa uchunguzi upo.
Zaidi ya hayo, njia-ya-siri na uchunguzi-wa-siri inaweza kuwa imezungukwa na alama za nukta mbili "..."
ikiwa zina herufi maalum kama vile .
na :
. Kwa mfano, ((chanzo:"siri-yangu"."uchunguzi:1"))
itaweka njia-ya-siri kuwa siri-yangu
na uchunguzi-wa-siri kuwa uchunguzi:1
.
Vars Tuli
Vars tuli zinaweza kutajwa katika hatua za kazi:
Au kutumia fly
vigezo vifuatavyo:
-v
au--var
JINA=THAMANI
inaweka stringTHAMANI
kama thamani kwa varJINA
.-y
au--yaml-var
JINA=THAMANI
inachambuaTHAMANI
kama YAML na kuweka kama thamani kwa varJINA
.-i
au--instance-var
JINA=THAMANI
inachambuaTHAMANI
kama YAML na kuweka kama thamani kwa var ya kesiJINA
. Angalia Kundi la Mabomba kujifunza zaidi kuhusu vars ya kesi.-l
au--load-vars-from
FAILI
inapakiaFAILI
, hati ya YAML inayojumuisha majina ya var na thamani, na kuweka yote.
Usimamizi wa Sifa
Kuna njia tofauti ambayo Meneja wa Sifa anaweza kutajwa katika mabomba, soma jinsi katika https://concourse-ci.org/creds.html. Zaidi ya hayo, Concourse inasaidia mameneja tofauti wa sifa:
Tafadhali kumbuka kwamba ikiwa una aina fulani ya ufikiaji wa kuandika kwa Concourse unaweza kuunda kazi za kuchota siri hizo kwani Concourse inahitaji uwezo wa kuzifikia.
Uainishaji wa Concourse
Ili kuainisha mazingira ya concourse kwanza unahitaji kukusanya sifa halali au kupata ishara iliyoidhinishwa labda katika faili ya usanidi ya .flyrc
.
Kuingia na Uainishaji wa Mtumiaji wa Sasa
Ili kuingia unahitaji kujua hitimisho, jina la timu (chaguo-msingi ni
kuu
) na timu ambayo mtumiaji anahusiana nayo:fly --target mfano kuingia --jina-la-timu timu-yangu --hitimisho-ya-concourse https://ci.mfano.com [--bila-uthibitisho] [--cheti-cha-mteja=./njia --funguo-cha-mteja=./njia]
Pata malengo yaliyowekwa:
fly malengo
Pata ikiwa unganisho la malengo lililowekwa bado ni halali:
fly -t <malengo> hali
Pata jukumu la mtumiaji dhidi ya lengo lililoelezwa:
fly -t <malengo> maelezo-ya-mtumiaji
Tafadhali kumbuka kwamba ishara ya API ina hifadhiwa katika $HOME/.flyrc
kwa chaguo-msingi, ukiteka mashine unaweza kupata huko sifa.
Timu & Watumiaji
Pata orodha ya Timu
fly -t <malengo> timu
Pata majukumu ndani ya timu
fly -t <malengo> pata-timu -n <jina-la-timu>
Pata orodha ya watumiaji
fly -t <malengo> watumiaji-wa-aktif
Mabomba
Orodhesha mabomba:
fly -t <malengo> mabomba -a
Pata yaml ya mabomba (habari nyeti inaweza kupatikana katika ufafanuzi):
fly -t <malengo> pata-mabomba -p <jina-la-mabomba>
Pata vars zilizotangazwa za mabomba yote
kwa jina-la-mabomba katika $(fly -t <malengo> mabomba | grep -Ev "^id" | awk '{chapisha $2}'); fanya echo $jina-la-mabomba; fly -t <malengo> pata-mabomba -p $jina-la-mabomba -j | grep -Eo '"vars":[^}]+'; fanya
Pata majina yote ya siri za mabomba zilizotumiwa (ikiwa unaweza kuunda/kurekebisha kazi au kuteka chombo unaweza kuzichota):
Kontena & Wafanyakazi
Orodhesha wafanyakazi:
fly -t <lengo> wafanyakazi
Orodhesha makontena:
fly -t <lengo> makontena
Orodhesha ujenzi (kuona kinachoendeshwa):
fly -t <lengo> ujenzi
Mashambulizi ya Concourse
Kuvunja Neno la Siri
admin:admin
test:test
Uchambuzi wa Siri na paramu
Katika sehemu iliyopita tuliona jinsi unaweza kupata majina yote ya siri na vars zilizotumiwa na mwendeshaji wa mabomba. Vars zinaweza kuwa na habari nyeti na jina la siri litakuwa muhimu baadaye kujaribu kuiba.
Kikao ndani ya kontena inayofanya kazi au iliyofanya kazi hivi karibuni
Ikiwa una mamlaka za kutosha (jukumu la mwanachama au zaidi) utaweza kuorodhesha mabomba na majukumu na tu kupata kikao ndani ya kontena ya <mabomba>/<kazi>
iliyotumika:
Kwa ubadilishaji/ujenzi wa mabomba mapya utaweza:
Kuiba siri (kwa kuzitoa kwa kuchapisha au kuingia ndani ya kontena na kukimbia
env
)Kutoroka kwenda kwenye node (kwa kukupa mamlaka ya kutosha -
privileged: true
)Kuhesabu/ Kutumia mwisho wa metadata ya wingu (kutoka kwa podi na kutoka kwa node)
Kufuta mabomba yaliyoundwa
Tekeleza Kazi ya Desturi
Hii ni sawa na njia iliyopita lakini badala ya kubadilisha/kujenga mabomba mapya kabisa unaweza kutekeleza kazi ya desturi (ambayo labda itakuwa ya kujificha zaidi):
Kutoroka kwenye node kutoka kwa kazi iliyopewa ruhusa
Katika sehemu zilizopita tuliona jinsi ya kutekeleza kazi iliyopewa ruhusa na concourse. Hii haitoi chombo cha kontena ufikiaji sawa na bendera ya ruhusa kwenye kontena ya docker. Kwa mfano, hautaona kifaa cha mfumo wa faili cha node katika /dev, hivyo kutoroka kunaweza kuwa "ngumu" zaidi.
Katika PoC ifuatayo tutatumia release_agent kutoroka na marekebisho madogo:
Kama ulivyoweza kugundua hii ni tu kutoroka kwa release_agent wa kawaida kwa kubadilisha njia ya cmd kwenye node
Kutoroka kwenye node kutoka kwenye kontena ya Mfanyikazi
Kutoroka kwa release_agent wa kawaida na marekebisho madogo yanatosha kwa hili:
Kutoroka kwa nodi kutoka kwa kontena ya Wavuti
Hata kama kontena ya wavuti ina ulinzi fulani uliowezeshwa, haifanyi kazi kama kontena ya kawaida yenye mamlaka (kwa mfano, huwezi kufunga na uwezo ni mdogo sana, hivyo njia zote rahisi za kutoroka kutoka kwa kontena hazina maana).
Hata hivyo, inahifadhi siri za ndani kwa maandishi wazi:
Unaweza kutumia sifa hizo kuingia kwenye seva ya wavuti na kuunda chombo cha haki na kutoroka kwenye node.
Katika mazingira hayo, unaweza pia kupata habari ya kupata postgresql ambayo concourse inatumia (anwani, jina la mtumiaji, nywila na database miongoni mwa habari nyingine):
Kutumia Huduma ya Garden - Sio Shambulio Halisi
Hizi ni maelezo ya kuvutia kuhusu huduma, lakini kwa sababu inasikiliza tu kwenye localhost, maelezo haya hayatakuwa na athari yoyote ambayo hatujachunguza tayari
Kwa chaguo-msingi kila mfanyakazi wa concourse atakuwa akikimbia huduma ya Garden kwenye bandari 7777. Huduma hii hutumiwa na Msimamizi wa Wavuti kuonyesha mfanyakazi anachohitaji kutekeleza (kupakua picha na kukimbia kila kazi). Hii inasikika nzuri kwa muhusika, lakini kuna kinga nzuri:
Ina kufichuliwa kwa ndani tu (127.0.0.1) na nadhani wakati mfanyakazi anathibitisha tena kwa Wavuti na huduma maalum ya SSH, mchimbaji hufanya mawasiliano ili mwenyeji wa wavuti aweze kuzungumza na kila huduma ya Garden ndani ya kila mfanyakazi.
Mwenyeji wa wavuti anakuwa akifuatilia kontena zinazoendeshwa kila baada ya sekunde chache, na kontena isiotarajiwa hufutwa. Kwa hivyo ikiwa unataka kukimbia kontena ya desturi unahitaji kubadilisha mawasiliano kati ya mwenyeji wa wavuti na huduma ya garden.
Wafanyakazi wa Concourse hufanya kazi na mamlaka ya juu ya kontena:
Hata hivyo, mbinu kama kufunga kifaa cha /dev cha node au release_agent haitafanya kazi (kwa sababu kifaa halisi chenye mfumo wa faili wa node hauwezi kufikiwa, ni kifaa cha kubuni tu). Hatuwezi kufikia michakato ya node, hivyo kutoroka kutoka kwa node bila kutumia udhaifu wa kernel kunakuwa ngumu.
Katika sehemu iliyopita tuliona jinsi ya kutoroka kutoka kwa chombo kilichopewa ruhusa, hivyo ikiwa tunaweza kutekeleza amri katika chombo kilichopewa ruhusa kilichoundwa na mfanyakazi wa sasa, tunaweza kutoroka kwenda kwenye node.
Tafadhali kumbuka kwamba nikitumia concourse niligundua kwamba wakati chombo kipya kinazaliwa ili kukimbia kitu, michakato ya chombo inaweza kufikiwa kutoka kwa chombo cha mfanyakazi, hivyo ni kama chombo kinachounda chombo kipya ndani yake.
Kuingia ndani ya chombo kilichopewa ruhusa kinachoendeshwa
Kujenga chombo kipya cha kipekee
Unaweza kwa urahisi kabisa kuunda chombo kipya (endesha UID ya kubahatisha) na kutekeleza kitu ndani yake:
Hata hivyo, seva ya wavuti inachunguza kila baada ya sekunde chache kontena zinazoendesha, na ikiwa moja isiyotarajiwa inagunduliwa, itafutwa. Kwa kuwa mawasiliano yanatokea kwa HTTP, unaweza kuhariri mawasiliano ili kuepuka kufutwa kwa kontena zisizotarajiwa:
Marejeo
https://concourse-ci.org/vars.html
Last updated