WordPress 2.8.3: Admin password reset exploit – schwere Sicherheitslücke

11. August 2009 Kategorie: Internet, WordPress, geschrieben von: caschy

wordpressbox80x80pixelGerade 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 ) ).

Changeset 11798 – WordPress Trac

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.

Über den Autor: caschy
Dortmunder im Norden. Blogger, Freund gepflegter Technik, BVB-Maniac und Hausmeister dieses Blogs. Auch zu finden bei Twitter, Google+, Facebook, XING und YouTube.

76 Kommentare

Piets 11. August 2009 um 09:13 Uhr

Danke für die Info, aber ich denke, dass du die “wp-login.php” meinst, und nicht die “wp-admin.php”

Luigi (twitter ) 11. August 2009 um 09:37 Uhr

Danke für den Tipp! Habe die Datei sofort gefixt.

Sascha (twitter ) 11. August 2009 um 09:38 Uhr

Der Fix verrät eigentlich schon die Lücke :p

Ist aber mal wieder ein Bug, den man einfach nicht beim ersten mal sieht.

Der Domme 11. August 2009 um 09:38 Uhr

Danke dafür. Direkt gefixt.

MTBTier 11. August 2009 um 09:40 Uhr

Gefixt und weiter publiziert. Danke für den Hinweis.

Fenja 11. August 2009 um 09:54 Uhr

Super, dankeschön – gleich behoben und retweetet ;)

Tim 11. August 2009 um 09:58 Uhr

Ach du warst das also bei mir. Danke =D

Michael Bornkessel 11. August 2009 um 10:04 Uhr

Vielen Dank für den Hinweis auf die Lücke! Ich habe den Fix direkt eingebaut und deinen Tweet gleich weitergereicht ;-)

tim_tom 11. August 2009 um 10:07 Uhr

Für alle interessierte,…hier mehr infos:
http://lists.grok.org.uk/piper.....70139.html

super 11. August 2009 um 10:09 Uhr

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….

caschy 11. August 2009 um 10:10 Uhr

@super:

jau, ist es wohl – und zudem hat auch Heise eine halbe Stunde nach meinem Text darüber berichtet.

MBDealer 11. August 2009 um 10:35 Uhr

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 ;)

Hannes Schurig (twitter ) 11. August 2009 um 10:41 Uhr

Danke für den Hinweis, fixed.
Ziemlich derber, simpler Fehler für ein offizielles Release.

Gerrit (twitter ) 11. August 2009 um 10:47 Uhr

Danke für den Hinweis und die Fix.

ocean90 11. August 2009 um 11:07 Uhr

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ß.

Freakazoid 11. August 2009 um 11:23 Uhr

So schwer ist die Sicherheitslücke gar nicht. o.o
Sie ist nur einfach auszunutzen…aber mal ehrlich, viel kann der Angreifer nicht machen…

Ed 11. August 2009 um 11:39 Uhr

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!

caschy 11. August 2009 um 11:42 Uhr

@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…

Der geilste Typ 11. August 2009 um 12:05 Uhr

Danke für die Info! Hab meine Blogs direkt gefixt.

Filzo 11. August 2009 um 12:15 Uhr

Ich habe bei mir mal versucht, den Fehler etwas zu erläutern. Danke für den Hinweis, caschy.

caschy 11. August 2009 um 12:18 Uhr

Danke, ich trage es mal nach :)

No-Trace 11. August 2009 um 12:38 Uhr

Publiziert wurde das ganze von http://g-laurent.blogspot.com/.....reset.html.

Irgendwie ist die 2.8er Version von WordPress besch…eiden

Marc (twitter ) 11. August 2009 um 12:48 Uhr

Das funktioniert aber nur, wenn man gleichzeitig den/einen Benutzernamen des Admins kennt… richtig?
Und wer unter WordPress noch “admin” verwendet… na ja…

Gerrit (twitter ) 11. August 2009 um 12:49 Uhr

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. “

Perry 11. August 2009 um 13:15 Uhr

@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


30 Trackback(s)

11. August 2009
jkwmedia (Justin K.)
11. August 2009
Wordpress – Sicherheitslücke « schwobeseggl.de
11. August 2009
WordPress 2.8.3: Gefährliche Sicherheitslücke | Trails & Bikes
11. August 2009
Wordpress Sicherheitlücke: Exploit resettet Admin-Passwort - Administrator, Blog, Reset, Hack, Bugfix, Login - blogwache.de
11. August 2009
Neuer Exploit in Wordpress 2.8.x
11. August 2009
Wordpress: Sicherheitslücke in 2.8.3 — filzo.de
11. August 2009
splash ;)
11. August 2009
WordPress 2.8.x Password Reset-Exploit « hep-cat.de
11. August 2009
Schwachstelle in WordPress: Reset des Admin-Passworts » Peruns Weblog
11. August 2009
Sicherheitslücke in WordPress 2.8.X – Admin password reset exploit | Perrys Blog
11. August 2009
WP 2.8.x Admin reset exploit - Lighty mod_auth | Total Verfriemelt
11. August 2009
Wordpress 2.8.3 Admin password reset – schwere Sicherheitslücke! | marcO's_br4inh4ck
11. August 2009
Warum Wordpress ganz schön nervig ist | TechBanger.de
11. August 2009
Wordpress 2.8.x – Sicherheitslücke - Wordpress - Nicht spurlos
11. August 2009
Administrationspasswort können Dritte zurücksetzen | Webseiten-Infos.de
11. August 2009
Urgixgax Blog » WordPress 2.8.3 – Sicherheitsproblem – Unfreiwillig zurückgesetztes Administratorpasswort!
12. August 2009
Big2k.net :: Aktion100 reloaded » Blog Archive » WordPress 2.8.3: schwere Sicherheitslücke (Admin password reset exploit)
12. August 2009
WordPress 2.8.4 schließt Sicherheitslücke | Telagon Sichelputzer
12. August 2009
WordPress 2.8.4: Und wieder darf gezittert werden | Das Meinungs-Blog
12. August 2009
Wordpress 2.8.4 Update schließt Sicherheitslücke | Der Medien Blog
12. August 2009
Kurzmeldung: Wordpress 2.8.4 veröffentlicht | Tief im See
12. August 2009
Wordpress 2.8.3: Schwere Sicherheitslücke - Familie Celik - News - Programmierung - Tutorials - MetinCelik.de
12. August 2009
Wordpress 2.8.4. erschienen | Medienflackern
12. August 2009
Lücke in WordPress ermöglicht Aussperren des Admins » WordPress, Seite, Admin, Mailadresse, Sicherheitslücke, Betreiber » Suleitec Infoblog
12. August 2009
WordPress 2.8.4 veröffentlicht | Roman Harcke
12. August 2009
schon wieder ein neues wp-update? – Andreas Welt
12. August 2009
Wordpress 2.8.4 veröffentlicht
12. August 2009
WordPress 2.8.4 | Tobbis Blog
15. Oktober 2009
WP 2.8.x Admin reset exploit – Lighty mod_auth | Total Verfriemelt
4. Januar 2011
Yawoo – Das Blog Verzeichnis für Deutschland » Blog Archive » WordPress 2.8.3: Admin password reset exploit – schwere Sicherheitslücke

Du willst nichts verpassen?
Neben der E-Mail-Benachrichtigung habt ihr auch die Möglichkeit den Feed dieses Beitrags zu abonnieren. Wer natürlich alles lesen möchte, der sollte den Hauptfeed abonnieren. Alternativ könnt ihr euch via E-Mail über alle neuen Beiträge hier im Blog informieren lassen. Einfach eure E-Mail-Adresse hier eingeben, dann bekommt ihr 1x täglich eine Zusammenstellung.

Deine Meinung ist uns wichtig...

Name*


E-Mail* (wird nicht veröffentlicht)


Webseite


Twitter-Name


Blogverzeichnis - Blog Verzeichnis bloggerei.de