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

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

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.

Gefällt dir der Artikel? Dann teile ihn mit deinen Freunden.

Avatar-Foto

Hallo, ich bin Carsten! Ich bin gelernter IT-Systemelektroniker und habe das Blog 2005 gegründet. Baujahr 1977, Dortmunder im Norden, BVB-Fan und Vater eines Sohnes. Auch zu finden bei X, Threads, Facebook, LinkedIn und Instagram.

Neueste Beiträge

Mit dem Absenden eines Kommentars stimmst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.

72 Kommentare

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

  2. 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!

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

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

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

  6. Danke, ich trage es mal nach 🙂

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

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

  9. 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. „

  10. @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

  11. @Marc,

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

    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.

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

  13. Es sei denn, du hast Vollzugriff auf deinen Windows-Server 😉

  14. Danke, direkt erledigt!

  15. Danke für den Hinweis. Ist Direkt gefixt. Freue mich aber schon auf Version 2.8.4 ;).

    MfG Oli

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

  17. Super…Danke Schön!…..Meine Fragen haben sich nur durch das lesen beantwortet!

  18. Laurent Gaffié hat die Schwachstelle gefunden. Ja, ich hab es gerade auch mal ausprobiert. =)

Es werden alle Kommentare moderiert. Lies auch bitte unsere Kommentarregeln:

Für eine offene Diskussion behalten wir uns vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen. Wir möchten, dass respektvoll miteinander kommuniziert wird, so als ob die Diskussion mit real anwesenden Personen geführt wird. Dies machen wir für den Großteil unserer Leser, der sachlich und konstruktiv über ein Thema sprechen möchte - gerne auch mit Humor. In jedes Thema Politik einbringen ist nicht erwünscht.

Du willst nichts verpassen?

Du hast die Möglichkeit, den Feed dieses Beitrags zu abonnieren. Wer natürlich alles lesen möchte, der sollte den Hauptfeed abonnieren.