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.
Ähnliche Beiträge:
- WordPress Admin Bar – die ultimative Adminstration
- WordPress sicherer machen – ohne Plugins
- Warnung vor chCounter – Sicherheitslücke
- WordPress: schöneres Dashboard mit dem Fluency Admin
- Firefox: Sicherheitslücke stiehlt History



74 Kommentare zu “WordPress 2.8.3: Admin password reset exploit – schwere Sicherheitslücke”
Piets sagt
Danke für die Info, aber ich denke, dass du die “wp-login.php” meinst, und nicht die “wp-admin.php”
Kommentar am 11. August 2009 um 09:13 geschrieben.
xaitax sagt
removed
Kommentar am 11. August 2009 um 09:17 geschrieben.
Gilly (
@gillyberlin) sagt
Gefixt
Kommentar am 11. August 2009 um 09:32 geschrieben.
Jan sagt
Danke schön!
Kommentar am 11. August 2009 um 09:36 geschrieben.
Luigi (
@hartgekocht) sagt
Danke für den Tipp! Habe die Datei sofort gefixt.
Kommentar am 11. August 2009 um 09:37 geschrieben.
Sascha (
@sn0opy) sagt
Der Fix verrät eigentlich schon die Lücke :p
Ist aber mal wieder ein Bug, den man einfach nicht beim ersten mal sieht.
Kommentar am 11. August 2009 um 09:38 geschrieben.
Der Domme sagt
Danke dafür. Direkt gefixt.
Kommentar am 11. August 2009 um 09:38 geschrieben.
MTBTier sagt
Gefixt und weiter publiziert. Danke für den Hinweis.
Kommentar am 11. August 2009 um 09:40 geschrieben.
Fenja sagt
Super, dankeschön – gleich behoben und retweetet
Kommentar am 11. August 2009 um 09:54 geschrieben.
Bjoern (
@buerstinghaus) sagt
Behoben! vielen Dank!
Kommentar am 11. August 2009 um 09:54 geschrieben.
Tim (
@bigtimDO) sagt
Ach du warst das also bei mir. Danke =D
Kommentar am 11. August 2009 um 09:58 geschrieben.
Michael Bornkessel sagt
Vielen Dank für den Hinweis auf die Lücke! Ich habe den Fix direkt eingebaut und deinen Tweet gleich weitergereicht
Kommentar am 11. August 2009 um 10:04 geschrieben.
tim_tom sagt
Für alle interessierte,…hier mehr infos:
http://lists.grok.org.uk/piper.....70139.html
Kommentar am 11. August 2009 um 10:07 geschrieben.
super sagt
Echt toll, dass du die Lücke so schön dokumentierst. Gerade das sollte man nicht machen und wurde auch beim letzten Bug nicht gemacht siehe WPD….
Ich hoffe, ihr habt es auch dem Security Team von WP gemeldet….
Kommentar am 11. August 2009 um 10:09 geschrieben.
caschy (
@caschy) sagt
@super:
jau, ist es wohl – und zudem hat auch Heise eine halbe Stunde nach meinem Text darüber berichtet.
Kommentar am 11. August 2009 um 10:10 geschrieben.
MBDealer sagt
Na dann gibt es wohl in ein paar Tagen wieder ne neue Version von Wordpress … da kommt man ja nicht mehr zum bloggen bei den ganzen Updates
Kommentar am 11. August 2009 um 10:35 geschrieben.
Hannes Schurig sagt
Danke für den Hinweis, fixed.
Ziemlich derber, simpler Fehler für ein offizielles Release.
Kommentar am 11. August 2009 um 10:41 geschrieben.
Gerrit (
@gerriten) sagt
Danke für den Hinweis und die Fix.
Kommentar am 11. August 2009 um 10:47 geschrieben.
ocean90 sagt
Schön und gut, aber der Fix reicht nicht wirklich aus und wurde auch schon wieder entfernt, siehe Changeset 11799. In der Timeline gibt es weitere Änderungen, siehe Changeset 18000 – 18004.
Dies ist somit nur ein oberflächlicher Fix und sollte kein Grund sein, um nicht auf das nächste Sicherheitsrelease zu verzichten.
Könnte man eventuell hinzufügen.
Schönen Gruß.
Kommentar am 11. August 2009 um 11:07 geschrieben.
Adrian sagt
Danke!
Kommentar am 11. August 2009 um 11:14 geschrieben.
Freakazoid sagt
So schwer ist die Sicherheitslücke gar nicht. o.o
Sie ist nur einfach auszunutzen…aber mal ehrlich, viel kann der Angreifer nicht machen…
Kommentar am 11. August 2009 um 11:23 geschrieben.
Ed sagt
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!
Kommentar am 11. August 2009 um 11:39 geschrieben.
caschy (
@caschy) sagt
@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…
Kommentar am 11. August 2009 um 11:42 geschrieben.
Der geilste Typ sagt
Danke für die Info! Hab meine Blogs direkt gefixt.
Kommentar am 11. August 2009 um 12:05 geschrieben.
Filzo sagt
Ich habe bei mir mal versucht, den Fehler etwas zu erläutern. Danke für den Hinweis, caschy.
Kommentar am 11. August 2009 um 12:15 geschrieben.
caschy (
@caschy) sagt
Danke, ich trage es mal nach
Kommentar am 11. August 2009 um 12:18 geschrieben.
No-Trace sagt
Publiziert wurde das ganze von http://g-laurent.blogspot.com/.....reset.html.
Irgendwie ist die 2.8er Version von Wordpress besch…eiden
Kommentar am 11. August 2009 um 12:38 geschrieben.
Marc sagt
Das funktioniert aber nur, wenn man gleichzeitig den/einen Benutzernamen des Admins kennt… richtig?
Und wer unter Wordpress noch “admin” verwendet… na ja…
Kommentar am 11. August 2009 um 12:48 geschrieben.
Gerrit (
@gerriten) sagt
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. “
Kommentar am 11. August 2009 um 12:49 geschrieben.
Perry sagt
@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
Kommentar am 11. August 2009 um 13:15 geschrieben.
Perun (
@vlad_perun) sagt
@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.
Kommentar am 11. August 2009 um 13:28 geschrieben.
A.J. sagt
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.
Kommentar am 11. August 2009 um 13:35 geschrieben.
caschy (
@caschy) sagt
Es sei denn, du hast Vollzugriff auf deinen Windows-Server
Kommentar am 11. August 2009 um 13:39 geschrieben.
Nippelnuckler sagt
danke, gefixed
Kommentar am 11. August 2009 um 13:42 geschrieben.
Andre sagt
Danke, direkt erledigt!
Kommentar am 11. August 2009 um 13:54 geschrieben.
Oli sagt
Danke für den Hinweis. Ist Direkt gefixt. Freue mich aber schon auf Version 2.8.4
.
MfG Oli
Kommentar am 11. August 2009 um 14:10 geschrieben.
ocean90 sagt
@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ß
Kommentar am 11. August 2009 um 14:23 geschrieben.
Pati sagt
Super…Danke Schön!…..Meine Fragen haben sich nur durch das lesen beantwortet!
Kommentar am 11. August 2009 um 16:26 geschrieben.
Paul (
@Le_Mag) sagt
Laurent Gaffié hat die Schwachstelle gefunden. Ja, ich hab es gerade auch mal ausprobiert. =)
Kommentar am 11. August 2009 um 17:13 geschrieben.
carsten|braun sagt
Vielen Dank für den Hinweis!
Habe die Datei sofort geändert.
Kommentar am 11. August 2009 um 18:53 geschrieben.
Beta sagt
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
Mal im ernst, wer lässt die Adminid nach der Installation bei 1 das erste was ich Tat war die ID zu ändern und nein nicht auf 2
mfg
Kommentar am 11. August 2009 um 19:06 geschrieben.
Defender sagt
“Allerdings werde ich den Aufruf hier logischerweise nicht veröffentlichen.”
Geheimnis Geheimnis … das kriegt man in ca. 5 sec raus, wenn man google bedienen kann …
Kommentar am 11. August 2009 um 22:44 geschrieben.
A.J. sagt
WordPress 2.8.4 ist da. Download. Stay safe.
Kommentar am 12. August 2009 um 10:54 geschrieben.
caschy (
@caschy) sagt
Na, wenn schon das Paket von 2.8.3 auf 2.8.4:
http://is.gd/2ddoQ
Kommentar am 12. August 2009 um 10:56 geschrieben.
Andreas sagt
Danke für den Hinweis. Super!
Kommentar am 16. August 2009 um 01:13 geschrieben.
29 Trackback(s)