Die Ursache von Click2Shell liegt in einer unterschiedlichen Interpretation ein und desselben Werts: Ein Parameter in der URL für die Theme-Vorschau von WordPress wird von der Themes-API anders verarbeitet als von dem JavaScript, das im Browser des Administrators läuft.

„Die API reduziert den Wert auf einen gewöhnlichen Theme-Slug. Der Browser behält die ursprüngliche Zeichensetzung bei und platziert sie in einem jQuery-Selektor", erklärt pwn.ai. Dieser Unterschied erlaubt es einem nicht authentifizierten Angreifer, die Installation eines von ihm ausgewählten Themes auf der Website des Administrators zu erzwingen. Das Theme wird dabei ohne Wissen und ohne Zustimmung des Betreibers aus dem offiziellen Katalog von WordPress.org bezogen.

Dass das Theme anschließend inaktiv bleibt, entschärft das Problem nicht. pwn.ai stieß bei WordPress auf mehr als 40 Themes von Drittanbietern, die sich auch im inaktiven Zustand für die Ausführung von PHP-Code missbrauchen lassen. Grund dafür ist, dass WordPress deren PHP-Code während der Vorschau im Customizer lädt – selbst dann, wenn ein anderes Theme aktiv ist.

Anzeige

Über die ungeschützten Installationsroutinen dieser Themes kann ein Angreifer auf ein manipuliertes Plugin-Paket verweisen, das dann unter dem Serverkonto von WordPress ausgeführt wird. „Es wird kein WordPress-Konto des Angreifers benötigt. Ein einziger Besuch eines angemeldeten Nutzers genügt, und der Angreifer besitzt die Website", fasst pwn.ai zusammen. Das Unternehmen hat technische Details sowie Proof-of-Concept-Code zu der Schwachstelle veröffentlicht.

Als weiteren kritischen Punkt hebt pwn.ai hervor, dass Administratoren von dem Vorgang nichts bemerken dürften: Das Haupt-Theme der Seite bleibt während der Ausnutzung aktiv, sichtbare Veränderungen an der Website treten also nicht auf.

WordPress hat Click2Shell und die zehn weiteren Schwachstellen mit Version 7.1.1 geschlossen. Korrekturen flossen zudem in Aktualisierungen für ältere Ausgaben des CMS ein, zurück bis WordPress 4.7. Für den Fund zahlte WordPress an pwn.ai 300 US-Dollar – den Höchstbetrag des eigenen Bug-Bounty-Programms.