Sicherheitsrisiko in WordPress: Das Auslesen von Benutzernamen und Schutz vor Bruteforce-Angriffen
WordPress ist eines der beliebtesten Content-Management-Systeme weltweit, was es leider auch zu einem bevorzugten Ziel von Angreifern macht. Eine der häufigsten Angriffsmethoden sind sogenannte Bruteforce-Angriffe, bei denen Angreifer versuchen, sich mit verschiedenen Passwortkombinationen Zugang zu verschaffen. Ein oft übersehener Schwachpunkt ist dabei das Auslesen von Benutzernamen, was den Angreifern die Arbeit erheblich erleichtert.
Wie können Benutzernamen ausgelesen werden?
Standardmäßig erlaubt WordPress das Auslesen von Benutzernamen über verschiedene Methoden, z. B.:
?author=X
Parameter: Durch Anhängen von?author=1
an die URL einer WordPress-Website wird oft der Benutzername des ersten (meistens Admin-)Accounts zurückgegeben.- REST-API: Die WordPress-REST-API kann ebenfalls Benutzernamen preisgeben, wenn sie nicht speziell abgesichert wurde.
Diese Informationen sind für Angreifer wertvoll, da sie die benötigte Angriffsfläche für Bruteforce-Angriffe erheblich reduzieren. Statt Benutzernamen erraten zu müssen, können Angreifer diese direkt verwenden.
Risiken durch Bruteforce-Angriffe
Wenn Angreifer Benutzernamen kennen, müssen sie nur noch das Passwort knacken. Mithilfe von automatisierten Tools testen sie tausende Kombinationen, um Zugang zu erhalten. Besonders schwache oder wiederverwendete Passwörter sind hier ein großes Risiko.
Die Folgen eines erfolgreichen Angriffs können gravierend sein:
- Kompromittierung der Website.
- Datenverlust oder Diebstahl.
- Installation von Malware oder Schadcode.
Wie kann man Benutzernamen schützen?
Ein wichtiger Schritt, um diese Sicherheitslücke zu schließen, ist das Verhindern des öffentlichen Zugriffs auf Benutzernamen. Dies kann durch Anpassungen im Code erreicht werden.
Hier ist ein einfaches Script für die functions.php
, das sowohl die author
-Abfrage als auch die REST-API absichert:
// Verhindert das Auslesen von Benutzernamen über ?author=1
function disable_author_query() {
if (is_admin()) {
return;
}
if (isset($_GET['author'])) {
wp_redirect(home_url());
exit;
}
}
add_action('template_redirect', 'disable_author_query');
// REST-API: Entfernt Benutzerdaten aus der Ausgabe
function restrict_rest_api_user_endpoints($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'restrict_rest_api_user_endpoints');
// Optional: Benutzername aus der REST-API entfernen, falls User-Daten weiterhin benötigt werden
function remove_user_name_from_rest($response, $user, $request) {
if (isset($response->data['name'])) {
unset($response->data['name']);
}
return $response;
}
add_filter('rest_prepare_user', 'remove_user_name_from_rest', 10, 3);
Was macht dieses Skript?
disable_author_query
: Leitet alle Anfragen mit?author=
auf die Startseite weiter und verhindert so die Offenlegung von Benutzernamen.restrict_rest_api_user_endpoints
: Entfernt den Endpunkt/wp/v2/users
aus der REST-API.remove_user_name_from_rest
: Entfernt spezifische Benutzerdetails wie den Namen aus der REST-API-Ausgabe, falls diese weiterhin aktiviert ist.
Zusätzliche Schutzmaßnahmen
- Bruteforce-Plugins: Installieren Sie Sicherheits-Plugins wie “Wordfence” oder “Limit Login Attempts” zur Begrenzung von Login-Versuchen.
- Starke Passwörter: Nutzen Sie komplexe, einzigartige Passwörter.
- Zwei-Faktor-Authentifizierung: Implementieren Sie eine zusätzliche Sicherheitsebene für den Login.
Sie brauchen Hilfe bei Ihrer Wordpress Website?
Schauen Sie in unsere Leistungen 😉