.. | ||
docker-breakout-privilege-escalation | ||
namespaces | ||
abusing-docker-socket-for-privilege-escalation.md | ||
apparmor.md | ||
authz-and-authn-docker-access-authorization-plugin.md | ||
cgroups.md | ||
docker-privileged.md | ||
README.md | ||
seccomp.md | ||
weaponizing-distroless.md |
Usalama wa Docker
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
![](/Mirrors/hacktricks/media/commit/0b122f03e28d97bdbb15e1197a736cca1da4d957/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Tumia Trickest kujenga na kutumia mifumo ya kazi kwa urahisi ikiwa na zana za jamii za juu zaidi ulimwenguni.
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Usalama wa Msingi wa Docker Engine
Docker engine hutumia Namespaces na Cgroups ya kernel ya Linux kuisolate kontena, kutoa safu ya msingi ya usalama. Kinga zaidi hutolewa kupitia Capabilities dropping, Seccomp, na SELinux/AppArmor, ikiboresha kuisolati kontena. Plugin ya uthibitishaji inaweza kuzuia vitendo vya mtumiaji zaidi.
Upatikanaji Salama wa Docker Engine
Docker engine unaweza kupatikana kimtandao kupitia soketi ya Unix au kijijini kwa kutumia HTTP. Kwa upatikanaji wa kijijini, ni muhimu kutumia HTTPS na TLS kuhakikisha usiri, uadilifu, na uthibitisho.
Docker engine, kwa chaguo-msingi, husikiliza kwenye soketi ya Unix kwa unix:///var/run/docker.sock
. Kwenye mifumo ya Ubuntu, chaguzi za kuanzisha Docker zinapatikana katika /etc/default/docker
. Ili kuwezesha upatikanaji wa kijijini kwa API na mteja wa Docker, fungua daemon ya Docker kwenye soketi ya HTTP kwa kuongeza mipangilio ifuatayo:
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
Hata hivyo, kufunua Docker daemon kupitia HTTP sio jambo linalopendekezwa kutokana na wasiwasi wa usalama. Ni vyema kusimamia uhusiano kwa kutumia HTTPS. Kuna njia mbili kuu za kusimamia uhusiano:
- Mteja anathibitisha utambulisho wa seva.
- Mteja na seva wanathibitisha utambulisho wao kwa kila mmoja.
Vyeti hutumiwa kuthibitisha utambulisho wa seva. Kwa mifano kamili ya njia zote mbili, tazama mwongozo huu.
Usalama wa Picha za Kontena
Picha za kontena zinaweza kuhifadhiwa katika hifadhi za kibinafsi au za umma. Docker inatoa chaguzi kadhaa za uhifadhi wa picha za kontena:
- Docker Hub: Huduma ya usajili wa umma kutoka Docker.
- Docker Registry: Mradi wa chanzo wazi unaoruhusu watumiaji kuhifadhi usajili wao wenyewe.
- Docker Trusted Registry: Usajili wa kibiashara wa Docker, ukiwa na uthibitishaji wa mtumiaji kulingana na jukumu na ushirikiano na huduma za saraka za LDAP.
Uchunguzi wa Picha
Kontena zinaweza kuwa na mapungufu ya usalama kutokana na picha ya msingi au programu iliyosanikishwa juu ya picha ya msingi. Docker inafanya kazi kwenye mradi unaoitwa Nautilus ambao hufanya uchunguzi wa usalama wa Kontena na kuorodhesha mapungufu. Nautilus hufanya kazi kwa kulinganisha kila safu ya picha ya Kontena na hifadhi ya mapungufu ili kutambua mapengo ya usalama.
docker scan
Amri ya docker scan
inaruhusu uchunguzi wa picha za Docker zilizopo kwa kutumia jina au ID ya picha. Kwa mfano, endesha amri ifuatayo kuchunguza picha ya hello-world:
docker scan hello-world
Testing hello-world...
Organization: docker-desktop-test
Package manager: linux
Project name: docker-image|hello-world
Docker image: hello-world
Licenses: enabled
✓ Tested 0 dependencies for known issues, no vulnerable paths found.
Note that we do not currently have vulnerability data for your image.
trivy -q -f json <container_name>:<tag>
snyk container test <image> --json-file-output=<output file> --severity-threshold=high
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
Kutia Saini Picha ya Docker
Kutia saini picha ya Docker hutoa uhakika na usahihi wa picha zinazotumiwa kwenye makontena. Hapa kuna maelezo mafupi:
- Uaminifu wa Yaliyomo ya Docker hutumia mradi wa Notary, uliojengwa kwenye The Update Framework (TUF), kusimamia kutia saini picha. Kwa maelezo zaidi, angalia Notary na TUF.
- Ili kuamsha uaminifu wa yaliyomo ya Docker, weka
export DOCKER_CONTENT_TRUST=1
. Kipengele hiki kimezimwa kwa chaguo-msingi kwenye Docker toleo 1.10 na baadaye. - Kwa kipengele hiki kimeamilishwa, picha zilizosainiwa pekee ndizo zinaweza kupakuliwa. Kusukuma picha ya awali kunahitaji kuweka nywila za msingi na ufunguo wa alama, na Docker pia inaunga mkono Yubikey kwa usalama ulioimarishwa. Maelezo zaidi yanaweza kupatikana hapa.
- Kujaribu kupakua picha isiyosainiwa na uaminifu wa yaliyomo umewezeshwa husababisha kosa la "Hakuna data ya uaminifu kwa toleo la karibuni".
- Kwa kusukuma picha baada ya ya kwanza, Docker inauliza nywila ya ufunguo wa hifadhi ili kutia saini picha.
Ili kuhifadhi ufunguo wako binafsi, tumia amri:
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
Wakati wa kubadili wenyeji wa Docker, ni muhimu kuhamisha funguo za msingi na za hazina ili kudumisha shughuli.
![](/Mirrors/hacktricks/media/commit/0b122f03e28d97bdbb15e1197a736cca1da4d957/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Tumia Trickest kujenga na kutumia kiotomatiki mifumo ya kazi inayotumia zana za jamii za juu kabisa duniani.
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Vipengele vya Usalama wa Kontena
Maelezo ya Vipengele vya Usalama wa Kontena
Vipengele vya Kufungwa kwa Mchakato Mkuu
Katika mazingira ya kontena, kufunga miradi na michakato yake ni muhimu kwa usalama na usimamizi wa rasilimali. Hapa kuna maelezo rahisi ya dhana muhimu:
Namespaces
- Lengo: Hakikisha kufungwa kwa rasilimali kama michakato, mtandao, na mfumo wa faili. Hasa katika Docker, namespaces huzuia michakato ya kontena kutoka kwa mwenyeji na kontena nyingine.
- Matumizi ya
unshare
: Amri yaunshare
(au syscall inayotumika) hutumiwa kuunda namespaces mpya, kutoa safu ya ziada ya kufungwa. Hata hivyo, ingawa Kubernetes haizuili hii kwa asili, Docker inafanya. - Kizuizi: Kuunda namespaces mpya haimruhusu mchakato kurejea kwa namespaces za msingi za mwenyeji. Ili kuingia kwenye namespaces za mwenyeji, kawaida mtu atahitaji ufikiaji wa saraka ya
/proc
ya mwenyeji, kutumiansenter
kwa kuingia.
Vikundi vya Kudhibiti (CGroups)
- Kazi: Hasa hutumiwa kwa kugawanya rasilimali kati ya michakato.
- Upande wa Usalama: CGroups wenyewe hawatoi usalama wa kufungwa, isipokuwa kwa kipengele cha
release_agent
, ambacho, ikiwa hakijasakinishwa vizuri, kinaweza kutumiwa vibaya kwa ufikiaji usiohalali.
Kupunguza Uwezo (Capability Drop)
- Umuhimu: Ni kipengele muhimu cha usalama kwa kufunga michakato.
- Utendaji: Inazuia vitendo ambavyo mchakato wa msingi unaweza kufanya kwa kudondosha uwezo fulani. Hata kama mchakato unakimbia na mamlaka ya msingi, kukosa uwezo muhimu kunazuia utekelezaji wa vitendo vya mamlaka, kwani syscall zitashindwa kutokana na idhini duni.
Hizi ni uwezo uliobaki baada ya mchakato kudondosha uwezo mwingine:
{% code overflow="wrap" %}
Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep
{% endcode %}
Seccomp
Imewezeshwa kwa chaguo-msingi kwenye Docker. Inasaidia kupunguza zaidi wito wa syscalls ambao mchakato unaweza kuita.
Profaili ya Seccomp ya chaguo-msingi ya Docker inaweza kupatikana kwenye https://github.com/moby/moby/blob/master/profiles/seccomp/default.json
AppArmor
Docker ina kiolesura ambacho unaweza kuamsha: https://github.com/moby/moby/tree/master/profiles/apparmor
Hii itaruhusu kupunguza uwezo, syscalls, ufikiaji wa faili na folda...
Majina ya Nafasi
Nafasi ni kipengele cha kernel ya Linux ambacho kinagawa rasilimali za kernel hivi kwamba seti moja ya mchakato inaona seti moja ya rasilimali wakati seti nyingine ya mchakato inaona seti tofauti ya rasilimali. Kipengele hufanya kazi kwa kuwa na nafasi ile ile kwa seti ya rasilimali na michakato, lakini hizo nafasi zinahusiana na rasilimali tofauti. Rasilimali inaweza kuwepo katika nafasi nyingi.
Docker hutumia Nafasi za Kernel ya Linux zifuatazo kufikia kizuizi cha Kontena:
- nafasi ya pid
- nafasi ya mlima
- nafasi ya mtandao
- nafasi ya ipc
- nafasi ya UTS
Kwa majarida zaidi kuhusu nafasi, angalia ukurasa ufuatao:
{% content-ref url="namespaces/" %} namespaces {% endcontent-ref %}
cgroups
Kipengele cha kernel ya Linux cgroups hutoa uwezo wa kizuia rasilimali kama cpu, kumbukumbu, io, upana wa mtandao miongoni mwa seti ya michakato. Docker inaruhusu kuunda Kontena kwa kutumia kipengele cha cgroup ambacho kinaruhusu kudhibiti rasilimali kwa Kontena maalum.
Hapa chini ni Kontena iliyoundwa na kikomo cha kumbukumbu ya nafasi ya mtumiaji hadi 500m, kumbukumbu ya nafasi ya kernel hadi 50m, mgawo wa cpu hadi 512, uzito wa blkioweight hadi 400. Mgawo wa CPU ni uwiano unaodhibiti matumizi ya CPU ya Kontena. Ina thamani ya chaguo-msingi ya 1024 na inaenea kati ya 0 na 1024. Ikiwa Kontena tatu zina mgawo sawa wa CPU wa 1024, kila Kontena inaweza kuchukua hadi 33% ya CPU katika kesi ya mgogoro wa rasilimali ya CPU. blkio-weight ni uwiano unaodhibiti IO ya Kontena. Ina thamani ya chaguo-msingi ya 500 na inaenea kati ya 10 na 1000.
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
Kupata cgroup ya kontena unaweza kufanya:
docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian container
ps -ef | grep 1234 #Get info about the sleep process
ls -l /proc/<PID>/ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it)
Kwa maelezo zaidi angalia:
{% content-ref url="cgroups.md" %} cgroups.md {% endcontent-ref %}
Uwezo
Uwezo huruhusu udhibiti bora wa uwezo ambao unaweza kuruhusiwa kwa mtumiaji wa mizizi. Docker hutumia kipengele cha uwezo cha kernel ya Linux ili izuie shughuli zinazoweza kufanywa ndani ya Kontena bila kujali aina ya mtumiaji.
Wakati kontena ya docker inapoendeshwa, mchakato hupunguza uwezo wenye hisia ambao mchakato unaweza kutumia kutoroka kutoka kwa kizuizi. Hii inajaribu kuhakikisha kuwa mchakato hautaweza kutekeleza vitendo vyenye hisia na kutoroka:
{% content-ref url="../linux-capabilities.md" %} linux-capabilities.md {% endcontent-ref %}
Seccomp katika Docker
Hii ni kipengele cha usalama kinachoruhusu Docker kizuia syscalls zinazoweza kutumika ndani ya kontena:
{% content-ref url="seccomp.md" %} seccomp.md {% endcontent-ref %}
AppArmor katika Docker
AppArmor ni nyongeza ya kernel ya kizuia kontena kwa seti ndogo ya rasilimali na mipangilio ya programu:
{% content-ref url="apparmor.md" %} apparmor.md {% endcontent-ref %}
SELinux katika Docker
- Mfumo wa Lebo: SELinux inaainisha lebo ya kipekee kwa kila mchakato na kipengee cha mfumo wa faili.
- Utekelezaji wa Sera: Inatekeleza sera za usalama ambazo hufafanua vitendo gani lebo ya mchakato inaweza kutekeleza kwenye lebo zingine ndani ya mfumo.
- Lebo za Mchakato wa Kontena: Wakati injini za kontena zinaanzisha michakato ya kontena, kawaida hupewa lebo iliyozuiwa ya SELinux, mara nyingi
container_t
. - Kuainisha Faili ndani ya Kontena: Faili ndani ya kontena kawaida huwa na lebo kama
container_file_t
. - Sera za Sera: Sera ya SELinux kimsingi inahakikisha kuwa michakato yenye lebo ya
container_t
inaweza kuingiliana tu (kusoma, kuandika, kutekeleza) na faili zenye lebo kamacontainer_file_t
.
Mfumo huu unahakikisha kuwa hata kama mchakato ndani ya kontena unashambuliwa, umefungwa kuingiliana tu na vitu vyenye lebo zinazofanana, ikipunguza uharibifu unaoweza kutokea kutokana na mashambulizi kama hayo.
{% content-ref url="../selinux.md" %} selinux.md {% endcontent-ref %}
AuthZ & AuthN
Katika Docker, programu ya idhini inacheza jukumu muhimu katika usalama kwa kuamua ikiwa kuruhusu au kuzuia maombi kwa daemon ya Docker. Uamuzi huu hufanywa kwa kuchunguza muktadha wa muhimu:
- Muktadha wa Uthibitishaji: Hii inajumuisha habari kamili kuhusu mtumiaji, kama ni nani na jinsi walivyothibitishwa.
- Muktadha wa Amri: Hii inajumuisha data zote muhimu kuhusiana na ombi linalofanywa.
Muktadha huu husaidia kuhakikisha kuwa maombi halali kutoka kwa watumiaji waliothibitishwa tu ndio yanashughulikiwa, ikiboresha usalama wa operesheni za Docker.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} authz-and-authn-docker-access-authorization-plugin.md {% endcontent-ref %}
DoS kutoka kwa kontena
Ikiwa hauruhusu ipasavyo rasilimali ambazo kontena inaweza kutumia, kontena iliyoshambuliwa inaweza kufanya DoS kwenye mwenyeji ambapo inaendeshwa.
- CPU DoS
# stress-ng
sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t 5m
# While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
- Kupunguza Bandwidth
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
Bendera za Kuvutia za Docker
Bendera ya --privileged
Kwenye ukurasa ufuatao unaweza kujifunza maana ya bendera ya --privileged
:
{% content-ref url="docker-privileged.md" %} docker-privileged.md {% endcontent-ref %}
--security-opt
no-new-privileges
Ikiwa unatekeleza kontena ambapo mshambuliaji anafanikiwa kupata ufikivu kama mtumiaji wa mamlaka ya chini. Ikiwa una binary ya suid iliyopangiliwa vibaya, mshambuliaji anaweza kuitumia na kuongeza mamlaka ndani ya kontena. Hii, inaweza kumruhusu kutoroka kutoka humo.
Kutekeleza kontena na chaguo la no-new-privileges
kuwezeshwa kutazuia aina hii ya kuongeza mamlaka.
docker run -it --security-opt=no-new-privileges:true nonewpriv
Nyingine
#You can manually add/drop capabilities with
--cap-add
--cap-drop
# You can manually disable seccomp in docker with
--security-opt seccomp=unconfined
# You can manually disable seccomp in docker with
--security-opt apparmor=unconfined
# You can manually disable selinux in docker with
--security-opt label:disable
Kwa chaguo zaidi za --security-opt
angalia: https://docs.docker.com/engine/reference/run/#security-configuration
Mambo Mengine ya Kuzingatia kuhusu Usalama
Usimamizi wa Siri: Mbinu Bora
Ni muhimu kuepuka kuweka siri moja kwa moja kwenye picha za Docker au kutumia mazingira ya mazingira, kwani njia hizi zinaweka wazi habari zako nyeti kwa yeyote mwenye ufikiaji wa kontena kupitia amri kama vile docker inspect
au exec
.
Vipimo vya Docker ni mbadala salama, inapendekezwa kwa kupata habari nyeti. Wanaweza kutumika kama mfumo wa faili wa muda katika kumbukumbu, kupunguza hatari zinazohusiana na docker inspect
na kuingia kwenye kumbukumbu. Hata hivyo, watumiaji wa mizizi na wale wenye ufikiaji wa exec
kwenye kontena wanaweza bado kupata siri.
Siri za Docker zinatoa njia salama zaidi ya kushughulikia habari nyeti. Kwa visa vinavyohitaji siri wakati wa hatua ya kujenga picha, BuildKit inatoa suluhisho lenye ufanisi na msaada kwa siri za wakati wa kujenga, kuboresha kasi ya ujenzi na kutoa huduma za ziada.
Ili kutumia BuildKit, inaweza kuamilishwa kwa njia tatu:
- Kupitia mazingira ya mazingira:
export DOCKER_BUILDKIT=1
- Kwa kuongeza awali kwenye amri:
DOCKER_BUILDKIT=1 docker build .
- Kwa kuwezesha kwa chaguo-msingi katika usanidi wa Docker:
{ "vipengele": { "buildkit": kweli } }
, ikifuatiwa na kuanzisha upya kwa Docker.
BuildKit inaruhusu matumizi ya siri za wakati wa kujenga kwa chaguo la --secret
, ikihakikisha siri hizi hazijumuishwi katika kache ya ujenzi wa picha au picha ya mwisho, kwa kutumia amri kama vile:
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
Kwa siri zinazohitajika katika kontena linaloendeshwa, Docker Compose na Kubernetes hutoa suluhisho imara. Docker Compose hutumia ufunguo wa secrets
katika ufafanuzi wa huduma kwa kuelezea faili za siri, kama inavyoonyeshwa katika mfano wa docker-compose.yml
:
version: "3.7"
services:
my_service:
image: centos:7
entrypoint: "cat /run/secrets/my_secret"
secrets:
- my_secret
secrets:
my_secret:
file: ./my_secret_file.txt
Hii usanidi inaruhusu matumizi ya siri wakati wa kuanzisha huduma na Docker Compose.
Katika mazingira ya Kubernetes, siri zinasaidiwa kiasili na zinaweza kusimamiwa zaidi na zana kama Helm-Secrets. Mipangilio ya Ufikiaji wa Majukumu ya Kubernetes (RBAC) inaboresha usalama wa usimamizi wa siri, kama ilivyo kwa Docker Enterprise.
gVisor
gVisor ni kiini cha programu, kilichoandikwa kwa Go, ambacho kinafanya sehemu kubwa ya uso wa mfumo wa Linux. Kina Open Container Initiative (OCI) runtime kinachoitwa runsc
ambacho hutoa mpaka wa kujitenga kati ya programu na kiini cha mwenyeji. Runtime ya runsc
inashirikiana na Docker na Kubernetes, ikifanya iwe rahisi kuendesha kontena zilizofungwa kwenye mchanga.
{% embed url="https://github.com/google/gvisor" %}
Kata Containers
Kata Containers ni jumuiya ya chanzo wazi inayofanya kazi ya kujenga runtime salama wa kontena na mashine za kawaida zenye uzito ambazo hutoa kujitenga kwa mzigo wa kazi kwa kutumia teknolojia ya utoaji wa virtualization ya vifaa kama safu ya pili ya ulinzi.
{% embed url="https://katacontainers.io/" %}
Vidokezo vya Muhtasari
- Usitumie bendera ya
--privileged
au uweke soketi ya Docker ndani ya kontena. Soketi ya docker inaruhusu kuzalisha kontena, hivyo ni njia rahisi ya kuchukua udhibiti kamili wa mwenyeji, kwa mfano, kwa kuendesha kontena nyingine na bendera ya--privileged
. - Usiendeshe kama mtumiaji wa mizizi ndani ya kontena. Tumia mtumiaji tofauti na spazi za mtumiaji. Mizizi ndani ya kontena ni sawa na kwenye mwenyeji isipokuwa imebadilishwa na spazi za mtumiaji. Inazuiliwa kidogo tu na, kimsingi, spazi za Linux, uwezo, na vikundi.
- Acha uwezo wote (
--cap-drop=all
) na wezesha tu wale ambao ni muhimu (--cap-add=...
). Mipangilio mingi ya kazi haitaji uwezo wowote na kuongeza huongeza wigo wa shambulio la uwezekano. - Tumia chaguo la usalama la "no-new-privileges" kuzuia michakato kupata uwezo zaidi, kwa mfano kupitia programu za suid.
- Punguza rasilimali zinazopatikana kwa kontena. Vizuizi vya rasilimali vinaweza kulinda mashine kutokana na mashambulizi ya kukataa huduma.
- Badilisha seccomp, AppArmor (au SELinux) maelezo ya wasifu ili kuzuia hatua na syscalls zinazopatikana kwa kontena hadi kiwango cha chini kinachohitajika.
- Tumia picha rasmi za docker na hitaji saini au jenga yako mwenyewe kulingana na hizo. Usirithi au kutumia picha zilizopitishwa nyuma. Pia hifadhi funguo za mizizi, nywila mahali salama. Docker ina mipango ya kusimamia funguo na UCP.
- Rekebisha picha zako mara kwa mara ili kuomba visasa vya usalama kwa mwenyeji na picha.
- Simamia siri zako kwa busara ili iwe ngumu kwa mshambuliaji kuzipata.
- Ikiwa unafunua kiini cha docker tumia HTTPS na uthibitishaji wa mteja na mwenyeji.
- Katika Dockerfile yako, pendekeza COPY badala ya ADD. ADD inachambua faili zilizozipwa kiotomatiki na inaweza kunakili faili kutoka kwenye URL. COPY haina uwezo huu. Kadri inavyowezekana, epuka kutumia ADD ili usiwe mwepesi kwa mashambulizi kupitia URL za mbali na faili za Zip.
- Kuwa na kontena tofauti kwa kila huduma ndogo
- Usiweke ssh ndani ya kontena, "docker exec" inaweza kutumika kuingia kwa ssh kwenye Kontena.
- Kuwa na picha ndogo za kontena
Kuvunja / Kuongeza Mamlaka ya Docker
Ikiwa uko ndani ya kontena la docker au una ufikiaji kwa mtumiaji katika kikundi cha docker, unaweza kujaribu kutoroka na kuongeza mamlaka:
{% content-ref url="docker-breakout-privilege-escalation/" %} docker-breakout-privilege-escalation {% endcontent-ref %}
Kupuuza Kificho cha Uthibitishaji wa Docker
Ikiwa una ufikiaji wa soketi ya docker au una ufikiaji kwa mtumiaji katika kikundi cha docker lakini hatua zako zinazuiliwa na kificho cha uthibitishaji wa docker, angalia ikiwa unaweza kupuuza:
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} authz-and-authn-docker-access-authorization-plugin.md {% endcontent-ref %}
Kufanya Salama ya Docker
- Zana docker-bench-security ni script inayochunguza mamia ya mazoea bora ya kawaida kuhusu kupeleka kontena za Docker kwa uzalishaji. Vipimo vyote ni vya kiotomatiki, na vimejengwa kwenye CIS Docker Benchmark v1.3.1.
Unahitaji kuendesha zana kutoka kwenye mwenyeji unaendesha docker au kutoka kwenye kontena lenye mamlaka ya kutosha. Pata jinsi ya kuendesha katika README: https://github.com/docker/docker-bench-security.
Marejeo
- https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/
- https://twitter.com/_fel1x/status/1151487051986087936
- https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/
- https://en.wikipedia.org/wiki/Linux_namespaces
- https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57
- https://www.redhat.com/sysadmin/privileged-flag-container-engines
- https://docs.docker.com/engine/extend/plugins_authorization
- https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57
- https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/
![](/Mirrors/hacktricks/media/commit/0b122f03e28d97bdbb15e1197a736cca1da4d957/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Tumia Trickest kujenga na kutumia taratibu za kiotomatiki zinazotumia zana za jumuiya za juu zaidi duniani.
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.