Ons vorige blog het 'n XSS-kwesbaarheid binne die Bookly-inprop (WordPress Online Booking and Scheduling Plugin – Bookly) ondersoek. Vandag gaan ons delf in nog 'n XSS-kwesbaarheid wat aan die lig gekom het tydens ons navorsing oor dieselfde inprop.
Ons span het hierdie kwesbaarheid in Maart 2023 ontdek. Na die ontdekking daarvan het ons onmiddellik verantwoordelike openbaarmakingsprosedures begin om te verseker dat die kwesbaarheid vinnig aangespreek sou word. Die toegekende CVE-identifiseerder vir hierdie kwesbaarheid is CVE-2023-1159, en dit is suksesvol in Mei 2023 opgedateer.
In hierdie blogplasing sal ons die oorsaak van die kwesbaarheid wat in die Bookly-inprop gevind is, omvattend analiseer. Daarbenewens sal ons die opdatering ondersoek wat vrygestel is om hierdie probleem effektief te versag.
ontleding CVE–2023-1159 – Geverifieerde (Admin+) Gestoorde Kruiswebwerf-skripting via Dienstitel:
Ons navorsing het 'n kwesbaarheid in die Bookly-inprop geïdentifiseer wat verband hou met die "Dienstitel"-veld. Hierdie kwesbaarheid stel die inprop bloot aan gestoorde kruiswebwerf-skripte (XSS)-aanvalle as gevolg van onvoldoende invoer-sanitasiemaatreëls. Dit is belangrik om daarop te let dat administrateurs die titel direk deur die inprop-koppelvlak kan wysig of instel.
Na verdere ondersoek het ons ontdek dat as 'n kwaadwillige titel binne die diens gestel word, dit sonder hul medewete of toestemming in die kliënt se blaaier weergegee en uitgevoer sal word wanneer hulle toegang tot die betrokke diens verkry. Hierdie uitvoering kan moontlik afstandkode-uitvoering moontlik maak, wat 'n aansienlike sekuriteitsrisiko inhou.
Om 'n meer akkurate begrip te bied, illustreer die volgende kodebrokkie hoe die waarde van die "Dienstitel"-veld ingestel en gelees word terwyl 'n nuwe diens geskep word:

Fig1. createService-metode, wat geroep word wanneer 'n nuwe diens geskep word.
'createService' roep weer die 'parameters'-metode aan.

Fig. 2 toon die parametermetode.
Binne die 'parameters'-metode is daar 'n oproep na die 'getRequest()'-funksie. Hierdie funksie is verantwoordelik vir die herwinning van die ingevoerde waardes vanaf die koppelvlak. Vervolgens word hierdie waardes na die 'createService'-metode deurgegee, waar hulle gestoor word. Dit is egter belangrik om te beklemtoon dat geen invoersanitasie tydens hierdie proses plaasvind nie, wat die stelsel kwesbaar maak vir potensiële sekuriteitsrisiko's.

Fig. 3. toon die getRequest-metode.
Onthulling van die oplossing: Ondersoek van die pleister
Nadat ons die opdatering ondersoek het wat die kwesbaarheid oplos, het ons vasgestel dat die $parameters-veranderlike behoorlike ontsmetting ondergaan het, wat potensiële sekuriteitsbreuke binne die program effektief voorkom. Hierdie noemenswaardige verbetering sluit die implementering van die 'unfiltered_html'-funksie en die 'stripScripts'-metode in, wat noodsaaklik is om die $parameters te ontsmet en potensiële aanvalle te verminder.
Deur die 'unfiltered_html'-funksie te gebruik, verseker die pleister dat slegs gemagtigde gebruikers met die nodige vermoë ongefilterde HTML-inhoud kan indien. Dit voorkom die bekendstelling van kwaadwillige skripte en verminder die risiko van kruiswebwerf-skriptaanvalle (XSS) aansienlik. Die 'stripScripts'-metode verbeter die ontsmettingsproses verder deur enige ingebedde JavaScript-kode binne $parameters te verwyder of te neutraliseer.
Oor die algemeen verseker hierdie omvattende benadering tot ontsmetting dat die $parameters-veranderlike veilig is vir gebruik dwarsdeur die kodebasis, wat die potensiaal vir sekuriteitskwesbaarhede verminder en die algehele sekuriteit van die program versterk.

Fig 4. wat die kol uitbeeld.
Gevolgtrekking
In hierdie blogplasing het ons 'n kwesbaarheid ondersoek wat in die Bookly-inprop ontdek is, wat geverifieerde aanvallers in staat gestel het om skadelike skrifte in te voeg, wat 'n bedreiging vir gebruikers se toestelle inhou. Gelukkig is hierdie kwesbaarheid in weergawe 21.8 opgedateer. Ons raai WordPress-webwerfeienaars aan om hul installasies onmiddellik op te dateer na die nuutste inpropweergawe, wat noodsaaklik is om potensiële aanvalle te verminder. Om te verseker dat opdaterings en regstellings betyds toegepas word, is van kardinale belang om 'n veilige aanlyn teenwoordigheid te handhaaf. Boonop, wanneer die 'unfiltered_html'-vermoë aan 'n gebruikersrol toegeken word, wees versigtig en ken dit slegs toe aan vertroude individue wat dit werklik benodig, met inagneming van die potensiële sekuriteitsimplikasies van hierdie vermoë.
Almal SEQRITE en Quick Heal-kliënte word beskerm teen enige aanvalle wat op hierdie kwesbaarheid gemik is deur die volgende handtekeninge:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Mede-outeur:
Anjali Rajkumar Raut


