Node inspector/CEF debug abuse
Taarifa Msingi
Kutoka kwa nyaraka: Wakati inapoanzishwa na kubadilisha --inspect
, mchakato wa Node.js unasikiliza mteja wa kudukua. Kwa default, itasikiliza kwenye mwenyeji na bandari 127.0.0.1:9229
. Kila mchakato pia hupewa UUID ya kipekee.
Wateja wa Inspector lazima wajue na kutaja anwani ya mwenyeji, bandari, na UUID kuunganisha. URL kamili itaonekana kama ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e
.
Kwa kuwa kudukua kuna ufikiaji kamili wa mazingira ya utekelezaji wa Node.js, mwigizaji mwenye nia mbaya anayeweza kuunganisha kwenye bandari hii anaweza kutekeleza nambari ya kupindukia kwa niaba ya mchakato wa Node.js (kuongezeka kwa mamlaka ya upeo).
Kuna njia kadhaa za kuanzisha inspector:
Unapoanza mchakato uliochunguzwa kitu kama hiki kitatokea:
Mchakato unaotegemea CEF (Chromium Embedded Framework) kama unahitaji kutumia param: --remote-debugging-port=9222
ili kufungua debugger (ulinzi wa SSRF unabaki sawa sana). Hata hivyo, badala yake ya kutoa kikao cha debug cha NodeJS kitawasiliana na kivinjari kutumia Chrome DevTools Protocol, hii ni kiolesura cha kudhibiti kivinjari, lakini hakuna RCE moja kwa moja.
Unapoanzisha kivinjari kilichodhibitishwa kama hiki kitatokea:
Vivinjari, WebSockets na sera ya asili
Tovuti zilizofunguliwa kwenye kivinjari cha wavuti zinaweza kufanya ombi la WebSocket na HTTP chini ya mfano wa usalama wa kivinjari. Unganisho wa kwanza wa HTTP ni muhimu kwa kupata kitambulisho cha kikao cha debugger. Sera sawa na asili inazuia tovuti kutoka kufanya unganisho hili la HTTP. Kwa usalama zaidi dhidi ya mashambulizi ya kurejelea DNS, Node.js inathibitisha kuwa vichwa vya 'Host' kwa uhusiano vinabainisha anwani ya IP au localhost
au localhost6
kwa usahihi.
Hatua hizi za usalama zinazuia kutumia inspector kutekeleza nambari kwa kutuma tu ombi la HTTP (ambalo lingeweza kufanywa kwa kutumia udhaifu wa SSRF).
Kuanza inspector katika michakato inayoendelea
Unaweza kutuma ishara SIGUSR1 kwa mchakato wa nodejs unaofanya kazi ili kufanya ianze inspector kwenye bandari ya msingi. Walakini, kumbuka kuwa unahitaji mamlaka za kutosha, hivyo hii inaweza kukupatia upatikanaji wa mamlaka kwa habari ndani ya mchakato lakini sio ukuaji wa moja kwa moja wa mamlaka.
Hii ni muhimu katika vyombo kwa sababu kuzima mchakato na kuanzisha mpya na --inspect
sio chaguo kwa sababu kontena itauawa na mchakato.
Unganisha kwa mkaguzi/mchunguzi
Kuunganisha kwa kivinjari kinachotegemea Chromium, URL za chrome://inspect
au edge://inspect
zinaweza kufikiwa kwa Chrome au Edge, mtawalia. Kwa kubonyeza kitufe cha Configure, ni lazima kuhakikisha kuwa mwenyeji na bandari ya lengo zimeorodheshwa kwa usahihi. Picha inaonyesha mfano wa Utekelezaji wa Kanuni kwa Mbali (RCE):
Kutumia mstari wa amri unaweza kuunganisha kwa mkaguzi/mchunguzi na:
The tool https://github.com/taviso/cefdebug, inaruhusu kupata wachunguzi wanaofanya kazi kwa ndani na kuingiza msimbo ndani yao.
Tafadhali kumbuka kwamba NodeJS RCE exploits haitafanya kazi ikiwa unahusishwa na kivinjari kupitia Chrome DevTools Protocol (unahitaji kuangalia API ili kupata vitu vya kuvutia vya kufanya nayo).
RCE katika NodeJS Debugger/Inspector
Ikiwa umekuja hapa ukitafuta jinsi ya kupata RCE kutoka kwa XSS katika Electron tafadhali angalia ukurasa huu.
Baadhi ya njia za kawaida za kupata RCE unapoweza kuhusisha kwenye Node inspector ni kutumia kitu kama hiki (inaonekana kwamba hii haitafanya kazi katika uhusiano na Chrome DevTools protocol):
Malipo ya Itifaki ya Chrome DevTools
Unaweza kuangalia API hapa: https://chromedevtools.github.io/devtools-protocol/ Katika sehemu hii nitataja mambo ya kuvutia ambayo watu wamegundua wanaweza kutumia kudanganya itifaki hii.
Uingizaji wa Parameta kupitia Viungo vya Kina
Katika CVE-2021-38112 Rhino security iligundua kwamba programu iliyotegemea CEF iliandikisha URI ya desturi kwenye mfumo (workspaces://) ambayo ilipokea URI kamili na kisha kuzindua programu iliyotegemea CEF na usanidi uliokuwa sehemu iliyoundwa kutoka kwa URI hiyo.
Iligundulika kwamba parameta za URI zilikuwa zimefanyiwa URL decode na kutumika kuzindua programu ya msingi ya CEF, kuruhusu mtumiaji kudukua bendera --gpu-launcher
kwenye mstari wa amri na kutekeleza mambo yoyote.
Hivyo, malipo kama:
Badilisha Faili
Badilisha folda ambapo faili zilizopakuliwa zitahifadhiwa na pakua faili ili kubadilisha mara kwa mara mikodisho ya chanzo ya programu na mikodisho yako ya uovu.
Uchomaji wa mbali wa Webdriver na utoaji wa data
Kulingana na chapisho hili: https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148 inawezekana kupata RCE na kutoa kurasa za ndani kutoka kwa dereva.
Baada ya Uvamizi
Katika mazingira halisi na baada ya kuvamia kompyuta ya mtumiaji inayotumia kivinjari kinachotegemea Chrome/Chromium unaweza kuzindua mchakato wa Chrome na kuwezesha uchunguzi na kuhamisha bandari ya uchunguzi ili uweze kufikia hiyo. Kwa njia hii utaweza kuchunguza kila kitu ambacho muathiriwa anafanya na Chrome na kuiba taarifa nyeti.
Njia ya kisiri ni kukomesha kila mchakato wa Chrome na kisha kuita kitu kama
Marejeo
Last updated