WordPress 2.8.3: Admin password reset exploit – schwere Sicherheitslücke
Gerade eben von meinem langjährigen Netzkollegen Alexander auf eine Sicherheitslücke in WordPress 2.8.3 aufmerksam gemacht worden. So ist es jedem möglich, dass Passwort des Administrators zurück zu setzen. Zwar kann man die Lücke nicht ausnutzen sofern man nicht auf das Mailkonto des Admins Zugriff hat, doch dieser kann sich auch erst einmal nicht einloggen, ohne vorher sein neues Passwort per Mail abzufragen. Um dies bis zur nächsten Version zu beheben, öffnet eure wp-login.php und ändert in Zeile 190 den Text von if ( empty( $key ) ) in if ( empty( $key ) || is_array( $key ) ).
Betroffen sind scheinbar nur die Versionen 2.8.x. Ich weiss wie der Exploit ausgeführt wird und habe ihn erfolgreich an zwei Blogs ausprobieren können. Allerdings werde ich den Aufruf hier logischerweise nicht veröffentlichen. Den ganzen Ärger kann man sich auch sparen, sofern man seinen Daten zusätzlich per .htaccess absichert.
Nachtrag: bitte eventuell auch diesen Kommentar beachten. Ausserdem findet ihr hier den technischen Hintergrund.
Danke!
So schwer ist die Sicherheitslücke gar nicht. o.o
Sie ist nur einfach auszunutzen…aber mal ehrlich, viel kann der Angreifer nicht machen…
was is das denn fürn scheiß?
du erklärst nicht WARUM es da ein fehler gibt, aber „jaja passt schon, nur das da ändern“
du weißt schon, dass eine opensource entwicklung davon lebt, dass wenn was gefunden wird, auch alles dadrum dokumentiert wird?
ich persönlich denke mir ich weiß warum, bin mir aber net komplett sicher aber hier solls ja auch nicht technisch werden.
wie vielen gutmenschen könntest du auf diese art, nicht was für scheiß code einschleusen?? einfach nur weil von coding kein dunst haben und da alles reinkopieren würden! DAS ist die größte lücke am system. der user!
@ed:
WARUM es den Fehler gibt, weiss ich nicht, schließlich bin ich KEIN Coder. Wohl weiss ich aber, dass hier viele Blogger mitlesen, die den Scheiss erst einmal absichern wollen. Darum geht es. Des Weiteren weiss das WP-Team um diese Lücke. Aber deswegen gibt es hier auch keine Anleitung, wie man das ausführen kann…
Danke für die Info! Hab meine Blogs direkt gefixt.
Ich habe bei mir mal versucht, den Fehler etwas zu erläutern. Danke für den Hinweis, caschy.
Danke, ich trage es mal nach 🙂
Publiziert wurde das ganze von http://g-laurent.blogspot.com/2009/08/wordpress-283-remote-admin-reset.html.
Irgendwie ist die 2.8er Version von WordPress besch…eiden
Das funktioniert aber nur, wenn man gleichzeitig den/einen Benutzernamen des Admins kennt… richtig?
Und wer unter WordPress noch „admin“ verwendet… na ja…
Ok. Welche Änderungen müssen den nun durchgeführt werden? Beim Anschauen der TimeLine entsteht lediglich Verwirrung.
Die Änderung bzgl. is_Array scheint nicht korrekt zu sein. Dort wird bereits eine Änderung, welche statt is_array !is_String nutzt.
http://core.trac.wordpress.org/changeset/11799
Außerdem sind noch weitere Änderungen unter dem Thema „Pass user login when resetting passwords. „
@Marc
Falsch, das funktioniert immer.
Man führe sich bitte die Erklärung von Filzo zu Gemüte.
Die Datenbankabfrage nach „SELECT * FROM $wpdb->users WHERE user_activation_key = %s“ liefert dann alle Benutzer aus wp_users zurück, deren Feld user_activation_key = “ ist.
Da dabei automatisch nach dem Primärschlüssel (ID) sortiert wird und für gewöhnlich der Admin die ID = 1 hat, wird eben genau diese Zeile zurückgeliefert.
Gruß, Perry
@Marc,
es sind auch Leute betroffen, die schon seit Jahren admin als Login nicht mehr verwenden. So weit ich die Lücke verstanden habe, muss man den Nutzernamen nicht kennen.
Hi Carsten,
sehe ich das richtig, dass eine portable WordPress-Version kein Sinn macht, weil die auf den Server kommt? Ich kenne mich da nicht so aus.
Es sei denn, du hast Vollzugriff auf deinen Windows-Server 😉
danke, gefixed
Danke, direkt erledigt!
Danke für den Hinweis. Ist Direkt gefixt. Freue mich aber schon auf Version 2.8.4 ;).
MfG Oli
@Gerrit
Der endgültige Fix ist wohl Changeset 11804
Aus diesem Grund einfach den Inhalt dieser Datei (Quelle) mit dem alten Inhalt der wp-login.php ersetzen. Dann solltest du wieder auf der sicheren Seite sein.
Gruß
Super…Danke Schön!…..Meine Fragen haben sich nur durch das lesen beantwortet!
Laurent Gaffié hat die Schwachstelle gefunden. Ja, ich hab es gerade auch mal ausprobiert. =)