
Authentifiziertes gespeichertes Cross-Site-Scripting (XSS) im Contact-List-Plugin
Haftungsausschluss: Dieses Repository dient ausschließlich zu Bildungszwecken und zur ethischen Offenlegung. Die Schwachstelle wurde verantwortungsvoll an den Anbieter gemeldet und behoben. Verwenden Sie diese Informationen nicht, um Systeme ohne entsprechende Autorisierung auszunutzen.
Eine Stored Cross-Site Scripting (XSS)-Schwachstelle wurde im Contact List - Online Staff Directory & Address Book-Plugin für WordPress (Versionen <= 3.0.17) entdeckt. Diese Schwachstelle erlaubt es authentifizierten Benutzern mit Autor-Rechten oder höher, bösartigen JavaScript-Code über ein verstecktes benutzerdefiniertes Feld in Kontaktkarten einzuschleusen.
Wenn die Kontaktkarte im öffentlichen Verzeichnis gerendert wird, führt die eingeschleuste Payload im Browser jedes Besuchers aus. Falls ein Administrator die Seite aufruft, kann dieser Fehler zu einer vollständigen Account-Übernahme (ATO) und einer Kompromittierung der Website eskalieren.
<= 3.0.17Die Schwachstelle rührt von unzureichender Bereinigung und unsicherer Ausgabe des benutzerdefinierten Feldes _cl_map_iframe her, das zum Einbetten von Karten-Iframes vorgesehen ist.
1. Unsichere Datenspeicherung:
In includes/class-contact-list-custom-fields.php (in saveCustomFields()) verarbeitet das Plugin die Eingabe von _cl_map_iframe mit einem regulären Ausdruck, um einen ``
6. Leiten Sie die Anfrage weiter. Der Server speichert das bösartige iframe.
7. Auslösen: Besuchen Sie die öffentliche Verzeichnisseite, auf der [contact_list] eingebettet ist. Das Alert-Fenster wird sofort ausgelöst, was die Codeausführung bestätigt.
POST /wp-admin/post.php HTTP/1.1
Host: TARGET
Content-Type: application/x-www-form-urlencoded
Cookie: [Author_Session_Cookies]
post_title=Hacked+Contact&post_type=contact&action=editpost&_cl_map_iframe=
Um diese Schwachstelle zu beheben, müssen die Plugin-Entwickler Folgendes tun:
wp_kses() mit einem strengen Array erlaubter HTML-Tags und -Attribute beim Speichern von _cl_map_iframe. Verbieten Sie Attribute wie onload, onerror oder javascript:-URIs.