Je, unafanya kazi katika kampuni ya usalama wa mtandao? Je, ungependa kuona kampuni yako ikionekana katika HackTricks? Au ungependa kupata toleo jipya zaidi la PEASS au kupakua HackTricks kwa PDF? Angalia MPANGO WA KUJIUNGA!
Unapotumia chombo kama chombo cha kudukua, hizi ni kinga ambazo unazima:
Kufunga /dev
Katika chombo kilichopewa ruhusa, vifaa vyote vinaweza kufikiwa katika /dev/. Kwa hivyo unaweza kutoroka kwa kufunga diski ya mwenyeji.
# docker run --rm -it alpine shls/devconsolefdmqueueptmxrandomstderrstdouturandomcorefullnullptsshmstdinttyzero
# docker run --rm --privileged -it alpine shls/devcachefilesmapperportshmtty24tty44tty7consolemempsauxstderrtty25tty45tty8coremqueueptmxstdintty26tty46tty9cpunbd0ptsstdouttty27tty47ttyS0[...]
Soma mfumo wa faili wa kernel kwa kusoma tu
Mifumo ya faili ya kernel hutoa njia kwa mchakato kubadilisha tabia ya kernel. Hata hivyo, linapokuja suala la mchakato wa kontena, tunataka kuzuia mabadiliko yoyote kwenye kernel. Kwa hiyo, tunafunga mifumo ya faili ya kernel kama soma tu ndani ya kontena, kuhakikisha kuwa mchakato wa kontena hauwezi kubadilisha kernel.
# docker run --rm --privileged -it alpine shmount|grep'(ro'
Kuficha mfumo wa faili wa kernel
Mfumo wa faili wa /proc unaweza kuandikwa kwa hiari lakini kwa usalama, sehemu fulani zimefichwa kutoka kwa ufikiaji wa kuandika na kusoma kwa kuzifunika na tmpfs, kuhakikisha mchakato wa kontena hauwezi kufikia maeneo nyeti.
tmpfs ni mfumo wa faili ambao huhifadhi faili zote kwenye kumbukumbu ya kawaida. tmpfs haizalishi faili yoyote kwenye diski ngumu. Kwa hivyo, ikiwa unafuta mfumo wa faili wa tmpfs, faili zote zilizopo ndani yake zinapotea milele.
# docker run --rm -it alpine shmount|grep/proc.*tmpfstmpfson/proc/acpitypetmpfs (ro,relatime)tmpfson/proc/kcoretypetmpfs (rw,nosuid,size=65536k,mode=755)tmpfson/proc/keystypetmpfs (rw,nosuid,size=65536k,mode=755)
# docker run --rm --privileged -it alpine shmount|grep/proc.*tmpfs
Uwezo wa Linux
Injini za kontena huzindua kontena na idadi ndogo ya uwezo ili kudhibiti kinachoendelea ndani ya kontena kwa chaguo-msingi. Wale wenye mamlaka wana uwezo wote unaopatikana. Ili kujifunza kuhusu uwezo, soma:
# docker run --rm -it alpine shapkadd-Ulibcap; capsh--print[...]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=eip
Bounding set =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
[...]
# docker run --rm --privileged -it alpine shapkadd-Ulibcap; capsh--print[...]Current:=eipcap_perfmon,cap_bpf,cap_checkpoint_restore-eipBounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read
[...]
Unaweza kubadilisha uwezo uliopo kwa chombo bila kuendesha kwa hali ya --privileged kwa kutumia bendera za --cap-add na --cap-drop.
Seccomp
Seccomp ni muhimu kwa kikomo cha syscalls ambazo chombo kinaweza kuita. Profaili ya seccomp ya chaguo-msingi imeamilishwa kwa chombo cha docker, lakini katika hali ya kuheshimu, imelemazwa. Jifunze zaidi kuhusu Seccomp hapa:
# docker run --rm -it alpine shgrepSeccomp/proc/1/statusSeccomp:2Seccomp_filters:1
# docker run --rm --privileged -it alpine shgrepSeccomp/proc/1/statusSeccomp:0Seccomp_filters:0
# You can manually disable seccomp in docker with--security-optseccomp=unconfined
Pia, tafadhali kumbuka kuwa wakati Docker (au CRIs nyingine) zinapotumiwa katika kikundi cha Kubernetes, kichujio cha seccomp kimelemazwa kwa chaguo-msingi.
AppArmor
AppArmor ni uboreshaji wa kernel ambao unazuia makontena kwa seti ndogo ya rasilimali na mipangilio ya programu-kwa-programu. Wakati unapoendesha na bendera ya --privileged, kinga hii inalemazwa.
# You can manually disable seccomp in docker with--security-optapparmor=unconfined
SELinux
Kukimbia chombo na bendera ya --privileged inazima lebo za SELinux, ikisababisha kurithi lebo ya injini ya chombo, kawaida unconfined, ikitoa ufikiaji kamili kama injini ya chombo. Katika hali ya mizizi, inatumia container_runtime_t, wakati katika hali ya mizizi, spc_t inatumika.
# You can manually disable selinux in docker with--security-optlabel:disable
Yasiyoathiri
Majina ya Nafasi
Nafasi hazijaathiriwa na bendera ya --privileged. Ingawa hazina vikwazo vya usalama vilivyowezeshwa, hazioni michakato yote kwenye mfumo au mtandao wa mwenyeji, kwa mfano. Watumiaji wanaweza kulemaza nafasi binafsi kwa kutumia bendera za injini ya chombo cha --pid=host, --net=host, --ipc=host, --uts=host.
# docker run --rm --privileged -it alpine shps-efPIDUSERTIMECOMMAND1root0:00sh18root0:00ps-ef
Kwa chaguo-msingi, injini za kontena hazitumii nafasi za mtumiaji, isipokuwa kwa kontena zisizo na mizizi, ambayo inahitaji nafasi hizo kwa ajili ya kufunga mfumo wa faili na kutumia kitambulisho cha mtumiaji zaidi ya kimoja. Nafasi za mtumiaji, muhimu kwa kontena zisizo na mizizi, haiwezi kuzimwa na inaboresha usalama kwa kuzuia mamlaka.
Je, unafanya kazi katika kampuni ya usalama wa mtandao? Je, ungependa kuona kampuni yako ikionekana katika HackTricks? au ungependa kupata upatikanaji wa toleo jipya la PEASS au kupakua HackTricks kwa PDF? Angalia MPANGO WA KUJIUNGA!