Tinalakay ng ating nakaraang blog ang isang kahinaan sa XSS sa loob ng Bookly plugin (WordPress Online Booking and Scheduling Plugin – Bookly). Ngayon, tatalakayin natin ang isa pang kahinaan sa XSS na natuklasan sa ating pananaliksik sa parehong plugin.
Natuklasan ng aming team ang kahinaang ito noong Marso 2023. Kasunod ng pagtuklas nito, agad naming sinimulan ang mga responsableng pamamaraan sa pagsisiwalat upang matiyak na matutugunan kaagad ang kahinaan. Ang nakatalagang CVE identifier para sa kahinaang ito ay CVE-2023-1159, at matagumpay itong na-patch noong Mayo 2023.
Sa blog post na ito, komprehensibong susuriin namin ang ugat sa likod ng kahinaan na makikita sa Bookly plugin. Bukod pa rito, susuriin namin ang patch na inilabas upang epektibong pagaanin ang isyung ito.
Pag-aaral CVE–2023-1159 – Na-authenticate (Admin+) na Naka-imbak na Cross-Site Scripting sa pamamagitan ng Pamagat ng Serbisyo:
Natukoy ng aming pananaliksik ang isang kahinaan sa Bookly plugin na nauugnay sa field na "Pamagat ng serbisyo." Inilalantad ng kahinaang ito ang plugin sa mga naka-imbak na cross-site scripting (XSS) na pag-atake dahil sa hindi sapat na mga hakbang sa sanitization ng input. Mahalagang tandaan na maaaring i-edit o itakda ng mga administrator ang pamagat nang direkta sa pamamagitan ng interface ng plugin.
Sa karagdagang pagsisiyasat, natuklasan namin na kung ang isang nakakahamak na pamagat ay itinakda sa loob ng serbisyo, ito ay ire-render at isasagawa sa browser ng kliyente nang hindi nila alam o pahintulot kapag na-access nila ang nasabing serbisyo. Ang pagpapatupad na ito ay maaaring potensyal na paganahin ang remote code execution, na nagdudulot ng malaking panganib sa seguridad.
Upang makapagbigay ng mas tumpak na pag-unawa, inilalarawan ng sumusunod na code snippet kung paano itinatakda at binabasa ang halaga ng field na “Pamagat ng Serbisyo” habang gumagawa ng bagong serbisyo:

Fig1. paraan ng createService, na matatawag kapag may ginawang bagong serbisyo.
'createService' naman ay nagpapatawag ng 'parameter' na paraan.

Fig2. nagpapakita ng paraan ng mga parameter.
Sa loob ng pamamaraang 'parameter', mayroong isang tawag sa function na 'getRequest()'. Ang function na ito ay responsable para sa pagbawi ng mga inilagay na halaga mula sa interface. Kasunod nito, ang mga halagang ito ay ipinapasa sa 'createService' na paraan, kung saan sila ay nakaimbak. Gayunpaman, mahalagang i-highlight na walang input sanitization na nagaganap sa panahon ng prosesong ito, na nag-iiwan sa system na mahina sa mga potensyal na panganib sa seguridad.

Fig3. ipinapakita ang getRequest method.
Paglalahad ng Pag-aayos: Pagsisiyasat sa Patch
Sa pagsusuri sa patch na lumulutas sa kahinaan, natukoy namin na ang variable ng $parameters ay sumailalim sa wastong sanitization, na epektibong pumipigil sa mga potensyal na paglabag sa seguridad sa loob ng programa. Kasama sa kapansin-pansing pagpapahusay na ito ang pagpapatupad ng function na 'unfiltered_html' at ang pamamaraang 'stripScripts', na mahalaga sa paglilinis ng mga $parameter at pagpapagaan ng mga potensyal na pag-atake.
Sa pamamagitan ng paggamit ng function na 'unfiltered_html', tinitiyak ng patch na ang mga awtorisadong user lamang na may kinakailangang kakayahan ang maaaring magsumite ng hindi na-filter na nilalamang HTML. Pinipigilan nito ang pagpapakilala ng mga nakakahamak na script at makabuluhang binabawasan ang panganib ng mga pag-atake ng cross-site scripting (XSS). Ang pamamaraang 'stripScripts' ay higit na nagpapahusay sa proseso ng sanitization sa pamamagitan ng pag-alis o pagneutralize sa anumang naka-embed na JavaScript code sa loob ng $parameters.
Sa pangkalahatan, tinitiyak ng komprehensibong diskarte na ito sa sanitization na ang variable ng $parameters ay ligtas para sa paggamit sa buong codebase, pinapaliit ang potensyal para sa mga kahinaan sa seguridad at pinapalakas ang pangkalahatang seguridad ng programa.

Fig 4. na naglalarawan sa patch.
Konklusyon
Sa post sa blog na ito, sinuri namin ang isang kahinaan na natuklasan sa Bookly plugin, na nagbigay-daan sa mga na-authenticate na umaatake na magpasok ng mga mapaminsalang script, na nagbabanta sa mga device ng mga user. Sa kabutihang palad, ang kahinaan na ito ay na-patched sa bersyon 21.8. Pinapayuhan namin ang mga may-ari ng site ng WordPress na agad na i-update ang kanilang mga pag-install sa pinakabagong bersyon ng plugin, mahalaga para mabawasan ang mga potensyal na pag-atake. Ang pagtiyak sa napapanahong aplikasyon ng mga update at patch ay mahalaga sa pagpapanatili ng isang secure na online presence. Bukod pa rito, kapag binibigyan ang kakayahan ng 'unfiltered_html' sa tungkulin ng isang user, mag-ingat at italaga lamang ito sa mga pinagkakatiwalaang indibidwal na talagang nangangailangan nito, isinasaalang-alang ang mga potensyal na implikasyon sa seguridad ng kakayahang ito.
lahat SEQRITE at ang mga customer ng Quick Heal ay protektado laban sa anumang mga pagsasamantala na tumatarget sa kahinaang ito sa pamamagitan ng mga sumusunod na lagda:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Kasamang may-akda:
Anjali Rajkumar Raut



