Wie finden Hacker den Namen des Administrators heraus?

Apr 22, 2020 | WordPress

Sie haben also den Standard-Benutzernamen geändert, und bei Ihren Posts wird der Benutzername auch nicht angezeigt. Komisch nur, dass in den Server-Logdateien zu sehen ist, wie Hacker zielsicher unter Benutzung des Administratornamens versuchen, sich Zugang zur Website zu verschaffen. Wie kann das sein? Sie können selbst testen, ob bei Ihnen eine Sicherheitslücke klafft:

Problem 1:

Geben Sie in der Adresszeile des Browsers diese URL ein (ersetzen Sie [IhreSeite] durch die Bezeichnung Ihrer eigenen Website):

[IhreSeite]/?author=1

Wenn in der Adresszeile anschließend der Name des Autors angezeigt wird, ist für den Hacker der erste Teil zum Herausfinden der Zugangsdaten schon erledigt. Der Autor Nummer 1 ist auch der Administrator der Website, nicht wahr? Und wenn nicht, dann wird er sich irgendwo später finden, als Nummer 3 oder 5 oder 9; als “Autor” werden nämlich alle Backendbenutzer aufgeführt und nicht nur die, die irgendwann mal einen Beitrag verfasst haben.

Das folgende Codeschnipsel hilft Ihnen, das Sicherheitsloch zu schließen. Fügen Sie es der Datei functions.php an:

function redirect_to_home_if_author_parameter() {
	$is_author_set = get_query_var( 'author', '' );
	if ( $is_author_set != '' && !is_admin()) {
		wp_redirect( home_url(), 301 );
		exit;
	}
}
add_action( 'template_redirect', 'redirect_to_home_if_author_parameter' );

Problem 2:

Geben Sie in der Adresszeile des Browsers diese URL ein (ersetzen Sie [IhreSeite] durch die Bezeichnung Ihrer eigenen Website):

[IhreSeite]/wp-json/wp/v2/users/1

Je nach Browser wird Ihnen unter anderem der Name des Administrators in Klarschrift angezeigt. Stimmts?

Um dieses Loch zu schließen, fügen Sie das folgende Codeschnipsel der Datei functions.php an:

function disable_rest_endpoints ( $endpoints ) {
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
    }
    return $endpoints;
}
add_filter( 'rest_endpoints', 'disable_rest_endpoints');

Problematisch bei dieser Vorgehensweise ist nur, dass die Dateien functions.php auf der Ebene von WordPress oder des verwendeten Themas bei jedem Update überschrieben werden. Es macht also durchaus Sinn, für den Programmcode ein spezielles Plugin zu verwenden …

Plugin herunterladen