Basic Jenkins Information

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Pristup

Korisničko ime + Lozinka

Najčešći način prijave u Jenkins je sa korisničkim imenom ili lozinkom.

Kolačić

Ako se ukrade ovlašćeni kolačić, može se koristiti za pristup sesiji korisnika. Kolačić se obično naziva JSESSIONID.*. (Korisnik može prekinuti sve svoje sesije, ali prvo mora da otkrije da je kolačić ukraden).

SSO/Dodaci

Jenkins se može konfigurisati korišćenjem dodataka da bude pristupačan putem SSO-a trećih strana.

Tokeni

Korisnici mogu generisati tokene kako bi omogućili pristup aplikacijama da ih oponašaju putem CLI-ja ili REST API-ja.

SSH Ključevi

Ovaj komponent pruža ugrađeni SSH server za Jenkins. To je alternativni interfejs za Jenkins CLI, i komande se mogu pozvati na ovaj način korišćenjem bilo kog SSH klijenta. (Iz dokumenata)

Autorizacija

U /configureSecurity je moguće konfigurisati metodu autorizacije Jenkins-a. Postoji nekoliko opcija:

  • Svako može uraditi bilo šta: Čak i anonimni pristup može administrirati server

  • Legacy režim: Isti kao Jenkins <1.164. Ako imate ulogu "admin", bićete dodeljeni puna kontrola nad sistemom, a inače (uključujući anonimne korisnike) imaćete samo pristup za čitanje.

  • Prijavljeni korisnici mogu uraditi bilo šta: U ovom režimu, svaki prijavljeni korisnik dobija punu kontrolu nad Jenkins-om. Jedini korisnik koji neće imati punu kontrolu je anonimni korisnik, koji dobija samo pristup za čitanje.

  • Matrix-based security: Možete konfigurisati ko može uraditi šta u tabeli. Svaka kolona predstavlja dozvolu. Svaki red predstavlja korisnika ili grupu/ulogu. Ovo uključuje posebnog korisnika 'anonimni', koji predstavlja neautentifikovane korisnike, kao i 'autentifikovani', koji predstavlja sve autentifikovane korisnike.

  • Project-based Matrix Authorization Strategy: Ovaj režim je proširenje za "Matrix-based security" koje omogućava dodatnu ACL matricu da se definiše za svaki projekat posebno.

  • Role-Based Strategy: Omogućava definisanje autorizacija korišćenjem role-based strategije. Upravljajte ulogama u /role-strategy.

Bezbednosno područje

U /configureSecurity je moguće konfigurisati bezbednosno područje. Po podrazumevanim postavkama, Jenkins uključuje podršku za nekoliko različitih bezbednosnih područja:

  • Delegiraj servlet kontejneru: Za delegiranje autentifikacije servlet kontejneru koji pokreće Jenkins kontroler, kao što je Jetty.

  • Jenkins-ova sopstvena baza korisnika: Koristi Jenkins-ovu sopstvenu ugrađenu bazu podataka korisnika za autentifikaciju umesto delegiranja spoljnom sistemu. Ovo je podrazumevano omogućeno.

  • LDAP: Delegira svu autentifikaciju konfigurisanom LDAP serveru, uključujući korisnike i grupe.

  • Unix baza korisnika/grupa: Delegira autentifikaciju osnovnoj Unix bazi podataka korisnika na Jenkins kontroleru. Ovaj režim takođe omogućava ponovnu upotrebu Unix grupa za autorizaciju.

Dodaci mogu pružiti dodatna bezbednosna područja koja mogu biti korisna za uključivanje Jenkins-a u postojeće sisteme identiteta, kao što su:

Jenkins Čvorovi, Agenti i Izvršioci

Definicije iz dokumenata:

Čvorovi su mašine na kojima se pokreću agenti za izgradnju. Jenkins prati svaki povezan čvor za prostor na disku, slobodan privremeni prostor, slobodnu razmenu, vreme sata/sinhronizaciju i vreme odziva. Čvor se skida sa mreže ako bilo koja od ovih vrednosti pređe konfigurisani prag.

Agenti upravljaju izvršenjem zadatka u ime Jenkins kontrolera koristeći izvršioce. Agent može koristiti bilo koji operativni sistem koji podržava Java. Alati potrebni za izgradnju i testove instalirani su na čvoru na kojem agent radi; mogu biti instalirani direktno ili u kontejneru (Docker ili Kubernetes). Svaki agent je efektivno proces sa svojim PID-om na glavnoj mašini.

Izvršilac je slot za izvršenje zadataka; efektivno, to je nit u agentu. Broj izvršilaca na čvoru definiše broj istovremenih zadataka koji mogu biti izvršeni na tom čvoru u jednom trenutku. Drugim rečima, ovo određuje broj istovremenih faza Pipeline-a koje mogu biti izvršene na tom čvoru u jednom trenutku.

Jenkins Tajne

Enkripcija Tajni i Kredencijala

Definicija iz dokumenata: Jenkins koristi AES za enkripciju i zaštitu tajni, kredencijala i njihovih odgovarajućih ključeva za enkripciju. Ovi ključevi za enkripciju se čuvaju u $JENKINS_HOME/secrets/ zajedno sa glavnim ključem koji se koristi za zaštitu tih ključeva. Ovaj direktorijum treba konfigurisati tako da samo operativni sistem korisnik pod kojim Jenkins kontroler radi ima pristup za čitanje i pisanje ovom direktorijumu (tj. chmod vrednost 0700 ili korišćenje odgovarajućih atributa datoteke). Glavni ključ (ponekad nazvan "ključ za enkripciju ključeva" u kriptojargonu) je čuvan _nešifrovan_ na Jenkins kontroleru u sistemu datoteka pod nazivom $JENKINS_HOME/secrets/master.key što ne štiti od napadača sa direktnim pristupom toj datoteci. Većina korisnika i programera će koristiti ove ključeve za enkripciju indirektno putem Secret API-ja za enkripciju generičkih tajnih podataka ili kroz API kredencijala. Za kriptozainteresovane, Jenkins koristi AES u režimu šifrovanja blokova sa lancem (CBC) sa PKCS#5 punjenjem i slučajnim IV-ima za enkripciju instanci CryptoConfidentialKey koji se čuvaju u $JENKINS_HOME/secrets/ sa nazivom datoteke koji odgovara njihovom CryptoConfidentialKey id-u. Uobičajeni ID-ovi ključeva uključuju:

  • hudson.util.Secret: korišćen za generičke tajne;

  • com.cloudbees.plugins.credentials.SecretBytes.KEY: korišćen za neke tipove kredencijala;

  • jenkins.model.Jenkins.crumbSalt: korišćen od strane mehanizma zaštite od CSRF-a; i

Pristup podacima za pristupnice

Pristupnice mogu biti ograničene na globalne provajdere (/credentials/) koji mogu biti pristupačni svakom konfigurisanom projektu, ili mogu biti ograničene na specifične projekte (/job/<ime-projekta>/configure) i stoga su pristupačne samo iz specifičnog projekta.

Prema dokumentaciji: Pristupnice koje su u opsegu su dostupne u pipelajnu bez ograničenja. Da bi se spriječilo slučajno otkrivanje u zapisniku izgradnje, pristupnice su maskirane iz redovnog izlaza, tako da njihovo otkrivanje u zapisniku izgradnje ne bi bilo moguće putem poziva env (Linux) ili set (Windows), ili programa koji ispisuju svoje okruženje ili parametre korisnicima koji inače ne bi imali pristup pristupnicama.

Zato napadaču treba, na primer, da ih enkodira u base64 formatu kako bi iznio pristupnice.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated