<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
[**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**.
Docker je **vodeća platforma** u industriji **kontejnerizacije**, predvodeći **kontinuiranu inovaciju**. Omogućava jednostavno kreiranje i distribuciju aplikacija, obuhvatajući **tradicionalne do futurističke**, i obezbeđuje njihovo **sigurno implementiranje** u različitim okruženjima.
* [**containerd**](http://containerd.io): Ovo je **osnovno izvršno okruženje** za kontejnere, zaduženo za sveobuhvatno **upravljanje životnim ciklusom kontejnera**. To uključuje rukovanje **transferom i skladištenjem slika**, kao i nadgledanje **izvršavanja, praćenja i umrežavanja** kontejnera. **Detaljnije uvide** o containerd-u **dalje istražujemo**.
* **Container-shim** igra ključnu ulogu kao **posrednik** u rukovanju **glavoboljnim kontejnerima**, besprekorno preuzimajući od **runc**-a nakon što su kontejneri inicijalizovani.
* [**runc**](http://runc.io): Poštovan zbog svojih mogućnosti **laganog i univerzalnog izvršnog okruženja kontejnera**, runc je usklađen sa **OCI standardom**. Koristi ga containerd za **pokretanje i upravljanje kontejnerima** prema **OCI smernicama**, evoluirajući iz originalnog **libcontainer**-a.
* [**grpc**](http://www.grpc.io) je ključan za **olakšavanje komunikacije** između containerd-a i **docker-engine**, osiguravajući **efikasnu interakciju**.
* [**OCI**](https://www.opencontainers.org) je ključan za održavanje **OCI specifikacija** za izvršno okruženje i slike, pri čemu su najnovije verzije Docker-a **usaglašene sa OCI standardima za sliku i izvršno okruženje**.
**Containerd** je posebno razvijen da zadovolji potrebe platformi za kontejnere poput **Docker-a i Kubernetes-a**, među ostalima. Cilj mu je **simplifikacija izvršavanja kontejnera** na različitim operativnim sistemima, uključujući Linux, Windows, Solaris i druge, apstrahujući funkcionalnosti specifične za operativni sistem i sistemske pozive. Cilj Containerd-a je da uključi samo osnovne funkcije potrebne njegovim korisnicima, teži da izostavi nepotrebne komponente. Međutim, postizanje ovog cilja u potpunosti se smatra izazovnim.
Ključna dizajnerska odluka je da **Containerd ne upravlja mrežom**. Mreženje se smatra ključnim elementom u distribuiranim sistemima, sa kompleksnostima poput definisanja mreže softverom (SDN) i otkrivanja servisa koje se značajno razlikuju od jedne platforme do druge. Stoga, Containerd ostavlja upravljanje mrežom da ga upravljaju platforme koje podržava.
Iako **Docker koristi Containerd** za pokretanje kontejnera, važno je napomenuti da Containerd podržava samo podskup funkcionalnosti Docker-a. Konkretno, Containerd nema mogućnosti upravljanja mrežom prisutne u Docker-u i ne podržava direktno kreiranje Docker rojeva. Ova razlika ističe fokusiranu ulogu Containerd-a kao okruženja za izvršavanje kontejnera, prepuštajući specijalizovanije funkcionalnosti platformama sa kojima se integriše.
**Podman** je open-source kontejnerski motor koji se pridržava [Open Container Initiative (OCI) standarda](https://github.com/opencontainers), razvijen i održavan od strane Red Hata. Ističe se od Docker-a nekoliko različitih karakteristika, posebno svojom **arhitekturom bez demona** i podrškom za **rootless kontejnere**, omogućavajući korisnicima da pokreću kontejnere bez privilegija root korisnika.
Podman je dizajniran da bude kompatibilan sa Docker-ovim API-jem, omogućavajući korišćenje Docker CLI komandi. Ova kompatibilnost se proširuje na njegov ekosistem, koji uključuje alate poput **Buildah** za izgradnju kontejnerskih slika i **Skopeo** za operacije sa slikama poput push, pull i inspect. Više detalja o ovim alatima možete pronaći na njihovoj [GitHub stranici](https://github.com/containers/buildah/tree/master/docs/containertools).
* **Arhitektura**: Za razliku od Docker-ovog modela klijent-server sa pozadinskim demonom, Podman funkcioniše bez demona. Ovaj dizajn znači da kontejneri pokreću sa privilegijama korisnika koji ih pokreće, poboljšavajući sigurnost eliminacijom potrebe za pristupom root korisnika.
* **Systemd Integracija**: Podman se integriše sa **systemd**-om za upravljanje kontejnerima, omogućavajući upravljanje kontejnerima putem systemd jedinica. Ovo se razlikuje od Docker-a koji koristi systemd uglavnom za upravljanje Docker demon procesom.
* **Rootless Kontejneri**: Ključna karakteristika Podman-a je njegova sposobnost pokretanja kontejnera pod privilegijama korisnika koji ih pokreće. Ovaj pristup minimizira rizike povezane sa probijanjem kontejnera osiguravajući da napadači dobiju samo privilegije kompromitovanog korisnika, a ne pristup root korisniku.
Pristup Podman-a nudi sigurnu i fleksibilnu alternativu Docker-u, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima.
Udaljeni API se podrazumevano pokreće na portu 2375 kada je omogućen. Usluga podrazumevano ne zahteva autentifikaciju, što omogućava napadaču da pokrene privilegovan Docker kontejner. Korišćenjem udaljenog API-ja moguće je povezati hostove / (korenski direktorijum) sa kontejnerom i čitati/pisati fajlove u okruženju hosta.
Ako možete **kontaktirati udaljeni docker API pomoću `docker` komande** možete **izvršiti** bilo koju od **docker** [**prethodno komentarisanih komandi**](2375-pentesting-docker.md#basic-commands) kako biste komunicirali sa servisom.
Ponekad ćete videti **2376** otvoren za **TLS** krajnju tačku. Nisam uspeo da se povežem sa njom pomoću docker klijenta, ali je moguće to uraditi sa curl-om.
Ako želite više informacija o ovome, više informacija je dostupno tamo odakle sam kopirao komande: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
Ako se nalazite unutar hosta koji koristi Docker, možete [**pročitati ove informacije kako biste pokušali da povećate privilegije**](../linux-hardening/privilege-escalation/#writable-docker-socket).
* Možete koristiti alat [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) da pregledate vašu trenutnu docker instalaciju.
* Možete koristiti alat [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) da vidite privilegije koje će kontejner imati kada se pokrene sa različitim sigurnosnim opcijama. Ovo je korisno kako biste znali posledice korišćenja određenih sigurnosnih opcija za pokretanje kontejnera:
* Možete koristiti docker sliku [https://github.com/quay/clair](https://github.com/quay/clair) da skenira vaše druge docker slike i pronađe ranjivosti.
* Možete koristiti alat [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija. Svaka netačna konfiguracija će dobiti ID, možete pronaći ovde [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) kako da ispravite svaku od njih.
* Možete koristiti alat [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
* Možete koristiti alat [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
* Možete koristiti alat [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
* Možete koristiti alat [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) da otkrijete **sumnjivo ponašanje u pokrenutim kontejnerima**.
* Obratite pažnju u sledećem odeljku kako **Falco kompajlira jezgro modula i ubacuje ga**. Nakon toga, učitava pravila i **počinje da loguje sumnjive aktivnosti**. U ovom slučaju je otkriveno da su pokrenuta 2 privilegovana kontejnera, od kojih je jedan imao osetljiv mount, i nakon nekoliko sekundi je otkriveno kako je shell otvoren unutar jednog od kontejnera.
mkdir: cannot create directory '/lib/modules/5.0.0-20-generic/kernel/extra': Read-only file system
cp: cannot create regular file '/lib/modules/5.0.0-20-generic/kernel/extra/falco-probe.ko': No such file or directory
depmod...
DKMS: install completed.
* Trying to load a dkms falco-probe, if present
falco-probe found and loaded in dkms
2021-01-04T12:03:20+0000: Falco initialized with configuration file /etc/falco/falco.yaml
2021-01-04T12:03:20+0000: Loading rules from file /etc/falco/falco_rules.yaml:
2021-01-04T12:03:22+0000: Loading rules from file /etc/falco/falco_rules.local.yaml:
2021-01-04T12:03:22+0000: Loading rules from file /etc/falco/k8s_audit_rules.yaml:
2021-01-04T12:03:24+0000: Starting internal webserver, listening on port 8765
2021-01-04T12:03:24.646959000+0000: Notice Privileged container started (user=<NA> command=container:db5dfd1b6a32 laughing_kowalevski (id=db5dfd1b6a32) image=ubuntu:18.04)
2021-01-04T12:03:24.664354000+0000: Notice Container with sensitive mount started (user=<NA> command=container:4822e8378c00 xenodochial_kepler (id=4822e8378c00) image=ubuntu:modified mounts=/:/host::true:rslave)
2021-01-04T12:03:24.664354000+0000: Notice Privileged container started (user=root command=container:4443a8daceb8 focused_brahmagupta (id=4443a8daceb8) image=falco:latest)
2021-01-04T12:04:56.270553320+0000: Notice A shell was spawned in a container with an attached terminal (user=root xenodochial_kepler (id=4822e8378c00) shell=bash parent=runc cmdline=bash terminal=34816 container_id=4822e8378c00 image=ubuntu)
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web**-om koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera koji krade podatke**.
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**