Basic Jenkins Information

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kupata

Jina la Mtumiaji + Nywila

Njia ya kawaida zaidi ya kuingia kwenye Jenkins ni kwa kutumia jina la mtumiaji au nywila

Kuki

Ikiwa kuki iliyoruhusiwa inaporwa, inaweza kutumika kufikia kikao cha mtumiaji. Kuki kawaida huitwa JSESSIONID.*. (Mtumiaji anaweza kusitisha vikao vyake vyote, lakini atahitaji kwanza kugundua kwamba kuki iliporwa).

SSO/Vifaa vya Programu

Jenkins inaweza kusanidiwa kutumia vifaa vya programu ili iwe inayopatikana kupitia SSO ya tatu.

Vitufe

Watumiaji wanaweza kuzalisha vitufe kutoa ufikiaji kwa programu kuwakilisha wao kupitia CLI au REST API.

Vipuli vya SSH

Sehemu hii hutoa seva ya SSH iliyojengwa kwa Jenkins. Ni kiolesura mbadala kwa Jenkins CLI, na amri zinaweza kuitwa kwa njia hii kwa kutumia mteja wa SSH yeyote. (Kutoka kwa nyaraka)

Idhini

Katika /configureSecurity ni inawezekana kusanidi njia ya idhini ya Jenkins. Kuna chaguo kadhaa:

  • Kila mtu anaweza kufanya chochote: Hata ufikiaji wa bila jina unaweza kusimamia seva

  • Hali ya zamani: Sawa na Jenkins <1.164. Ikiwa una jukumu la "admin", utapewa udhibiti kamili juu ya mfumo, na vinginevyo (ikiwa ni pamoja na watumiaji wasiojulikana) utapata ufikiaji wa kusoma tu.

  • 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 asiyejulikana, ambaye anapata ufikiaji wa kusoma tu.

  • Usalama wa Msingi wa Matriki: Unaweza kusanidi nani anaweza kufanya nini kwenye jedwali. Kila safu inawakilisha idhini. Kila safu inawakilisha mtumiaji au kikundi/jukumu. Hii ni pamoja na mtumiaji maalum 'asiyejulikana', ambaye anawakilisha watumiaji wasiothibitishwa, pamoja na 'thibitishwa', ambayo inawakilisha watumiaji wote waliothibitishwa.

  • Mbinu ya Idhini ya Matriki kulingana na Mradi: Hali hii ni nyongeza kwa "Usalama wa Matriki" ambayo inaruhusu matriki ya ACL ya ziada kutajwa kwa kila mradi kando.

  • Mbinu ya Kulingana na Jukumu: Inawezesha kutaja idhini kwa kutumia mkakati uliojengwa kwa jukumu. Dhibiti majukumu katika /role-strategy.

Ulimwengu wa Usalama

Katika /configureSecurity ni inawezekana kusanidi ulimwengu wa usalama. Kwa chaguo-msingi Jenkins inajumuisha msaada kwa Ulimwengu tofauti wa Usalama:

  • Kumwakilisha kwa chombo cha servlet: Kwa kupeleka uthibitishaji kwa chombo cha servlet kinachotumia kudhibiti Jenkins, kama vile Jetty.

  • Hifadhidata ya mtumiaji wa Jenkins yenyewe: Tumia hifadhidata ya mtumiaji iliyojengwa ndani ya Jenkins kwa uthibitishaji badala ya kupeleka kwa mfumo wa nje. Hii imeanzishwa kwa chaguo-msingi.

  • LDAP: Kupeleka uthibitishaji wote kwa seva ya LDAP iliyosanidiwa, ikiwa ni pamoja na watumiaji na vikundi.

  • Hifadhidata ya mtumiaji/kikundi cha Unix: Kupeleka uthibitishaji kwa hifadhidata ya mtumiaji wa kiwango cha Unix kwenye kudhibiti Jenkins. Hali hii pia itaruhusu kutumia tena vikundi vya Unix kwa idhini.

Vifaa vya programu vinaweza kutoa ulimwengu wa usalama wa ziada ambao unaweza kuwa na manufaa kwa kuingiza Jenkins katika mifumo ya utambulisho iliyopo, kama vile:

Nodes, Mawakala & Watendaji wa Jenkins

Maelezo kutoka kwa nyaraka:

Nodes ni mashine ambazo mawakala wa ujenzi hufanya kazi. Jenkins inachunguza kila node iliyowekwa kwa nafasi ya diski, nafasi ya temp ya bure, swap ya bure, wakati wa saa/sawazisha na wakati wa majibu. Node inachukuliwa nje ya mtandao ikiwa thamani yoyote ya thamani hizi inatoka nje ya kizingiti kilichowekwa.

Mawakala hudhibiti utekelezaji wa kazi kwa niaba ya kudhibiti Jenkins kwa kutumia watendaji. Mawakala wanaweza kutumia mfumo wa uendeshaji wowote unaounga mkono Java. Zana zinazohitajika kwa ujenzi na vipimo vinafungwa kwenye node ambapo mawakala wanafanya kazi; wanaweza kufungwa moja kwa moja au kwenye chombo (Docker au Kubernetes). Kila mawakala ni mchakato na PID yake mwenyewe kwenye mashine ya mwenyeji.

Watendaji ni nafasi ya utekelezaji wa kazi; kimsingi, ni mchakato katika mawakala. Idadi ya watendaji kwenye node inaamua idadi ya kazi za kufanana zinazoweza kutekelezwa kwenye node hiyo wakati mmoja. Kwa maneno mengine, hii inaamua idadi ya hatua za Pipeline za kufanana zinazoweza kutekelezwa kwenye node hiyo wakati mmoja.

Siri za Jenkins

Ufichaji wa Siri na Vyeti

Ufafanuzi kutoka kwa nyaraka: Jenkins hutumia AES kufichia na kulinda siri, vyeti, na funguo zao za kufichia. Funguo hizi za kufichia zimehifadhiwa katika $JENKINS_HOME/secrets/ pamoja na funguo kuu zinazotumiwa kulinda funguo hizo. Dhibiti huu wa ufikiaji wa faili unapaswa kusanidiwa ili tu mtumiaji wa mfumo wa uendeshaji ambaye kudhibiti Jenkins awe na ufikiaji wa kusoma na kuandika kwenye saraka hii (yaani, thamani ya chmod ya 0700 au kutumia sifa sahihi za faili). Funguo kuu (mara nyingine inaitwa "funguo la kufichia funguo" katika cryptojargon) imehifadhiwa bila kufichwa kwenye mfumo wa faili wa kudhibiti Jenkins katika $JENKINS_HOME/secrets/master.key ambayo haitoi ulinzi dhidi ya wachomaji wenye ufikiaji moja kwa moja kwa faili hiyo. Watumiaji wengi na watengenezaji watatumia funguo hizi za kufichia kwa njia isiyo ya moja kwa moja kupitia API ya Siri kwa kufichia data ya siri ya kawaida au kupitia API ya vyeti. Kwa wale wanaopenda kujua zaidi kuhusu crypto, Jenkins hutumia AES katika mode ya kufungwa kwa mnyororo wa block (CBC) na PKCS#5 padding na IVs za nasibu kufichia mifano ya CryptoConfidentialKey ambayo imehifadhiwa katika $JENKINS_HOME/secrets/ na jina la faili linalolingana na kitambulisho chake cha CryptoConfidentialKey. Vitambulisho vya kawaida vya funguo ni pamoja na:

  • hudson.util.Secret: hutumiwa kwa siri za kawaida;

  • com.cloudbees.plugins.credentials.SecretBytes.KEY: hutumiwa kwa baadhi ya aina za vyeti;

  • jenkins.model.Jenkins.crumbSalt: hutumiwa na muhimu wa ulinzi wa CSRF; na

Upatikanaji wa Vyeti

Vyeti vinaweza kuwa vimeelekezwa kwa watoa huduma wa ulimwengu (/credentials/) ambao wanaweza kufikiwa na mradi wowote ulioconfigurewa, au vinaweza kuwa vimeelekezwa kwa miradi maalum (/job/<jina-la-mradi>/configure) na hivyo basi vinapatikana tu kutoka kwenye mradi maalum.

Kulingana na nyaraka: Vyeti ambavyo viko kwenye eneo la tazama vinapatikana kwa mabomba bila kizuizi. Ili kuzuia kufichuliwa kwa bahati mbaya kwenye kumbukumbu ya ujenzi, vyeti vinatiliwa kinyago kutoka kwa matokeo ya kawaida, hivyo wito wa env (Linux) au set (Windows), au programu zinazochapisha mazingira yao au vigezo havitafunua vyeti hivyo kwenye kumbukumbu ya ujenzi kwa watumiaji ambao vinginevyo wasingekuwa na ufikiaji wa vyeti hivyo.

Ndiyo maana ili kuchukua vyeti kwa siri, mshambuliaji anahitaji, kwa mfano, kuyafanya kuwa base64.

Marejeo

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated