Unsere letzten Blog Wir haben eine XSS-Sicherheitslücke im Bookly-Plugin (WordPress Online Booking and Scheduling Plugin – Bookly) untersucht. Heute beschäftigen wir uns mit einer weiteren XSS-Sicherheitslücke, die bei unseren Untersuchungen zum gleichen Plugin ans Licht kam.
Unser Team entdeckte diese Sicherheitslücke im März 2023. Nach ihrer Entdeckung leiteten wir umgehend Verfahren zur verantwortungsvollen Offenlegung ein, um sicherzustellen, dass die Sicherheitslücke umgehend behoben wird. Die zugewiesene CVE-Kennung für diese Sicherheitslücke lautet CVE-2023-1159 und wurde im Mai 2023 erfolgreich gepatcht.
In diesem Blogbeitrag analysieren wir umfassend die Ursache der Sicherheitslücke im Bookly-Plugin. Darüber hinaus untersuchen wir den Patch, der veröffentlicht wurde, um dieses Problem effektiv zu beheben.
Analyse CVE–2023-1159 – Authentifiziertes (Admin+) gespeichertes Cross-Site-Scripting über den Diensttitel:
Unsere Untersuchungen haben eine Sicherheitslücke im Bookly-Plugin im Feld „Servicetitel“ identifiziert. Diese Sicherheitslücke setzt das Plugin aufgrund unzureichender Eingabebereinigungsmaßnahmen gespeicherten Cross-Site-Scripting-Angriffen (XSS) aus. Wichtig zu beachten ist, dass Administratoren den Titel direkt über die Plugin-Oberfläche bearbeiten oder festlegen können.
Bei weiteren Untersuchungen stellten wir fest, dass ein schädlicher Titel, der innerhalb des Dienstes festgelegt wurde, beim Zugriff auf den Dienst ohne dessen Wissen oder Zustimmung im Browser des Clients gerendert und ausgeführt wird. Diese Ausführung kann möglicherweise die Remotecodeausführung ermöglichen, was ein erhebliches Sicherheitsrisiko darstellt.
Zum besseren Verständnis veranschaulicht der folgende Codeausschnitt, wie der Wert des Feldes „Servicetitel“ beim Anlegen eines neuen Dienstes gesetzt und ausgelesen wird:

Abb. 1. Methode „createService“, die aufgerufen wird, wenn ein neuer Dienst erstellt wird.
„createService“ ruft wiederum die Methode „parameters“ auf.

Abb. 2 zeigt die Parametermethode.
Innerhalb der Methode „parameters“ erfolgt ein Aufruf der Funktion „getRequest()“. Diese Funktion ruft die eingegebenen Werte aus der Schnittstelle ab. Anschließend werden diese Werte an die Methode „createService“ übergeben und dort gespeichert. Es ist jedoch wichtig zu betonen, dass während dieses Prozesses keine Eingabebereinigung stattfindet, wodurch das System potenziellen Sicherheitsrisiken ausgesetzt ist.

Abb. 3 zeigt die Methode getRequest.
Enthüllung des Fixes: Untersuchung des Patches
Bei der Untersuchung des Patches, der die Sicherheitslücke behebt, stellten wir fest, dass die Variable $parameters ordnungsgemäß bereinigt wurde, wodurch potenzielle Sicherheitsverletzungen im Programm wirksam verhindert wurden. Diese bemerkenswerte Verbesserung umfasst die Implementierung der Funktion „unfiltered_html“ und der Methode „stripScripts“, die für die Bereinigung der Variable $parameters und die Abwehr potenzieller Angriffe von entscheidender Bedeutung sind.
Durch die Verwendung der Funktion „unfiltered_html“ stellt der Patch sicher, dass nur autorisierte Benutzer mit den erforderlichen Berechtigungen ungefilterte HTML-Inhalte übermitteln können. Dies verhindert die Einführung schädlicher Skripte und reduziert das Risiko von Cross-Site-Scripting-Angriffen (XSS) erheblich. Die Methode „stripScripts“ verbessert den Bereinigungsprozess zusätzlich, indem sie eingebetteten JavaScript-Code in $parameters entfernt oder neutralisiert.
Insgesamt stellt dieser umfassende Ansatz zur Bereinigung sicher, dass die Variable $parameters im gesamten Code sicher verwendet werden kann, wodurch das Potenzial für Sicherheitslücken minimiert und die allgemeine Sicherheit des Programms gestärkt wird.

Abb. 4 zeigt den Patch.
Fazit
In diesem Blogbeitrag haben wir eine im Bookly-Plugin entdeckte Sicherheitslücke untersucht, die es authentifizierten Angreifern ermöglichte, schädliche Skripte einzufügen und so die Geräte der Nutzer zu gefährden. Diese Sicherheitslücke wurde in Version 21.8 behoben. Wir empfehlen WordPress-Website-Betreibern, ihre Installationen umgehend auf die neueste Plugin-Version zu aktualisieren, um potenzielle Angriffe abzuwehren. Die rechtzeitige Installation von Updates und Patches ist entscheidend für die Sicherheit Ihrer Online-Präsenz. Seien Sie außerdem vorsichtig, wenn Sie einer Benutzerrolle die Berechtigung „unfiltered_html“ zuweisen und diese nur vertrauenswürdigen Personen zuweisen, die sie wirklich benötigen. Bedenken Sie dabei die potenziellen Sicherheitsrisiken dieser Berechtigung.
Alle SEQRITE Quick Heal-Kunden sind durch die folgenden Signaturen vor jeglichen Exploits, die diese Schwachstelle ausnutzen, geschützt:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Mitverfasser:
Anjali Rajkumar Raut



