Chanzo: www.hackerone.com – Mwandishi: Haoxi Tan. Katika nakala hii, tutazungumza juu ya ripoti muhimu ya mdudu ambapo mtoaji alipata utekelezaji wa nambari ya mbali (RCE) kwenye wavuti ya NextCloud’s WordPress katika nambari ya chanzo ya mada yake ya kawaida. Inatoa hadithi ya tahadhari ya kutumia kukata tamaa salama katika PHP na inasimulia hadithi ya mafanikio ya jinsi mende hupatikana mara kwa mara kwenye malengo ya wavuti ya moja kwa moja wakati nambari ya chanzo inapatikana pia. Je! Kukataliwa kwa usalama ni nini? Maombi ya wavuti mara nyingi yanahitaji kupitisha habari iliyoandaliwa kwa matumizi kama vigezo kwenye seva ya kurudisha nyuma, kama vile fomu na data ya mtumiaji. Ni rahisi kuwasawazisha katika fomati ambazo lugha ya programu ya kurudisha nyuma inaweza kutumia kwa urahisi, lakini mara nyingi inaweza kuwa hatari ikiwa data hiyo inadhibitiwa na pembejeo ya watumiaji. Hii pia inajulikana kama kukata tamaa kwa usalama. Kukataliwa kwa usalama kunatokea wakati data iliyodhibitiwa na watumiaji inapakiwa kwa njia isiyo salama, ambayo inaweza kusababisha RCE na mshambuliaji kupata ufikiaji kamili wa programu ya wavuti kwa nambari ya seva. Hii inamaanisha uadilifu, usiri, na upatikanaji wa huduma ya wavuti iliyo hatarini na data inayohusika (pamoja na habari nyeti ya wateja) zote ziko hatarini. Kupima na kurekebisha darasa hili la mende huchukua watekaji na uelewa mzuri wa mfano wa data ya programu, stack ya teknolojia, na wakati mwingine hata ufikiaji wa nambari ya chanzo. Athari za Biashara za Uvunjaji wa Takwimu za Msimbo wa Kijijini: Wakati washambuliaji wanapata ufikiaji wa seva za wavuti yako kupitia RCE, wanaweza kupata data na muktadha huo na ruhusa ya programu ya wavuti. Hii inamaanisha ufikiaji wa vitu kama sifa nyeti za wateja, PII (habari inayotambulika kibinafsi), na funguo za API za huduma muhimu za mtu wa tatu kama vile watoa wingu na lango la malipo. Hii inaweza kusababisha upotezaji wa kifedha, uharibifu wa reputational, na shida za kisheria kutoka kwa kutofuata sheria. Usumbufu wa huduma: Washambuliaji wanaweza pia kutumia ufikiaji uliopatikana kutoka RCE kuvuruga upatikanaji wa wavuti yako. Hii inaweza kuchukua fomu ya kuzima au hata upungufu. Kulingana na umuhimu wa programu ya wavuti kwa biashara yako, hii inaweza kusababisha upotezaji mkubwa wa kifedha na uharibifu wa reputational. Madhara kwa Wateja: Mashambulio maarufu kama vile skimming ya wavuti mara nyingi hutumia udhaifu wa RCE katika WordPress kupeleka skimmers ambazo zimetengenezwa kuiba habari za malipo kama kadi za mkopo za wateja na maelezo ya kibinafsi. Kuathirika kupitia RCE inamaanisha washambuliaji wanaweza kuingiza maandishi ya kiholela na programu nyingine hasi ambayo wageni hufanya, na kusababisha madhara kwa wateja wako mwenyewe. Maelezo: Ripoti ya mdudu katika kesi hii, mdudu alikuwa RCE aliyepatikana kwenye wavuti ya NextCloud kupitia mada maalum waliyokuwa wameendeleza. Hackare, Lukas Reschke, aliandika ripoti fupi akielezea kwamba sababu hiyo haionyeshi pembejeo ya watumiaji kutoka kwa kuki na ilitoa safu halisi ya nambari iliyo hatarini katika njia ya GitHub. Wacha tuangalie: kazi nc_change_nf_default_value ($ default_value, $ field_type, $ field_settings) {if (isset ($ _ cookie[‘nc_form_fields’]))[‘nc_form_fields’])); ikiwa (str_contain ($ field_settings[‘key’]’jina’) &&! str_contain ($ shamba_settings[‘key’]’shirika’)) {ikiwa (isset ($ nc_form_fields[‘nc_form_name’])) {$ default_value = $ nc_form_fields[‘nc_form_name’]; }} Inaonekana kama kazi hii hufanya kitu na uwanja wa fomu, lakini uwanja wa fomu unadhibitiwa na pembejeo ya mtumiaji kwenye kuki inayoitwa NC_FORM_FIELDS na Lukas walipata shamba ndani yake baada ya kukata tamaa kupitia simu ili kukosa. Lukas pia alitaja eneo tofauti katika msingi mkubwa wa nambari ya NextCloud-theme ambayo pia ilikuwa na hatari hiyo hiyo, ikituelezea kwamba aliipata kwa kutafuta neno la msingi halijasambaza katika nambari nzima: $ pref_lang = “; ikiwa (isset ($ _Cookie[‘nc_form_fields’]))[‘nc_form_fields’])); ikiwa (isset ($ nc_form_fields[‘nc_form_lang’])) {$ pref_lang = $ nc_form_fields[‘nc_form_lang’];}} mwingine Ni njia rahisi ya kuhifadhi na kupata maadili na kupitisha kati ya kazi na kurasa tofauti (kwa mfano, kuwatumikia watumiaji fomu, waijaze, na uirudishe). Hati hizo pia zinasema katika bendera nyekundu kutopitisha pembejeo ya mtumiaji isiyoaminika ndani ya (), kwa kuwa hacker inaweza kupakia msimbo na kuitekeleza wakati wa ujanibishaji wa kitu. Msimbo wa unyonyaji na mzigo wa utekelezaji ndivyo Lucas alivyofanya. Alijaribu upakiaji wa malipo ya gadget na monolog ilifanya kazi, kwani iliwekwa katika mfano huu wa WordPress. Gadget ni wazo la kurudi nyuma (ROP) dhana ambapo kazi za nambari inayoendesha na maktaba zilizopakiwa hutumiwa kufikia athari iliyokusudiwa. Wacha tuangalie upakiaji wake: Hii ndio msingi wa msingi wa 644 wa kile Lukas aliweka katika NC_FORM_FIELDS: O: 37: “MonologhandlerfingerscrossedHandler”: 4: {S: 16: “*Passthrulevel”; i: 0; 10: ” . ; i: 100;}} s: 13: “*wasindikaji”; a: 2: {i: 0; s: 3: “pos”; i: 1; s: 6: “mfumo”;}} kusoma hii Payload ilifunua muundo wa ndani wa PHP wa vigezo vya serial katika mfumo wa ::. Kwa mfano, inaanza na O: 37: “MonologhandlerfingerSrossedhandler” ambayo ni kitu (o), iliyoonyeshwa na thamani ya ka 37 kwa muda mrefu, kuwa “monologhandlerfingerscrossedhandler”. Aina zingine kama kamba (s) na nambari (i) zinaweza kuonekana katika muundo wote. Kufuatia mantiki hiyo tunaweza kusema kuwa mfumo huu wa malipo ya malipo mahali fulani na kitambulisho kama parameta, kama mtoaji aliyeelezewa katika uwasilishaji wake: kutoa upakiaji wa deserialization wa PHP, zana maarufu ni PHPGGC. Utafutaji wa haraka wa repo hiyo ulifunua minyororo mingi ya RCE kwa kutumia monolog: Kwa kweli, kuendesha PHPGGC na chaguo la monolog/RCE7 hutoa malipo ambayo yanaonekana kabisa kama yule Lukas alikuwa na: git clone https://github.com/ambionics/phpggccd phpggcdocker kujenga -t phpggc .docker run phpggc monolog/rce7 ‘mfumo’ ‘id’ o: 37: “monologhandlerfingerscrossedhandler”: 4: {s: 16: “*passthrulevel”; i: 0; s: 10: “*handler”; r: 1; s: 9: “*buffer”; a: 1: {i: 0; a: 2: {i: 0; s: 2: “id”; s: 5: “kiwango”; i: 0 ; Gadget ya ROP sio hatari katika monolog katika kesi hii, kana kwamba mtu anaweza kupakia madarasa ya kiholela kupitia UnCerialize, wanaweza kutumia njia zingine nyingi kutekeleza nambari. Katika kesi hii, mjenzi wa darasa la monolog ya vidole iliyojumuishwa ni pamoja na paramu, $ handler, ambayo inaruhusu mpigaji kuweka kazi ya kiholela kuitwa, kwa mfano mfumo ambao hufanya amri. Hata kama monolog haikuwekwa, vidude vingi bado vinaweza kutumiwa kwa RCE kupitia kutokwa kwa usalama kwenye wavuti ya WordPress. Kuna vidude katika WordPress yenyewe: Jinsi Hackare Watapeli Kupata PHP Ukosefu wa Kukata Usumbufu katika Msimbo wa Chanzo ili kuanza mende zinazofanana katika wigo, sisi kama watapeli tunaweza kuanza na programu za kutafuta na malengo ya “chanzo cha chanzo” katika wigo: basi, tunaweza kuchuja na malengo ambayo Kuwa na PHP kama teknolojia: basi, angalia wigo wa programu na upakue nambari zote za chanzo. Sasa unaweza kupitia yote kwa amri hii kwa kutumia RIPGREP: Sasa angalia matokeo na upate pembejeo za watumiaji. Ili kuharakisha mchakato wa kupata pembejeo ya watumiaji ambayo imepitishwa kwa kutoweka, unaweza kuongeza maneno kama vile $ _cookie, $ _get, $ _Post na $ _request, ambayo ni anuwai maalum ya PHP ambayo inaweza kuwa na pembejeo ya mtumiaji isiyo ya kweli kutoka kwa maombi: RG ‘haijakamilika. *(Cookie | Get | Post | Ombi).*’. Tunaweza kutengeneza faili ya test.php na nambari fulani iliyo hatarini ili kuhalalisha kuwa regex yetu ni sahihi: echo haijafahamika ($ _ kupata[‘id’]);[‘id’]); Kupata kuki zilizosababishwa na PHP kwa nguvu kupata kuki zilizosababishwa na PHP katika historia ya HTTP, tunaweza kutumia BURP na kipengee chake kipya kinachoitwa “Bambas” kuchuja trafiki ya HTTP na nambari ya Java. Kwa kuwa ombi lote na mwili wa majibu umewekwa wazi kwetu, tunaweza kupitisha kila kuki na kuangalia ikiwa ina data ya PHP iliyosababishwa na PHP. Ili kufanya hivyo, nenda kwa wakala wa Burp -> Historia ya HTTP na ubonyeze kwenye Mipangilio ya Kichujio: Sasa bonyeza kwenye “Bambda Mode”, na ubandike kwenye snippet hii ya Bambda, kisha bonyeza Omba: IF (ombiResponse.FinalRequest (). Hasheader (“Cookie” ))[a-zA-Z]:[0-9]{0,5}: “. )[1]; Jaribu {// Angalia kwa msingi wa PHP uliowekwa wazi wa PHP ulioandaliwa = kamba mpya (base64.getUrlDecoder (). DECODE (Cookievalue)); ikiwa (phpobj_pattern.matcher (decoded) .matches ()) {kurudi kweli; }} Catch (IllalAlarGumentException e) {// Angalia kitu wazi cha php ikiwa (phpobj_pattern.matcher (cookievalue) .matches ()) {kurudi kweli; }} // mwisho wa kitanzi}} kurudi kwa uwongo; Kimsingi, inapita kupitia kila thamani ya kuki kwenye kichwa cha ombi na huangalia maandishi wazi au msingi wa PHP uliowekwa wazi kwa kutumia njia ya kawaida. Kumbuka kwamba kutakuwa na chanya za uwongo kwani regex hutumia muundo rahisi kukamata anuwai ya malipo ya malipo ya PHP, ambayo kuna tofauti nyingi. Na kama hivyo, tumepata maombi matatu ambayo yana NC_FORM_FIELDS na maadili ya kuki ya msingi ya kukimbilia ambayo tunaweza kupima. Kurekebisha ili kuepusha RCE inayosababishwa na kukata tamaa kwa usalama, watengenezaji wanaweza kuchukua nafasi ya matukio yote ya kazi za kutokuwa na usalama, kama vile kutofaulu, na mbinu salama za usimbuaji ambazo ni ngumu juu ya kile vitu vinaweza kuwa na. Hii ndio kiraka ambacho NextCloud ilikuja mara moja kwa udhaifu huu, siku chache tu baada ya ripoti ya mdudu: watengenezaji walibadilisha kazi isiyo salama na JSON_DECODE, ambayo haiwezi kuwa na nambari ya kiholela ambayo inaweza kupakiwa kwa RCE. Tunaamini kwamba kupatikana kwa nambari ya chanzo ambayo iliruhusu Lucas kupata mdudu huyu pia aliboresha sana uwezo wa watengenezaji kujibu na kiraka, kwani iliwezesha kiboreshaji kuonyesha mahali ambapo kila mfano wa mdudu huu ulikuwa kwenye msimbo, ukiongoza NextCloud’s Jaribio la kueneza. Hitimisho Simu moja ya kazi ya kutoweka ilifungua tovuti nzima kwa RCE, na uwezo wa mshambuliaji kupata ganda kwenye seva ya wavuti. Kupata darasa hili la udhaifu katika PHP sio ngumu katika misingi ya nambari katika wigo, na wala haitoi malipo ya kazi kwa hiyo; Kwa kweli, inaangazia kwamba Hacker, Lucas, alikuwa na njia nzuri ya kupata mende katika mali ya nambari ya chanzo, sio tu katika PHP lakini kwa lugha yoyote. Huanza na kusaga kwa simu za kazi hatari, kuchukua pembejeo zinazodhibitiwa na watumiaji, kisha kuhalalisha hatari dhidi ya lengo la moja kwa moja, na hatimaye kuonyesha athari za usalama kwa kutekeleza amri isiyo na madhara kwenye seva. Salama shirika lako kutokana na kutokuwa na usalama na Hackerone hii ni mfano mmoja tu wa athari hatari ya udhaifu wa kutokuwepo kwa usalama, na jinsi ilikuwa rahisi kwa mshambuliaji kutumia. Hackerone na jamii yetu ya watapeli wa maadili ni bora kusaidia mashirika kutambua na kurekebisha kukataliwa kwa usalama na udhaifu mwingine, iwe kupitia fadhila ya mdudu, pentest kama huduma (PTAAs), ukaguzi wa usalama wa kanuni, au suluhisho zingine kwa kuzingatia mawazo ya mshambuliaji juu ya kugundua mazingira magumu. Pakua Ripoti ya Usalama ya Mwaka ya Hacker ya kila mwaka ili ujifunze zaidi juu ya athari za udhaifu wa juu 10 wa Hackerone, au wasiliana na Hackerone ili kuanza kuchukua udhaifu wa kutokuwa na usalama katika shirika lako. URL ya chapisho la asili: https://www.hackerone.com/blog/how-serialized-cookies-led–st-wordpress-website