Basic Jenkins Information
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)
Njia ya kawaida zaidi ya kuingia kwenye Jenkins ni kwa kutumia jina la mtumiaji au nenosiri.
Ikiwa keki iliyoidhinishwa inapatikana, inaweza kutumika kufikia kikao cha mtumiaji. Keki hiyo kwa kawaida inaitwa JSESSIONID.*
. (Mtumiaji anaweza kumaliza vikao vyake vyote, lakini itabidi ajue kwanza kwamba keki ilipatikana).
Jenkins inaweza kuundwa kwa kutumia vyombo vya nyongeza ili iweze kupatikana kupitia SSO ya upande wa tatu.
Watumiaji wanaweza kuunda tokens ili kutoa ufikiaji kwa programu kujiwakilisha kupitia CLI au REST API.
Sehemu hii inatoa seva ya SSH iliyojengwa ndani kwa Jenkins. Ni kiolesura mbadala kwa Jenkins CLI, na amri zinaweza kutolewa kwa njia hii kwa kutumia mteja yeyote wa SSH. (Kutoka kwenye docs)
Katika /configureSecurity
inawezekana kuunda njia ya uidhinishaji ya Jenkins. Kuna chaguzi kadhaa:
Mtu yeyote anaweza kufanya chochote: Hata ufikiaji wa kutokujulikana unaweza kusimamia seva.
Hali ya urithi: Sawasawa na Jenkins <1.164. Ikiwa una "nafasi ya admin", utapewa udhibiti kamili juu ya mfumo, na vinginevyo (ikiwemo watumiaji wa kutokujulikana) utakuwa na ufikiaji wa kusoma.
Watumiaji walioingia wanaweza kufanya chochote: Katika hali hii, kila mtumiaji aliyeingia anapata udhibiti kamili wa Jenkins. Mtumiaji pekee ambaye hatakuwa na udhibiti kamili ni mtumiaji wa kutokujulikana, ambaye anapata tu ufikiaji wa kusoma.
Usalama wa msingi wa Matrix: Unaweza kuunda nani anaweza kufanya nini katika jedwali. Kila safu inawakilisha idhini. Kila mstari unawakilisha mtumiaji au kundi/nafasi. Hii inajumuisha mtumiaji maalum 'kutokujulikana', ambaye anawakilisha watumiaji wasio na uthibitisho, pamoja na 'uthibitishwa', ambaye anawakilisha watumiaji wote walio na uthibitisho.
Mkakati wa Uidhinishaji wa Msingi wa Mradi: Hali hii ni nyongeza kwa "Usalama wa msingi wa Matrix" inayoruhusu ACL ya ziada kuundwa kwa kila mradi tofauti.
Mkakati wa Kazi: Inaruhusu kuunda uidhinishaji kwa kutumia mkakati wa kazi. Simamia nafasi katika /role-strategy
.
Katika /configureSecurity
inawezekana kuunda ufalme wa usalama. Kwa kawaida Jenkins inajumuisha msaada wa Ufalme wa Usalama kadhaa tofauti:
Delegati kwa kontena la servlet: Kwa kuhamasisha uthibitisho kwa kontena la servlet linaloendesha Jenkins controller, kama Jetty.
Hifadhidata ya mtumiaji ya Jenkins: Tumia hifadhidata ya mtumiaji iliyojengwa ndani ya Jenkins kwa uthibitisho badala ya kuhamasisha kwa mfumo wa nje. Hii imewezeshwa kwa kawaida.
LDAP: Hamisha uthibitisho wote kwa seva ya LDAP iliyowekwa, ikiwa ni pamoja na watumiaji na makundi.
Hifadhidata ya mtumiaji/kundi la Unix: Huhamisha uthibitisho kwa hifadhidata ya mtumiaji ya kiwango cha Unix kwenye Jenkins controller. Hali hii pia itaruhusu matumizi ya makundi ya Unix kwa uidhinishaji.
Vyombo vya nyongeza vinaweza kutoa ufalme wa usalama wa ziada ambao unaweza kuwa muhimu kwa kuingiza Jenkins katika mifumo ya utambulisho iliyopo, kama vile:
M definitions kutoka kwenye docs:
Nodes ni mashine ambazo wakala wa kujenga zinaendesha. Jenkins inafuatilia kila node iliyoambatanishwa kwa ajili ya nafasi ya diski, nafasi ya muda ya bure, kubadilishana bure, muda wa saa/sawazisha na muda wa majibu. Node inachukuliwa kuwa nje ya mtandao ikiwa mojawapo ya hizi thamani inatoka nje ya kigezo kilichowekwa.
Wakala wanasimamia utendaji wa kazi kwa niaba ya Jenkins controller kwa kutumia waendeshaji. Wakala anaweza kutumia mfumo wowote wa uendeshaji unaounga mkono Java. Zana zinazohitajika kwa ajili ya kujenga na majaribio zimewekwa kwenye node ambapo wakala anafanya kazi; zinaweza kuwekwa moja kwa moja au kwenye kontena (Docker au Kubernetes). Kila wakala kwa ufanisi ni mchakato wenye PID yake mwenyewe kwenye mashine mwenyeji.
Mendeshaji ni sehemu ya kutekeleza kazi; kwa ufanisi, ni thread katika wakala. Idadi ya waendeshaji kwenye node inafafanua idadi ya kazi zinazoweza kutekelezwa kwa wakati mmoja kwenye node hiyo. Kwa maneno mengine, hii inamua idadi ya hatua za Pipeline stages
zinazoweza kutekelezwa kwenye node hiyo kwa wakati mmoja.
M definition kutoka kwenye docs: Jenkins inatumia AES kuandika na kulinda siri, hati, na funguo zao za uandishi. Funguo hizi za uandishi zimehifadhiwa katika $JENKINS_HOME/secrets/
pamoja na funguo kuu inayotumika kulinda funguo hizo. Hii directory inapaswa kuundwa ili tu mtumiaji wa mfumo wa uendeshaji ambaye Jenkins controller inafanya kazi kama awe na ufikiaji wa kusoma na kuandika kwenye directory hii (yaani, thamani ya chmod
ya 0700
au kutumia sifa sahihi za faili). Funguo kuu (wakati mwingine inaitwa "funguo ya uandishi wa funguo" katika cryptojargon) inahifadhiwa _bila kuandikwa_ kwenye mfumo wa faili wa Jenkins controller katika $JENKINS_HOME/secrets/master.key
ambayo haiwezi kulinda dhidi ya washambuliaji wenye ufikiaji wa moja kwa moja kwa faili hiyo. Watumiaji wengi na wabunifu watatumia funguo hizi za uandishi kwa njia isiyo ya moja kwa moja kupitia ama Secret API kwa kuandika data ya siri ya kawaida au kupitia API ya hati. Kwa wale wanaopenda cryptography, Jenkins inatumia AES katika hali ya kuandika block chaining (CBC) na PKCS#5 padding na IV za nasibu kuandika matukio ya CryptoConfidentialKey ambazo zimehifadhiwa katika $JENKINS_HOME/secrets/
kwa jina la faili linalolingana na id ya CryptoConfidentialKey
. Idadi za kawaida za funguo ni pamoja na:
hudson.util.Secret
: inatumika kwa siri za kawaida;
com.cloudbees.plugins.credentials.SecretBytes.KEY
: inatumika kwa aina fulani za hati;
jenkins.model.Jenkins.crumbSalt
: inatumika na mekanism ya ulinzi wa CSRF; na
Hati zinaweza kuwekwa kwa watoa huduma wa kimataifa (/credentials/
) ambazo zinaweza kufikiwa na mradi wowote ulioandaliwa, au zinaweza kuwekwa kwa miradi maalum (/job/<project-name>/configure
) na hivyo kuwa na ufikiaji kutoka mradi maalum tu.
Kulingana na docs: Hati ambazo ziko katika upeo zinapatikana kwa pipeline bila kikomo. Ili kuzuia kufichuliwa kwa bahati mbaya katika kumbukumbu ya kujenga, hati zime fichwa kutoka kwa matokeo ya kawaida, hivyo mwito wa env
(Linux) au set
(Windows), au programu zinazochapisha mazingira yao au vigezo hazitafichua katika kumbukumbu ya kujenga** kwa watumiaji ambao vinginevyo hawangeweza kupata hati hizo.
Ndio maana ili kuhamasisha hati, mshambuliaji anahitaji, kwa mfano, kuziweka kwenye base64.
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)