WordPress: Angriff auf den “admin” erschweren
Bei fast allen CMS wird während der Installation ein Standardnutzer mit weitreichenden Kompetenzen angelegt, damit das System anschließend auch vollständig konfiguriert werden kann. So auch bei WordPress: Dort heißt der User “admin” und hat die ID #1.
Leider macht es genau dieser Umstand Hackern leichter, in ein WP-basiertes System einzudringen, denn beim Login ist der Nutzername damit schon bekannt und es muß nur noch das Paßwort erraten werden. Meines Erachtens wird dadurch Sicherheitspotential verschenkt, denn man sollte auch den User-Namen geheim halten — wenn dies auch vielen Leuten nicht unmittelbar einleuchtet. Aber: Ein Paßwort allein nützt nichts, wenn man den zugehörigen Nutzernamen nicht kennt. Oder: Was nützt dir mein Hausschlüssel, wenn du nicht weißt wo ich wohne oder wie ich heiße?
Dazu kommt allerdings ein Umstand, der diese Überlegung zunächst ad absurdum führt, denn wenn man Beiträge für den Blog schreibt, wird mit den Standardeinstellungen der User-Name i. d. R. zu einem Beitrag als Autor angezeigt. — Ein Bösewicht müßte also nur in die Blogbeiträge schauen und hätte freie Auswahl bei den beim Login abgefragten User-Namen. — Aber da gibt es einen Kniff.
Eine allgemeine Regel, die man für alle paßwortgeschützten Systeme verwenden kann, wo man gleichzeitig Administrator und Nutzer ist, ist die Verwendung von 2 Accounts: Einmal als Administrator — und eben nur dafür — sowie als Nutzer mit eingeschränkten Rechten.
Mit der aktuellen WordPress-Version 2.6.x kann man aber alles auf einmal haben…
Neuer Administrator-Account
(1) Man loggt sich wie gewohnt als admin mit dem normalen Account ein.
(2) Da man den “admin” im Profil leider nicht einfach umbenennen kann, legt man zunächst über “Add New User” einen neuen Account mit einem neuen, unbekannten und schlecht zu erratenden User-Namen an (der in der Abbildung wäre nicht zu empfehlen, da naheliegend). Es sollte auch gerade nicht der Name sein, der als Autor öffentlich in den Beiträgen erscheint! Ein Nickname kann dabei noch nicht angegeben werden. Unter “Role” weist man dem neuen User die Rolle “Administrator” zu. — Den User-Namen sollte man fortan ebenso vertraulich behandeln wie das Paßwort.
(3) Jetzt wechselt man in das Profil des neuen Users, indem man bei “Manage Users” einfach auf den neuen Eintrag klickt. Auch hier ist der User-Name von jetzt an fest eingestellt und kann nicht mehr geändert werden (grau unterlegt). Dafür erscheinen nun aber 2 weitere Namenseinträge: Den Nickname ändert man nun in den gewünschten Autoren-Namen, der in den Beiträgen angezeigt wird (also öffentlich ist).

WordPress unterscheidet zwischen “User-” und “Nick-”Name.
Im Ausklappmenü “Display name publicly as” erscheint der neue Nickname noch nicht — man muß erst einmal den neuen Eintrag über “Update User” am Ende des Eingabeformulars speichern. Anschließend kann man im Ausklappmenü den öffentlichen Autoren-Namen (Nickname) auswählen. Und nochmals speichern.
Das Feld “Website” im Abschnitt “Contact Info” würde ich frei lassen, um nicht indirekt Informationen zum “Social Engineering” zu liefern.
Alten “admin”-Account löschen
Zwar hat man nun einen neuen User angelegt, dessen Anmeldedetails nun nicht mehr von außen sichtbar sind, aber es besteht ja noch der gefährdete alte “admin”-Account. Dieser muß deshalb gelöscht werden. — So geht’s weiter:
(4) Aus dem “admin”-Konto ausloggen — unter dem neuen User-Namen einloggen.
(5) In “Manage Users” nun den alten “admin”-Account per Checkbox auswählen und anschließend den Knopf “Delete” im Tabellenkopf anklicken. — Achtung, jetzt den Klickfinger ruhig halten und erst weiterlesen..!
(6) Es erscheint das Hinweisfenster “Delete Users”, das leider z. Zt. mit einer ungünstigen Voreinstellung bei “What should be done with posts and links owned by this user?” den ganzen Blog killen könnte (Was soll mit den Beiträgen und Links von diesem Nutzer geschehen?): Mit dem Löschen des Users würden mit der bereits ausgewählten Einstellung “Delete all posts and links.” auch sämtliche Beiträge des betreffenden Users gelöscht (gut bei “Trollen”, schlecht bei Admins…). — In diesem speziellen Fall, wo der Administrator auch alle Beiträge verfaßt hat, wäre der Blog anschließend leer!

Beim Löschen eines Users muß man genau hinsehen, um nicht versehentlich auch alle Beiträge zu löschen.
Man muß also die 2. Option “Attribute all posts an links to:” auswählen (Alle Beiträge und Links XY zuweisen.). Damit werden alle unter dem zu löschenden User-Account verfaßten Beiträge auf ein anderes Konto übertragen — und eben nicht gelöscht. Das gewünschte Konto kann man aus der Ausklappliste auswählen und sollte der zuvor angelegte neue Administrator-Account sein. Dabei wird in der Liste nicht der öffentliche Nickname, sondern der “geheime” User-Name angezeigt.
Erst jetzt sollte man die Aktion mit einem Klick auf “Confirm Deletion” fortsetzen (Löschen bestätigen).
(7) In der Benutzerübersicht “Manage Users” ist der alte “admin” verschwunden und der neue Administrator hat unter “Posts” schon eine Menge Beiträge verzeichnet. Fertig! — Bei der nächsten Nutzung muß man an die neuen Account-Daten denken, z. B. auch wenn man Tools wie Blogdesk nutzt.
Fazit
Ein Hacker kann jetzt nicht mehr an den Standard-Einstellungen von WordPress ansetzen, die darauf basieren, daß es im System einen User #1 mit dem User-Namen “admin” gibt. Auch kann man nicht anhand der Autoren-Kürzel in den Beiträgen einen Administrator-Namen erraten. Wenn es bereits mehrere User im System gibt, hat der neue Administrator auch nicht die ID #2. Hat man beim neuen Account als Nickname den alten User-Name verwendet, ist nach außen keine Veränderung zu erkennen.
Konsequenterweise sollte man anschließend bei allen im System registrierten Usern — egal ob Administrator, Autor oder nur registrierter Leser — eine Trennung von User-Name (zum Einloggen in WordPress) und Nickname (als Autoren-Kennung) vornehmen.
3 Comments
Other Links to this Post
-
Oberlehrer (Thorsten Luhm) — 5. September 2008 @ 06.12
RSS feed for comments on this post. TrackBack URI

By Oberlehrer, 6. July 2009 @ 13.54
Stimmt, allerdings ist gerade im “shared hosting” die Datenbank nicht immer ganz so einfach erreichbar — und man kann mit solchen direkten Manipulationen natürlich auch Schaden anrichten, der zum absoluten Stillstand führen könnte. Deshalb bin ich mit solchen Empfehlungen vorsichtig, vor allem gegenüber Laien.
By Marvin Rabe, 27. November 2008 @ 22.43
Hallo, man kann auch einfach in der MySql Datenbank den Loginnamen von Admin ändern. Dazu muss man sich in der PhpMyAdmin etwas auskennen.
Leichtester weg:
1. PHPMyAdmin öffnen und einloggen
2. Datenbank aussuchen
3. wp_users anklicken
4. Auf Anzeigen gehen
5. User “admin” suchen.
6. “admin” mit etwas anderem ändern
7. Auf “OK” klicken. Fertig!