WordPress sicherer machen: Benutzernamen in Archiven verstecken

29. Januar 2015 | Ca. 4 Minuten Lesedauer

In letzter Zeit erhielt ich von einer der WordPress-Seiten die ich betreibe Warnmeldungen, weil Loginversuche stattfanden, die aufgrund eines falschen Passwortes aber fehlschlugen. Neben dem "dummen" Versuch den Standard-Benutzer "admin" anzugreifen, erfolgten dabei auch Zugriffe auf existierende Benutzer. Das wunderte mich und deshalb bin ich der Sache nachgegangen.

Woher kennen die meinen Namen?

Zunächst war ich verwundert darüber, dass da real existierende Nutzernamen auftauchten. Bruteforce-Angriffe auf den Standardbenutzer gehören zur Tagesordnung, schlagen aber fehl, weil der nicht existiert. Das kann man von außen allerdings nicht feststellen (gut, kann man schon, dazu gleich).

Woher aber wussten die Angreifer, welche Benutzer in der Installation existieren und woher nicht? Das sind teilweise kryptische Benutzernamen, die sich auch nicht aus den öffentlich angezeigten Namen, also sowas wie „Autor ist Max Mustermann“ herleiten lassen. Dieser Anzeigename ist nämlich nicht als Login geeignet, entsprechende Versuche verweigert WordPress.

Wie sich rausstellte, grundsätzlich war mir das bekannt, dann mit diesem Detail aber auch wieder nicht, legt WordPress Archive für jeden einzelnen Autor an. So kann man auf Blogs mit mehreren Autoren zum Beispiel komfortabel gucken, was ein Autor so geschrieben hat, grundsätzlich also eine gute Funktion.

Wenn man allerdings rückwärts sucht, dann findet man darüber auch alle Autoren, die existieren. Das funktioniert so, dass WordPress über seine Permalinks automatisch Weiterleitungen zu den Autorenarchiven erstellt. Über flomei.de/?author=1 würde man das Archiv des ersten Nutzers erreichen, und da kann man natürlich ruckzuck mal die Zahlen von 1 bis 100 durchprobieren und schauen, wo man weitergeleitet wird und wo eine Fehlerseite auftaucht.

Das Brisante dabei: Standardmäßig wird in der Archiv-URL auf der man landet der Loginname des Benutzers verwendet, der dann als gültiger Nutzername für Bruteforce-Angriffe verwendet werden kann.

Wie behebt man diesen Fehler?

Ob Fehler oder Feature sei mal dahin gestellt, eine Lösung gibt es auf jeden Fall. Allerdings braucht man die vielleicht gar nicht.

Einige Themes bieten überhaupt kein Autoren-Archiv an, dort würden entsprechende Aufrufe gemäß der Template Hierarchie auf eine normale Archivseite oder sogar die index.php weitergeleitet werden, so dass keine Logins ausgeschnüffelt werden können. flomei.de verhält sich auch so, lediglich gültige Nutzer-IDs können dann noch ermittelt werden, aber darin sehe ich kein Sicherheitsrisiko. Also kann man hier auf weitere Sicherheitsmaßnahmen verzichten.

Wer eine WordPress-Installation mit einem Theme betreibt, das entsprechende Archiv-Seiten bereitstellt, der sollte über den Einsatz des „WP Author Slug“-Plugins nachdenken. Dieses Plugin, der Code ließe sich natürlich auch extrahieren und in die functions.php des Themes integrieren, ändert die Permalinks der Archivseiten so ab, dass statt dem Nutzernamen (= Loginnamen) der Anzeigename des Autors in der URL verwendet wird. Rückschlüsse auf den Login, und damit die Angriffsmöglichkeit, werden so ausgeschlossen.