Über XML-RPC

XML-RPC ist ein Protokoll für Remote Procedure Calls, das XML für den Datenaustausch verwendet. Bei XML-RPC erstellt der Client, der eine Methode auf einem entfernten System aufrufen möchte, die Eingabeparameter im XML-Format und sendet sie per HTTP-Anfrage an einen entfernten Server, der das XML-RPC-Protokoll implementiert.

XML-RPC in WordPress verstehen

WordPress ist eine vollständige Blogging-Plattform. Sie ist äußerst anpassbar und erleichtert die Entwicklung einer Website. Mit WordPress XML-RPC lassen sich WordPress-Blogging-Clients erstellen sowie andere Programme, die Stapelaufgaben ausführen, zum Beispiel das Erstellen mehrerer Beiträge aus einer Datei. Das XML-RPC-System kann durch WordPress-Plugins erweitert werden, um sein Verhalten zu verändern. Die XML-RPC-Funktionalität ist seit WP 3.5 standardmäßig aktiviert. XML-RPC ist standardmäßig aktiviert – insbesondere für mobile Geräte und Desktop-Apps von Drittanbietern, die darüber mit WordPress kommunizieren.

Das Problem bei XMLRPC besteht darin, dass es zu einer Erschöpfung von CPU und Arbeitsspeicher führen kann und die Datenbank der Website die maximale Anzahl offener Verbindungen erreicht. Dadurch fällt die verwundbare Website (und der Server) für einen gewissen Zeitraum aus, was die Verfügbarkeit Ihrer Website beeinträchtigt.

Die XML-RPC-API von WP kann von Angreifern auf vier Arten missbraucht werden:

  • Informationsbeschaffung – Ein Angreifer kann gezielt nach bestimmten Ports im internen Netzwerk des Ziels suchen
  • Port-Scanning – Ein Angreifer kann Hosts im internen Netzwerk per Port-Scan untersuchen
  • DoS-Angriffe – Neben der Datenübertragung ist xmplrpc.php auch für die Aktivierung von Pingbacks und Trackbacks zuständig. Dies sind Benachrichtigungen, die Sie erhalten, wenn ein Blog oder eine Website eines Drittanbieters auf Ihre Website verlinkt. Obwohl diese Funktion ersetzt wurde, verwenden einige Websites aus Gründen der Abwärtskompatibilität weiterhin XML-RPC.php. Falls dies auch bei Ihnen der Fall ist, können Angreifer DDoS-Angriffe auf xmlrpc.php starten, indem sie eine große Anzahl von Pingbacks senden und Ihre Website lahmlegen, also für Ihre Nutzer unerreichbar machen.
  • Router-Hacking – Ein Angreifer kann einen internen Router im Netzwerk neu konfigurieren
  • Brute-Force-Angriffe - XML-RPC (XML Remote Procedure Call) ermöglicht kodierte Remote-Aufrufe über HTTP, mit denen Sie Dateien oder Inhalte Ihrer WordPress-Website aus der Ferne veröffentlichen, bearbeiten oder löschen können. Bei jeder Anfrage sendet xmplrpc.php die Authentifizierungsdaten mit. Dadurch lassen sich große Datenmengen bequem auf einmal übertragen. Die Möglichkeit, große Datenmengen auf einmal zu übertragen, bedeutet jedoch auch, dass Angreifer ebenfalls eine Vielzahl von Passwörtern einschleusen können. Sendet ein Angreifer genügend Authentifizierungsanfragen mit unterschiedlichen Kombinationen aus Benutzername und Passwort, errät er die richtige womöglich irgendwann, und Ihre Website wird kompromittiert.

Prüfen, ob XML-RPC auf Ihrem Blog bereits deaktiviert ist

Bevor wir fortfahren, sollten Sie in einer einfachen Prüfung feststellen, ob XML-RPC auf Ihrem Blog aktiviert ist. Rufen Sie dazu die Datei xmlrpc.php in Ihrem Browser auf, indem Sie die folgende URL aufrufen https://domain.com/xmlrpc.php (ersetzen Sie domain.com durch Ihren Domainnamen).

Ist XML-RPC deaktiviert, erhalten Sie die Meldung „403 – Forbidden“. Erhalten Sie eine andere Meldung, lesen Sie weiter, um Ihre Möglichkeiten zur Absicherung kennenzulernen.

Codebasierte Schutzmaßnahmen und Workarounds

1. Wenn Sie die XML-RPC-Funktionalität nicht benötigen, fügen Sie zum Schutz vor Sicherheitslücken die folgenden Zeilen in die Datei .htaccess ein:

# protect xmlrpc
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>

2. Um Anfragen an xmlrpc.php auf eine benutzerdefinierte Seite umzuleiten, passen Sie RedirectMatch wie folgt an:

# protect xmlrpc
Redirect 301 /xmlrpc.php http://example.com/custom-page.php

3. Gesamten Zugriff auf xmlrpc.php verweigern:

# protect xmlrpc
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

4. Zugriff auf xmlrpc.php nur für bestimmte IP-Adressen erlauben.

# protect xmlrpc
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from <IP>
Allow from <IP>
</Files>

Sie können außerdem den folgenden Code nach der Zeile require_once(ABSPATH . ‘wp-settings.php’); in Ihre Datei wp_config.php einfügen, wenn Sie XML-RPC für Ihre Website deaktivieren möchten.

add_filter('xmlrpc_enabled', '__return_false');