2018-11-29 5 Minuten

WordPress: Plugins installieren ist wie Öffis fahren

Wenn ein DSGVO-Plugin deine Webseite verwundbar macht.

Es ist Montag, 10 Uhr. Ich komme ins Büro und checke erstmal Facebook. Ich sehe eine große Anzahl an Beiträgen in einer WordPress-Development-Gruppe, die da lauten:

WP GDPR Compliance Plugin gehackt!

ohshit.jpg

Das ist nicht gut.

Schnell finde ich einen ausführlichen Artikel von Wordfence: Privilege Escalation Flaw In WP GDPR Compliance Plugin Exploited In The Wild.

“Exploited in the Wild” heißt hier so viel wie: du musst Angst haben.

Warum Plugins oft eine schlechte Idee sind

Da draußen laufen viele “Web”-Agenturen herum, die Webseiten mit Standard-Themes und einer teilweise unüberschaubaren Menge an Plugins “programmieren”. Nur: je mehr Plugins auf deiner Webseite sind, desto schlimmer wird deine technical debt – sprich: die Seite wird instabiler, und bietet eine größere Angriffsfläche.

Im Kopf gehe ich die von mir programmierten Webseiten durch. Nein, in meinem DSGVO-Hustle habe ich nicht auf Plugins zurückgegriffen, sondern die IP-Protokollierung usw. manuell ausgeschalten.

Nur:

Ich habe nicht nur von mir programmierte Webseiten in meinem Portfolio.

Und von denen hats eine erwischt.

Zeit für die Incident Response. Das muss jetzt angegangen werden.

Was ist passiert?

Das Plugin, das Webseiten DSGVO-konform machen soll, hat sie im Endeffekt unsicher gemacht.

Mit ein paar Tricks kann sich jede beliebige Person einen Administrator-Zugriff auf deiner Webseite gönnen. Nicht gut. Ich steige also in die eventuell betroffene Webseite ein, um zu checken, ob ein Angriff stattgefunden hat.

Aus der eventuell betroffenen Webseite wird eine betroffene Webseite.

Unter den Nutzern finde ich Folgendes:

Zwei Admins, die da nicht hingehören.

An diesem Zeitpunkt darf man als Webseitenbesitzer ein wenig Panik haben: Wer einen Admin-Zugang besitzt, besitzt im Prinzip die gesamte Webseite – Kundendaten und alles.

Einzig die Namensgebung der Nutzer lässt mich hoffen: dass das Wort “Troll” (Internet-Slang für eine Person, die andere nur provoziert) im Namen steckt könnte darauf hindeuten, dass der Angreifer nur ein bisschen auf den Tisch hauen wollte. Ein harmloser Rundumschlag?

Auch dass zehntausende Webseiten betroffen sind, ist in diesem Fall ein Grund zur Hoffnung. Es ist also auch nicht persönlich gemeint.

Die Sicherheitslücke

Das Plugin WP GDPR Compliance prüft beim Speichern der Optionen nicht richtig ab, welche Optionen geändert werden. Dies kann ein Angreifer ausnutzen, um jegliche Optionen einer WordPress-Seite zu ändern.

Die Schritte des Angriffs sind also:

  1. Anpassen der Optionen default_role und user_can_register
  2. Normale Registrierung eines Nutzers
  3. Dieser Benutzer ist nun Administrator

user_can_register schaltet die Registrierung für diese Webseite aktiv. default_role macht jeden neu registrierten Benutzer zum Administrator.

Auf der betroffenen Webseite äußert sich das so:

  1. User geht auf die Startseite

    109.234.37.214 – – [08/Nov/2018:14:26:37 +0100] „GET / HTTP/1.1“ 200 84282 „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“

  2. Es werden die Optionen default_role und user_can_register via POST auf admin-ajax.php angepasst

    109.234.37.214 – – [08/Nov/2018:14:26:39 +0100] „POST /wp-admin/admin-ajax.php HTTP/1.1“ 200 25 „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“
    109.234.37.214 – – [08/Nov/2018:14:26:41 +0100] „POST /wp-admin/admin-ajax.php HTTP/1.1“ 200 25 „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“

  3. Es wird ein User registriert

    109.234.37.214 – – [08/Nov/2018:14:26:42 +0100] „POST /wp-login.php?action=register HTTP/1.1“ 302 – „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“
    # Register went through
    109.234.37.214 – – [08/Nov/2018:14:26:43 +0100] „GET /wp-login.php?checkemail=registered HTTP/1.1“ 200 5976 „/wp-login.php?action=register“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“

  4. Die Optionen werden wieder auf ihren Standardwert zurückgesetzt

    109.234.37.214 – – [08/Nov/2018:14:26:44 +0100] „POST /wp-admin/admin-ajax.php HTTP/1.1“ 200 25 „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“
    109.234.37.214 – – [08/Nov/2018:14:26:45 +0100] „POST /wp-admin/admin-ajax.php HTTP/1.1“ 200 25 „-“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36“

Ich liebe es, die Anatomie eines Angriffes anzusehen. Die Betreiber dieser Webseite waren nicht so entspannt.

Ist Schaden angerichtet worden?

Angesichts der DSGVO muss man heutzutage sehr haglich mit den eigenen Kundendaten sein. Auf der betroffenen Webseite sind einige Personen registriert.

Ich muss also herausfinden, ob ein Zugriff stattgefunden hat.

Hier kommt mir ein Plugin auf der Webseite entgegen, das die Logins eines jeden Users zählt. Bei beiden Angreifer-Usern ist diese Zahl 0.

Puh. Glück gehabt.

Dennoch, hier muss ich auf Nummer sicher gehen.

Ich sehe mir die Logfiles genauer an. Wie oben zu erkennen ist, verwendet der Angreifer immer die selbe IP-Adresse (109.234.37.214). Ich filtere alle Zugriffe nach dieser IP und finde…

Nichts.

Nicht nur hat sich der Angreifer nie eingeloggt, auch sonst haben keine Zugriffe von der angreifenden IP Adresse auf die Webseite stattgefunden.

Fazit

Glück im Unglück.

Mit einem Update des Plugins und dem Löschen der User war diese Situation bereinigt. Dieser Angriff hätte aber weit schlimmer ausgehen können. Normalerweise wird in solchen Fällen sofort versucht, die Webseite für die eigenen Agenden zu nutzen (Spam versenden, Usern Schadsoftware unterjubeln, Kundendaten abgreifen) oder eine Art Persistence (also dauerhafte Präsenz) einzurichten.

In der DSGVO-Panik hat jemand dieses Plugin programmiert, über 100.000 Installationen erreichen können – und somit sehr vielen Webseitenbesitzern den Tag versaut.

Plugins installieren ist wie U-Bahn fahren. Man weiß nie, welchen Virus man sich möglicherweise einfängt. Aber oft geht’s dann einfach schneller, als zu Fuß zu gehen. Ein Risiko, das man abschätzen muss.

Von Hackern, Wordpress, SEO & Co

  • Wo kommt mein Spam her?
  • Wie leicht ist es, eine Wordpress Seite zu hacken?
  • Wie Umzugsfirmen ihre Gaunereien mit SEO umsetzen

...wöchentlich in deiner Inbox! 🚀

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.