OpenShift - Jenkins Build Pod Override
Originalni autor ove stranice je Fares
Kubernetes dodatak za Jenkins
Ovaj dodatak je uglavnom odgovoran za osnovne funkcije Jenkins-a unutar openshift/kubernetes klastera. Zvanična dokumentacija ovde Nudi nekoliko funkcionalnosti kao što je mogućnost za programere da zamene neke podrazumevane konfiguracije jenkins izgradnje poda.
Osnovna funkcionalnost
Ovaj dodatak omogućava fleksibilnost programerima prilikom izgradnje njihovog koda u odgovarajućem okruženju.
Nezakonite radnje koje iskorišćavaju zamenu yaml fajlova kontejnera
Međutim, može se zloupotrebiti kako bi se koristila bilo koja dostupna slika poput Kali Linux-a i izvršili proizvoljni komandi koristeći preinstalirane alate iz te slike. U primeru ispod možemo izfiltrirati token servisnog naloga pokrenutog kontejnera.
Neki drugačiji sintaks za postizanje istog cilja.
Uzorak za poništavanje imenskog prostora poda
Još jedan primer koji pokušava montirati serviceaccount (koji može imati više dozvola od podrazumevanog, pokreće vašu izgradnju) na osnovu njegovog imena. Možda ćete morati da nagađate ili nabrajate postojeće serviceaccount-ove.
Ista tehnika se primenjuje i prilikom pokušaja montiranja Tajne. Krajnji cilj ovde bio bi da se utvrdi kako konfigurisati izgradnju vašeg poda da biste efikasno preusmerili ili stekli privilegije.
Idemo dalje
Kada se naviknete da se igrate s tim, koristite svoje znanje o Jenkinsu i Kubernetesu/Openshiftu da biste pronašli neispravne konfiguracije/zloupotrebe.
Postavite sebi sledeća pitanja:
Koja servisna korisnička računa se koristi za implementaciju izgradnje podova?
Koje uloge i dozvole ima? Može li čitati tajne trenutnog imenskog prostora u kojem se trenutno nalazim?
Mogu li dalje nabrajati druge izgradne podove?
Iz kompromitovanog sa, mogu li izvršiti naredbe na glavnom čvoru/podu?
Mogu li dalje nabrajati klaster da bih preusmerio negde drugde?
Koja je primenjena SCC?
Možete saznati koje oc/kubectl naredbe izdati ovde i ovde.
Mogući scenariji privesc/pivotinga
Pretpostavimo da ste tokom vaše procene otkrili da svi jenkins izgradnje se izvršavaju unutar imenskog prostora nazvanog worker-ns. Otkrili ste da se podaci servisnog naloga podrazumevano nazvanog default-sa montiraju na izgradne podove, međutim on nema mnogo dozvola osim pristupa čitanju nekih resursa, ali ste uspeli da identifikujete postojeći servisni nalog nazvan master-sa. Pretpostavimo takođe da imate oc komandu instaliranu unutar pokrenutog izgradnog kontejnera.
Pomoću donjeg skripta za izgradnju možete preuzeti kontrolu nad servisnim nalogom master-sa i dalje nabrajati.
Zavisno od vašeg pristupa, ili trebate nastaviti napad iz skripte za izgradnju ili možete direktno se prijaviti kao ovaj sa na pokrenutom klasteru:
Ako ovaj sa ima dovoljno dozvola (kao što su pod/exec), takođe možete preuzeti kontrolu nad celim jenkins instancom izvršavanjem komandi unutar poda glavnog čvora, ako se pokreće unutar istog imenskog prostora. Ovaj pod se može lako identifikovati prema svom imenu i činjenici da mora montirati PVC (persistant volume claim) koji se koristi za čuvanje podataka jenkinsa.
U slučaju da master čvor pod nije pokrenut unutar istog imenskog prostora kao radnici, možete pokušati slične napade ciljajući imenski prostor mastera. Pretpostavimo da se zove jenkins-master. Imajte na umu da serviceAccount master-sa mora postojati u imenskom prostoru jenkins-master (i možda ne postoji u imenskom prostoru worker-ns).
Last updated