1. 1. Vorspiel zum Einbruch
  2. 2. Schönheitsfehler
  3. 3. Schweigen lehren

Wordpress Nutzernamen auslesen

Benjamin Mylius

Manchmal beginnt ein Angriff nicht mit einem lauten Knall, sondern mit einem stillen Aufruf. Eine unscheinbare URL, ein kurzer Request und plötzlich liegt vor dem Angreifer ein Menü mit allen aktiven Nutzern deiner WordPress-Seite. Kein Passwort nötig, kein Login, kein Trick. Nur ein öffentlicher Endpunkt, den WordPress großzügig zur Verfügung stellt: /wp-json/wp/v2/users.

Für viele Betreiber klingt das banal. "Na und? Das sind doch nur Namen." Doch in den Schatten der digitalen Welt weiß man: Ein Benutzername ist keine harmlose Information. Er ist der halbe Schlüssel zur Tür.

Vorspiel zum Einbruch

Wer sich bereits länger im Internet aufhält, weiß, dass Angriffe selten blind stattfinden. Sie beginnen mit Erkundung. Mit Geduld. Mit dem Sammeln von Daten. Ein Skript, kaum zwanzig Zeilen lang, kann in wenigen Minuten tausende Seiten abklappern und deren Benutzerverzeichnisse offenlegen.

Ich habe vor kurzem etwa 8.500 WordPress-Installationen geprüft. Keine komplizierte Aktion, kein Hack. Nur ein Test. Das Ergebnis war erschreckend banal: In fast allen Fällen ließen sich die Benutzer ganz einfach abrufen. Kein Passwortschutz, keine Authentifizierung, nichts.

Und was ich dort fand, war fast schon tragikomisch: Nutzer mit den Namen admin, administrator oder test. Es war, als würden sie ihre Türen weit öffnen und ein Schild aufstellen: “Willkommen. Versuch dein Glück.”

Schönheitsfehler

Natürlich, die REST-API ist an sich keine Sicherheitslücke. Sie ist ein mächtiges Werkzeug für Entwickler, für Headless-Systeme, für Integrationen. Aber sie ist eben auch ein offenes Fenster, wenn man vergisst, die Jalousien herunterzulassen.

Ein Angreifer, der deine Benutzernamen kennt, muss nicht mehr raten, wer sich hinter dem Login verbirgt. Statt mögliche Kombinationen von Nutzername und Passwort zu probieren, kann er sich voll und ganz auf das Knacken der Passwörter konzentrieren. Das spart ihm die Hälfte der Arbeit und du hast keine Ahnung, dass er längst an deiner Tür rüttelt.

Oft ist es nicht einmal ein Mensch, der das tut. Es sind Bots, automatisierte Scanner, kleine Programme, die Tag und Nacht das Netz durchforsten. Sie suchen nach genau diesem Endpunkt. Nach Seiten, die sie “katalogisieren” können. Und wenn sie fündig werden, landet deine Domain auf einer Liste als potenzielles Ziel.

Schweigen lehren

Man kann WordPress beibringen, still zu bleiben. Es ist nur eine Handvoll Zeilen Code, aber sie wirkt wie ein Maulkorb für die neugierige REST-API:

function disable_rest_user_endpoints( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P[\d]+)'] );
}

return $endpoints;
}
add_filter( 'rest_endpoints', 'disable_rest_user_endpoints' );

Speicher das in deiner functions.php, lösche den Cache, und prüfe selbst, ob deine Seite nun schweigt. Wenn du beim Aufruf der URL nur noch eine kryptische Fehlermeldung siehst: rest_no_route, Status 404, dann hast du das Leck geschlossen. Kein neugieriger Besucher bekommt deine Benutzerliste mehr serviert.

| Nächster |