Electron Desktop Apps
WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wame vamiwa na malware za kuiba.
Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na programu hasidi za kuiba taarifa.
Unaweza kutembelea tovuti yao na kujaribu injini yao bure kwa:
Utangulizi
Electron inachanganya seva ya ndani (yenye NodeJS) na upande wa mbele (Chromium), ingawa inakosa baadhi ya mifumo ya usalama ya vivinjari vya kisasa.
Kawaida unaweza kupata msimbo wa programu ya elektroni ndani ya programu ya .asar
, ili kupata msimbo unahitaji kuutoa:
Katika nambari ya chanzo ya programu ya Electron, ndani ya packet.json
, unaweza kupata main.js
faili ambapo mipangilio ya usalama imewekwa.
Electron ina aina 2 za michakato:
Michakato ya Kuu (ina ufikivu kamili wa NodeJS)
Michakato ya Mchoraji (inapaswa kuwa na ufikivu mdogo wa NodeJS kwa sababu za usalama)
Michakato ya mchoraji itakuwa dirisha la kivinjari linalopakia faili:
Mipangilio ya mchakato wa renderer inaweza kusanidiwa katika mchakato wa msingi ndani ya faili ya main.js. Baadhi ya mipangilio itazuia programu ya Electron kupata RCE au vulnerabilities nyingine ikiwa mipangilio imewekwa kwa usahihi.
Programu ya electron inaweza kupata kifaa kupitia apis za Node ingawa inaweza kusanidiwa kuzuia hilo:
nodeIntegration
- nioff
kwa chaguo-msingi. Ikiwa nion
, inaruhusu kupata vipengele vya node kutoka kwa mchakato wa renderer.contextIsolation
- nion
kwa chaguo-msingi. Ikiwa nioff
, mchakato wa msingi na renderer hawajaachanishwa.preload
- tupu kwa chaguo-msingi.sandbox
- ni off kwa chaguo-msingi. Itazuia vitendo ambavyo NodeJS inaweza kutekeleza.Ushirikiano wa Node katika Wafanyakazi
nodeIntegrationInSubframes
- nioff
kwa chaguo-msingi.Ikiwa
nodeIntegration
ime wezeshwa, hii itaruhusu matumizi ya Node.js APIs kwenye kurasa za wavuti ambazo zimeloadiwa kwenye iframes ndani ya programu ya Electron.Ikiwa
nodeIntegration
ime lemazwa, basi preloads zitaloadiwa kwenye iframe
Mfano wa usanidi:
Baadhi ya mizigo ya RCE kutoka hapa:
Kukamata trafiki
Badilisha mazingira ya start-main na ongeza matumizi ya proxi kama:
Uingizaji wa Kanuni za Ndani za Electron
Ikiwa unaweza kutekeleza programu ya Electron kwa kifaa chako, inawezekana kuifanya itekeleze kanuni ya javascript ya kupindukia. Angalia jinsi ya kufanya hivyo:
pagemacOS Electron Applications InjectionRCE: XSS + nodeIntegration
Ikiwa nodeIntegration imewekwa kuwa on, javascript ya ukurasa wa wavuti inaweza kutumia kwa urahisi vipengele vya Node.js kwa kuita require()
. Kwa mfano, njia ya kutekeleza programu ya hesabu kwenye Windows ni:
RCE: preload
Skripti iliyotajwa katika mipangilio hii inangia kabla ya skripti nyingine kwenye renderer, hivyo ina upatikanaji usio na kikomo wa Node APIs:
Kwa hivyo, scripti inaweza kuuza node-features kwa kurasa:
Ikiwa contextIsolation
iko, hii haitafanya kazi
RCE: XSS + contextIsolation
contextIsolation inaleta muktadha uliogawanyika kati ya skripti za ukurasa wa wavuti na msimbo wa ndani wa JavaScript wa Electron ili utekelezaji wa JavaScript wa kila msimbo usiathiri mwingine. Hii ni kipengele muhimu cha kufuta uwezekano wa RCE.
Ikiwa muktadha haujatengwa, mkaidi anaweza:
Kutekeleza JavaScript ya kupindukia katika mchirizi (XSS au urambazaji kwenye tovuti za nje)
Kubadilisha njia iliyojengwa ndani ambayo hutumiwa katika upakiaji au msimbo wa ndani wa Electron kuwa kazi yake mwenyewe
Kuzindua matumizi ya kazi iliyobadilishwa
RCE?
Kuna sehemu 2 ambapo njia zilizojengwa ndani zinaweza kubadilishwa: Katika msimbo wa upakiaji au katika msimbo wa ndani wa Electron:
pageElectron contextIsolation RCE via preload codepageElectron contextIsolation RCE via Electron internal codepageElectron contextIsolation RCE via IPCKupuuza tukio la bonyeza
Ikiwa kuna vizuizi vilivyowekwa unapobonyeza kiungo unaweza kuweza kupuuza kufanya bonyeza la kati badala ya bonyeza la kushoto la kawaida
RCE kupitia shell.openExternal
Kwa habari zaidi kuhusu mifano hii angalia https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8 na https://benjamin-altpeter.de/shell-openexternal-dangers/
Wakati wa kutekeleza programu ya desktop ya Electron, kuhakikisha mipangilio sahihi kwa nodeIntegration
na contextIsolation
ni muhimu. Imethibitishwa kwamba utekelezaji wa kanuni za mbali (RCE) upande wa mteja unalenga skripti za kuanzisha au kanuni ya asili ya Electron kutoka kwa mchakato wa msingi inazuia kwa ufanisi na mipangilio hii ikiwekwa.
Mara tu mtumiaji anaposhirikiana na viungo au kufungua madirisha mapya, wasikilizaji maalum wa matukio hutekelezwa, ambayo ni muhimu kwa usalama na utendaji wa programu:
Watu hawa hufunikwa na maombi ya desktop ili kutekeleza mantiki yake ya biashara. Maombi huchambua ikiwa kiungo kilichopita kinapaswa kufunguliwa ndani au kwenye kivinjari cha wavuti nje. Uamuzi huu kawaida hufanywa kupitia kazi, openInternally
. Ikiwa kazi hii inarudi uwongo
, inaashiria kwamba kiungo kinapaswa kufunguliwa nje, kwa kutumia kazi ya shell.openExternal
.
Hapa kuna pseudocode iliyosimpliwa:
Mazoea bora ya usalama ya Electron JS yanashauri dhidi ya kukubali maudhui yasiyotegemewa na kazi ya openExternal
, kwani inaweza kusababisha RCE kupitia itifaki mbalimbali. Mifumo ya uendeshaji inasaidia itifaki tofauti ambazo zinaweza kusababisha RCE. Kwa mifano kamili na maelezo zaidi juu ya mada hii, mtu anaweza kurejelea rasilimali hii, ambayo inajumuisha mifano ya itifaki za Windows zenye uwezo wa kutumia udhaifu huu.
Mifano ya mashambulizi ya itifaki za Windows ni pamoja na:
Kusoma Faili za Ndani: XSS + contextIsolation
Kulemaza contextIsolation
inawezesha matumizi ya vitambulisho vya <webview>
, sawa na <iframe>
, kwa kusoma na kutoa faili za ndani. Mfano uliotolewa unaonyesha jinsi ya kutumia udhaifu huu kusoma maudhui ya faili za ndani:
Zaidi, njia nyingine ya kusoma faili ya ndani inashirikiwa, ikisisitiza udhaifu muhimu wa kusoma faili za ndani katika programu ya desktop ya Electron. Hii inahusisha kuingiza script kudanganya programu na kutoa data:
RCE: XSS + Chromium ya Zamani
Ikiwa chromium inayotumiwa na programu ni zamani na kuna mapungufu yaliyojulikana kwenye hiyo, inaweza kuwa inawezekana kuitumia na kupata RCE kupitia XSS. Unaweza kuona mfano katika hii andishi: https://blog.electrovolt.io/posts/discord-rce/
XSS ya Uvamizi kupitia Ubaguzi wa URL ya Ndani
Ukiwa umepata XSS lakini hauwezi kuzindua RCE au kuiba faili za ndani unaweza kujaribu kutumia hiyo kuiba siri kupitia uvuvi.
Kwanza kabisa unahitaji kujua kinachotokea unapojaribu kufungua URL mpya, kwa kuangalia nambari ya JS katika sehemu ya mbele:
Mwito wa openInternally
utaamua ikiwa kiungo kitafunguliwa kwenye dirisha la desktop kama ni kiungo kinachomilikiwa na jukwaa, au kitafunguliwa kwenye kivinjari kama rasilimali ya tatu.
Katika kesi regex inayotumiwa na kazi hiyo inaweza kuwa dhaifu kwa kuzidiwa (kwa mfano kwa kutoescape dots za subdomains) mkaidi anaweza kutumia XSS kufungua dirisha jipya ambalo litakuwa kwenye miundombinu ya mkaidi kutaka vibali kutoka kwa mtumiaji:
Vifaa
Electronegativity ni chombo cha kutambua upangaji mbaya na mifano ya usalama katika programu za Electron.
Electrolint ni programu-jalizi ya VS Code ya chanzo wazi kwa programu za Electron inayotumia Electronegativity.
nodejsscan kwa ajili ya kuangalia maktaba za tatu zenye mapungufu ya usalama
Electro.ng: Unahitaji kununua
Maabara
Katika https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s unaweza kupata maabara ya kutumia programu za Electron zenye mapungufu.
Baadhi ya amri zitakazokusaidia katika maabara:
Vyanzo
Utafiti zaidi na maandishi kuhusu usalama wa Electron katika https://github.com/doyensec/awesome-electronjs-hacking
WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure kuchunguza ikiwa kampuni au wateja wake wameathiriwa na malware za wizi.
Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na programu hasidi za kuiba habari.
Unaweza kutembelea tovuti yao na kujaribu injini yao bure kwa:
Last updated