Node inspector/CEF debug abuse
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
From the docs: Wakati inapoanzishwa na swichi --inspect
, mchakato wa Node.js unasikiliza mteja wa ufuatiliaji. Kwa kawaida, itasikiliza kwenye mwenyeji na bandari 127.0.0.1:9229
. Kila mchakato pia umepewa UUID ya kipekee.
Wateja wa mfuatiliaji lazima wajue na kubainisha anwani ya mwenyeji, bandari, na UUID ili kuungana. URL kamili itakuwa na muonekano kama ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e
.
Kwa sababu debugger ina ufikiaji kamili wa mazingira ya utekelezaji wa Node.js, mhusika mbaya anayeweza kuungana na bandari hii anaweza kuwa na uwezo wa kutekeleza msimbo wowote kwa niaba ya mchakato wa Node.js (kuinua hadhi inayoweza kutokea).
Kuna njia kadhaa za kuanzisha mfuatiliaji:
Wakati unapoanza mchakato ulioangaliwa kitu kama hiki kitaonekana:
Mchakato unaotegemea CEF (Chromium Embedded Framework) kama unahitaji kutumia param: --remote-debugging-port=9222
kufungua debugger (ulinzi wa SSRF unabaki kuwa sawa). Hata hivyo, wao badala yake ya kutoa kikao cha NodeJS debug kitawasiliana na kivinjari kwa kutumia Chrome DevTools Protocol, hii ni interface ya kudhibiti kivinjari, lakini hakuna RCE ya moja kwa moja.
Unapoanzisha kivinjari kilichokuwa na debug, kitu kama hiki kitaonekana:
Tovuti zinazofunguliwa kwenye kivinjari cha wavuti zinaweza kufanya maombi ya WebSocket na HTTP chini ya mfano wa usalama wa kivinjari. Muunganisho wa awali wa HTTP unahitajika ili kupata kitambulisho cha kipekee cha kikao cha debugger. Sera ya asili sawa inazuia tovuti kuwa na uwezo wa kufanya muunganisho huu wa HTTP. Kwa usalama wa ziada dhidi ya shambulio la DNS rebinding, Node.js inathibitisha kwamba 'Headers za Host' za muunganisho zinabainisha anwani ya IP au localhost
au localhost6
kwa usahihi.
Hizi mbinu za usalama zinazuia kutumia mpelelezi kuendesha msimbo kwa kutuma tu ombi la HTTP (ambalo linaweza kufanywa kwa kutumia udhaifu wa SSRF).
Unaweza kutuma ishara SIGUSR1 kwa mchakato wa nodejs unaotembea ili kuufanya uanze mpelelezi katika bandari ya kawaida. Hata hivyo, kumbuka kwamba unahitaji kuwa na ruhusa za kutosha, hivyo hii inaweza kukupa ufikiaji wa ruhusa kwa habari ndani ya mchakato lakini si kupanda kwa moja kwa moja kwa ruhusa.
Hii ni muhimu katika kontena kwa sababu kuzima mchakato na kuanzisha mpya na --inspect
sio chaguo kwa sababu konteina itakuwa imeuawa na mchakato.
Ili kuungana na browa ya msingi wa Chromium, URLs chrome://inspect
au edge://inspect
zinaweza kufikiwa kwa Chrome au Edge, mtawalia. Kwa kubofya kitufe cha Sanidi, inapaswa kuhakikisha kuwa mwenyeji wa lengo na bandari zimeorodheshwa kwa usahihi. Picha inaonyesha mfano wa Utekelezaji wa Msimbo wa K remote (RCE):
Kwa kutumia mistari ya amri unaweza kuungana na mkaguzi/mchambuzi kwa:
Chombo https://github.com/taviso/cefdebug, kinaruhusu kupata wakaguzi wanaotembea kwa ndani na kuiingiza msimbo ndani yao.
Kumbuka kwamba NodeJS RCE exploits hazitafanya kazi ikiwa umeunganishwa na kivinjari kupitia Chrome DevTools Protocol (unahitaji kuangalia API ili kupata mambo ya kuvutia ya kufanya nayo).
Ikiwa ulifika hapa ukitafuta jinsi ya kupata RCE kutoka kwa XSS katika Electron tafadhali angalia ukurasa huu.
Njia kadhaa za kawaida za kupata RCE unapoweza kuunganisha na Node inspector ni kutumia kitu kama (inaonekana kwamba hii haitafanya kazi katika muunganisho wa Chrome DevTools protocol):
You can check the API here: https://chromedevtools.github.io/devtools-protocol/ In this section I will just list interesting things I find people have used to exploit this protocol.
In the CVE-2021-38112 Rhino security discovered that an application based on CEF ilirekodi URI maalum katika mfumo (workspaces://) ambayo ilipokea URI kamili na kisha ikaanzisha programu ya msingi ya CEF kwa usanidi ambao ulikuwa unajengwa kwa sehemu kutoka URI hiyo.
Iligundulika kwamba vigezo vya URI vilikuwa vimefichwa URL na kutumika kuanzisha programu ya msingi ya CEF, ikiruhusu mtumiaji kuingiza bendera --gpu-launcher
katika mstari wa amri na kutekeleza mambo yasiyo ya kawaida.
So, a payload like:
Will execute a calc.exe.
Badilisha folda ambapo faili zilizopakuliwa zitahifadhiwa na upakue faili ili kuandika upya kanuni ya chanzo inayotumika mara kwa mara ya programu kwa kanuni yako mbaya.
Kulingana na chapisho hili: https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148 inawezekana kupata RCE na kuhamasisha kurasa za ndani kutoka theriver.
Katika mazingira halisi na baada ya kuathiri PC ya mtumiaji anayetumia kivinjari kinachotegemea Chrome/Chromium unaweza kuzindua mchakato wa Chrome na kuanzisha ufuatiliaji wa makosa na kuhamasisha bandari ya ufuatiliaji ili uweze kuifikia. Kwa njia hii utaweza kukagua kila kitu ambacho mwathirika anafanya na Chrome na kuiba taarifa nyeti.
Njia ya siri ni kuondoa kila mchakato wa Chrome na kisha kuita kitu kama
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)