Bypass FS protections: read-only / no-exec / Distroless
Ikiwa una nia ya kazi ya kudukua na kudukua yasiyodukuliwa - tunakupa kazi! (inahitajika uwezo wa kuandika na kuzungumza kwa ufasaha wa Kipolishi).
Video
Katika video zifuatazo unaweza kupata mbinu zilizotajwa kwenye ukurasa huu zilizoelezwa kwa undani zaidi:
Soma-tu / hakuna-exec hali
Inazidi kuwa kawaida kupata mashine za linux zilizomountiwa na ulinzi wa mfumo wa faili wa soma-tu (ro), hasa katika vyombo. Hii ni kwa sababu ya kuendesha chombo na mfumo wa faili wa ro ni rahisi kama kuweka readOnlyRootFilesystem: kweli
katika securitycontext
:
Hata hivyo, hata kama mfumo wa faili umemountiwa kama ro, /dev/shm
bado itakuwa inaweza kuandikwa, hivyo ni uongo hatuwezi kuandika chochote kwenye diski. Hata hivyo, folda hii itakuwa imemountiwa na ulinzi wa hakuna-exec, hivyo ikiwa unapakua binary hapa hutaweza kuitekeleza.
Kutoka mtazamo wa timu nyekundu, hii inafanya kuwa ngumu kupakua na kutekeleza binaries ambazo hazipo kwenye mfumo tayari (kama backdoors au enumerators kama kubectl
).
Kudukua Rahisi: Scripts
Tafadhali kumbuka nilitaja binaries, unaweza kutekeleza skripti yoyote ikiwa tu mkalimani yupo ndani ya chombo, kama skripti ya shell ikiwa sh
iko au skripti ya python ikiwa python
imefungwa.
Hata hivyo, hii pekee haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazoweza kuhitaji kutekeleza.
Kudukua Kumbukumbu
Ikiwa unataka kutekeleza binary lakini mfumo wa faili hauruhusu hivyo, njia bora ya kufanya hivyo ni kwa kutekeleza kutoka kumbukumbu, kwani ulinzi hauwafai huko.
FD + kizuizi cha wito wa exec
Ikiwa una injini za skripti zenye nguvu ndani ya chombo, kama Python, Perl, au Ruby unaweza kupakua binary kutekeleza kutoka kumbukumbu, kuihifadhi kwenye maelezo ya faili ya kumbukumbu (wito wa syscall wa create_memfd
), ambayo haitalindwa na ulinzi huo na kisha kuita wito wa exec syscall kuonyesha fd kama faili ya kutekeleza.
Kwa hili unaweza kutumia mradi fileless-elf-exec. Unaweza kumpitisha binary na itazalisha skripti katika lugha iliyoelezwa na binary iliyosongwa na b64 encoded pamoja na maagizo ya kudecode na kudecompress katika fd iliyoundwa kwa kuita wito wa create_memfd
syscall na wito wa exec syscall kuitekeleza.
Hii haitafanya kazi katika lugha zingine za skripti kama PHP au Node kwa sababu hawana njia yoyote ya msingi ya kuita wito wa syscalls wa moja kwa moja kutoka kwa skripti, hivyo haiwezekani kuita create_memfd
kuunda fd ya kumbukumbu kuhifadhi binary.
Zaidi ya hayo, kuunda fd ya kawaida na faili katika /dev/shm
haitafanya kazi, kwa sababu hautaruhusiwa kuitekeleza kwa sababu ya ulinzi wa hakuna-exec utatumika.
DDexec / EverythingExec
DDexec / EverythingExec ni mbinu inayokuwezesha kurekebisha kumbukumbu ya mchakato wako mwenyewe kwa kubadilisha /proc/self/mem
yake.
Hivyo, kudhibiti kanuni ya mkusanyiko inayotekelezwa na mchakato, unaweza kuandika shellcode na "kubadilisha" mchakato kutekeleza kanuni yoyote ya kupindukia.
DDexec / EverythingExec itakuruhusu kupakia na kutekeleza shellcode yako mwenyewe au binary yoyote kutoka kumbukumbu.
MemExec
Memexec ni hatua ya asili ya DDexec. Ni DDexec shellcode demonised, kila wakati unapotaka kuendesha binary tofauti hauitaji kuzindua upya DDexec, unaweza tu kuendesha shellcode ya memexec kupitia mbinu ya DDexec na kisha kuwasiliana na kiumbe hiki ili kupitisha binaries mpya za kupakia na kuendesha.
Unaweza kupata mfano jinsi ya kutumia memexec kuendesha binaries kutoka kwa PHP reverse shell katika https://github.com/arget13/memexec/blob/main/a.php.
Memdlopen
Kwa lengo kama la DDexec, mbinu ya memdlopen inaruhusu njia rahisi ya kupakia binaries kwenye kumbukumbu kwa kuziendesha baadaye. Inaweza kuruhusu hata kupakia binaries zenye tegemezi.
Kupitisha Distroless
Ni nini distroless
Vyombo vya distroless vinavyo vipengele vichache sana vinavyohitajika kuendesha programu au huduma maalum, kama maktaba na tegemezi za wakati wa uendeshaji, lakini vinaweka pembeni vipengele vikubwa kama meneja wa pakiti, shell, au zana za mfumo.
Lengo la vyombo vya distroless ni kupunguza eneo la mashambulizi ya vyombo kwa kufuta vipengele visivyo vya lazima na kupunguza idadi ya mapungufu yanayoweza kutumiwa.
Reverse Shell
Katika chombo cha distroless unaweza hata usipate sh
au bash
kupata shell ya kawaida. Pia hutapata binaries kama ls
, whoami
, id
... kila kitu unachozoea kuendesha kwenye mfumo.
Kwa hivyo, hutaweza kupata reverse shell au kuorodhesha mfumo kama kawaida.
Hata hivyo, ikiwa chombo kilichoharibiwa kinaendesha kwa mfano wavuti ya flask, basi python imewekwa, na kwa hivyo unaweza kupata Python reverse shell. Ikiwa inaendesha node, unaweza kupata Node rev shell, na vivyo hivyo na karibu lugha yoyote ya scripting.
Kwa kutumia lugha ya scripting unaweza kuorodhesha mfumo kwa kutumia uwezo wa lugha hiyo.
Ikiwa hakuna ulinzi wa read-only/no-exec
unaweza kutumia reverse shell yako kufanya kuandika kwenye mfumo wa faili binaries yako na kuendesha.
Hata hivyo, katika aina hii ya vyombo ulinzi huu kawaida utakuwepo, lakini unaweza kutumia mbinu za awali za utekelezaji wa kumbukumbu kuzipita.
Unaweza kupata mifano jinsi ya kutumia baadhi ya mapungufu ya RCE kupata reverse shells za lugha za scripting na kutekeleza binaries kutoka kumbukumbu katika https://github.com/carlospolop/DistrolessRCE.
Last updated