WordPress-Sicherheit: Die XML-RPC-Schnittstelle abschalten

Seit der WordPress-Version 3.5 ist die XML-RPC-Schnittstelle standardmäßig aktiviert. Das wäre nicht weiter schlimm, wenn WordPress nicht das beliebteste Content Management System der Welt wäre. Denn die Schnittstelle stellt nicht nur nützliche Funktionen bereit, sondern dient auch als ein wichtiges Angriffsziel für Hacker. Die Angreifer nutzen immer mehr die xmlrpc.php für ihre Brute-Force-Angriffe gegen WordPress, weil ein Angriff gegen diese Schnittstelle wesentlich effizienter und mit weniger Aufwand als andere Methoden verbunden ist.

WordPress-Sicherheit: Die XML-RPC-Schnittstelle abschalten

Dazu dient die XML-RPC-Schnittstelle

Die xmlrpc.php

Die Schnittstelle ist ein nützliches Werkzeug für die Verwaltung von Inhalten. Sie dient dazu, dass man mittels der Desktop– und der Smartphone-Apps die Website verwalten und Artikel verfassen kann. Ebenso kümmert sie sich um Pingbacks. Die Pingback-API ermöglicht eine Art »Vernetzung« zwischen den Blogs und dient gleichzeitig als Schnittstelle, um WordPress über externe Programmen verwalten zu können. Unterstützt werden neben der WordPress API auch die Blogger API, die metaWeblog API, die Movable Type API, und die Pingback API.

Die meisten Nutzer brauchen diese Schnittstelle jedoch nicht, weil sie ihre Artikel direkt in WordPress verfassen. Und auf die Pingbacks von anderen Blogs könnte man durchaus verzichten.

Deshalb ist die xmlrpc.php ein Sicherheitsrisiko

Passwortgeschützte Bereiche sind ein beliebtes Angriffsziel. Auch die xmlrcp.php gehört zu diesen Bereichen. Da jedoch immer mehr Blogger den Adminbereich ihrer Website absichern, fokussieren sich die Angreifer nun auf die Verwaltungs-Schnittstelle und lassen ihre Brute-Force-Angriffe auf dieses Ziel laufen. Problematisch ist hierbei, dass sich die Angriffe auf die XML-RPC-Schnittstelle wesentlich effektiver ausführen lassen, als es bei einem Angriff auf den Adminbereich von WordPress der Fall wäre.

Mit den geeigneten Tools lassen sich bei nur einer Anfrage an die Schnittstelle unglaubliche 500 Passwörter unterbringen. Die Datei ermöglicht es den Angreifern, über Funktionsaufrufe an wp.getUsersBlogs oder wp.getComments Kombinationen von Benutzernamen und Passwort zu erproben. Sobald ein Hacker Benutzername und Passwort sendet, wird die xmlrpc.php entsprechende Rückmeldung geben, ob die Kombination korrekt ist oder nicht.

Das macht das Hacken einer WordPress-Installation über diesen Weg sehr effektiv und aussichtsreich. Somit stellt die zumeist ungenutzte Schnittstelle ein erhebliches Sicherheitsrisiko dar und sollte zügig abgeschaltet werden. Ein weiterer, eher genereller Vorteil des Abschaltens nicht genutzter Funktionen ist die Erhöhung der Performance einer Website.

Die XML-RPC-Schnittstelle abschalten

Seit der WordPress-Version 3.5 ist die XML-RPC Schnittstelle standardmäßig aktiviert. Früher liess sie sich noch ganz einfach deaktivieren, heute ist dies nur noch über Umwege möglich. Doch diese Umwege sind nicht zu schwierig. Insgesamt sind drei Schritte nötig, um die Schnittstelle komplett abzuschalten und sämtliche Anfragen an sie zu unterbinden.

Teil eins: Die Schnittstelle über einen Filter abschalten

Folgender Code muss in die functions.php des Themes eingetragen werden.

Ein Klick auf die Grafik öffnet das Gist bei GitHub
xml-rpc-filter

Die Schnittstelle ist nun komplett deaktiviert. Allerdings erscheint die Schnittstelle noch im HTTP-Header der Website.

Teil 2: Den HTTP-Header Eintrag deaktivieren

http-header

Was noch angezeigt wird, kann auch angefragt werden. Das stellt vielleicht kein Sicherheitsrisiko mehr dar, allerdings kann es durchaus die Performance der Website beeinträchtigen. Daher muss dieser Eintrag entfernt werden. Auch dieser Code-Schnipsel kommt in die functions.php eures Themes. Hier der vollständige Code mit dem Filter aus dem ersten Teil:

Ein Klick auf die Grafik öffnet das Gist bei GitHub
Die XMLRPC-Schnittstelle abschalten und den HTTP-Header entfernen

Teil 3: Die xmlrpc.php via .htaccess blocken

Solange unser WordPress noch Zugriff auf die xmlrpc.php hat, entstehen natürlich versteckte Zugriffe auf die Datei. Das kommt der Performance der Website nicht gerade zugute, also sollte die Datei noch einmal per .htaccess-Datei geblockt werden.

Wichtig vorab: vor jeder Änderung an der .htaccess, bitte ein Backup der Datei erstellen!

Ein Fehler bei einer Änderung der Datei kann eine nicht mehr funktionierende Website zur Folge haben. Zu beachten gilt ebenfalls, dass die .htaccess unter Mac OS X als Systemdatei gilt, aufgrund des Punktes vor dem Dateinamen. Das sorgt dafür, dass die Datei nicht angezeigt wird, sobald sie sich auf dem Desktop befindet. Man kann die versteckten Dateien entweder über das Terminal oder über ein Dashboard-Widget anzeigen lassen.

Folgenden Eintrag bitte in die .htaccess-Datei im Hauptverzeichnis der WordPress-Installation kopieren. Der Eintrag sollte oberhalb von #Begin WordPress stehen. Die Datei lässt sich mit einem Texteditor wie Notepad oder TextEdit öffnen und bearbeiten.

Das Hauptverzeichnis einer WordPress-Installation
hauptverzeichnis

Ein Klick auf die Grafik öffnet das Gist bei GitHub
htaccess

Fazit

Diese drei kleinen Schritte haben WordPress wesentlich sicherer gemacht. Ein Angriff über die xmlrpc.php ist nun unmöglich, auch Anfragen an die Datei werden nicht mehr beantwortet, was zudem der Performance zuträglich ist. Allerdings sollte klar sein, dass WordPress nun keine Pingbacks mehr empfängt und sich natürlich auch nicht mehr mit Apps jeglicher Art verwalten, beziehungsweise füllen lässt. Doch das dürfte nur ein kleiner Wermutstropfen sein, der den erheblichen Sicherheitsgewinn nicht schmälert.

Quelle: WordPress: Angriffe auf die XMLRPC-Schnittstelle (xmlrpc.php) unterbinden

(dpe)

ist freier Journalist, Spezialist für WordPress und WordPress Sicherheit und schreibt seit 2012 für Dr. Web. Nebenbei ist er Autor mehrerer E-Books zu den Themen Lebenshilfe, Marketing und WordPress. Auf seinem Blog TechBrain.de schreibt er über das Schreiben und Bloggen und veröffentlicht nützliche WordPress-Snippets.

Sortiert nach:   neueste | älteste | beste Bewertung
Stefan Steinbach
Dr. Web Crew
7 Monate 10 Tage her

Danke für die Anleitung.
Ich hab jetzt noch eine andere Frage. Kann es sein das Plugins wie Limit Login Attempts das schon verhindern oder Caching Tools wie W3 Total Cache? Weil wenn ich Seiten von mir überprüfe bekomme ich keinen X-Pingback angezeigt im Header Http.

Kann ich es irgendwie testen ob es geklappt hat? Außer mit Chrome auslesen?

Schöne Grüße
Stefan

Stefan Steinbach
Dr. Web Crew
7 Monate 4 Tage her

Ist meine Frage so lächerlich, dass man nicht mal eine kurze Antwort bekommt?

Stefan Steinbach
Dr. Web Crew
6 Monate 27 Tage her

Danke für die Antwort, dann muss ich da noch mal meine andere Seiten überprüfen die auf anderen Servern liegen.

Zu dem PlugIn Limit Login Attempts bin ich ein bisschen verwirrt, ich hab mir das eigentlich nur installiert weil es hier empfohlen wurde, sogar von ihnen.
Ebenso versteh ich nicht was sie meinen mit, es wird nur eine IP geblockt?
Wenn ich in das Plugin schaue sehe ich dort jede IP Adresse die gesperrt wurde.

Bedeutet das, dass diese nur da stehen und nicht mehr geblockt werden oder wie muss ich das verstehen?

Schöne Grüße
Stefan

Stefan Steinbach
Dr. Web Crew
6 Monate 27 Tage her
trackback

[…] der Suchmaschinenoptimierung problematisch. Zudem kann das Feature auch dazu genutzt werden, einen Server anzugreifen und lahmzulegen. Außerdem kann man durch diese Vorgehensweise leicht mit dem Leistungsschutzrecht in Konflikt […]

trackback

[…] Detailliertere Informationen erhalten ihr unter: http://www.drweb.de/magazin/wordpress-sicherheit-die-xml-rpc-schnittstelle-abschalten-68045/ […]

SecUpOwn
Gast
SecUpOwn
6 Monate 21 Tage her

Lustig, wenn sogar ganze Sätze von anderen Blogs kopiert werden. Der „original“ Beitrag ist jedenfalls hier zu finden: https://www.kuketz-blog.de/wordpress-angriffe-auf-die-xmlrpc-schnittstelle-xmlrpc-php-unterbinden/

;-)

Dieter Petereit
Dr. Web
6 Monate 21 Tage her

Dann wäre ich an Belegen interessiert. Wir verwenden Copyscape und konnten keinerlei Kopiererei feststellen. Das Thema haben wir natürlich nicht erfunden. Das waren die Jungs von Automattic ;-)

SecUpOwn
Gast
SecUpOwn
6 Monate 18 Tage her

Beispiel kommt:
Die Pingback-API ermöglicht eine Art »Vernetzung« zwischen den Blogs und dient gleichzeitig als Schnittstelle, um WordPress über externe Programmen verwalten zu können.

Sogar inklusive der Hochkommatas – das nenn ich Copy&Paste. ^^

SecUpOwn
Gast
SecUpOwn
6 Monate 18 Tage her

1 Beispiel:
Die Pingback-API ermöglicht eine Art »Vernetzung« zwischen den Blogs und dient gleichzeitig als Schnittstelle, um WordPress über externe Programmen verwalten zu können.

Sogar inklusive der Hochkommatas – das nenn ich Copy&Paste. ^^

wpDiscuz