Schwachstelle in WordPress verrät Adminnicks

Und sicherlich sind noch tausende, millionen anderer Adminnicks öffentlich einsehbar. Wie das geht? Schuld ist eine Schwachstelle in WordPress.

In den letzten Tagen habe ich mich intensiv mit dem neuen Theme befasst, was nun sehr bald kommen wird. Mir fiel dabei auf, das bei den Test-Kommentaren des Administrators „comment-author-admin“ steht:

Ich überlegte, ob das wirklich einheitlich ist, denn auf Localhost habe ich „admin“ als Adminnick. Also guckte ich in den Quelltext auf chriszim.com und sah:

Das war mein hieriger Adminnick, also verrät der Quelltext diesen ungewollt.

Das mag zwar erstmal nicht schlimm aussehen, Eindringlinen wird somit aber der Backendnick verraten, sodass nur noch das Passwort geknackt werden muss. Gerade deswegen wird von WordPress auch immer geraten, man solle statt „admin“ einen anderen Nick für das Backend verwenden (und eine andere ID als 1 haben, falls es einen Datenbank-Angriff geben sollte).

Die Fehlerquelle

Ich schaute bei weiteren Blogs nach und siehe da, nicht alle haben diese Schwachstelle drin. Nach etwas Suchen fand ich die Ursache: „comment_class“ ist Schuld daran, denn hier werden die Klassen bestimmt, somit auch „comment-author-[adminnick]„.

Es geht aber noch weiter: Bei allen registrierten Usern wird „comment-author-[nick]“ als Klasse dazugefügt. Somit könnte ein Angreifer es bei mehreren Nicks probieren (wobei er nicht weiß, welcher Nick welche Zugriffsrechte hat, jedoch sind die Admins ja erkennbar, sobald sie kommentieren).

Die Lösung

Natürlich könnten wir nun in der comment-template.php rumwerkeln, was ich aber nicht für sinnvoll halte. Zum einen müsste die bei jedem Update standardmäßig erneuerte Datei immer wieder geändert werden, zum anderen sollte man diese sogenannten „Core-Dateien“ nach Möglichkeit nicht verändern.

Somit bleibt die wohl einzig beste Lösung, die functions.php von dem jeweiligen Theme zu ändern. Und das geht so: Zuerst in der Datei nach „comment_class“ suchen. Dort steht jetzt folgendes:

<li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">

Dies ersetzen wir nun gegen unsere eigenen Klassen:

<li class="comment" id="comment-<?php comment_ID() ?>">

Nun wird im Quelltext nur noch „comment“ als Klasse angezeigt. Das kann jetzt gut oder schlecht sein. Gut ist, das wir dadurch „comment-author-[nick]“ hinauskatapultiert haben und ein Angreifer somit nicht weiß, welchen Adminnick es bei dem Blog gibt. Schlecht ist, das dadurch die dynamischen Klassen entfallen, z.B. „byuser„, „byauthor“ und auch die Kommentartiefe („depth-1„, „depth-2“ etc.) hätte keine eigenen Klassen mehr und könnte somit nicht mehr definiert werden.

In dem Zusammenhang muss man sich fragen, wie relevant diese Schwachstelle ist: Sicherlich wird es bei den meisten Blogs egal sein. Bei einem Firmenblog eines größeren Konzernes könnte dies jedoch durchaus ein enormes Sicherheitsrisiko darstellen, insbesondere wenn das Passwort selten geändert wird. Erfahrungsgemäß werden oftmals auch recht einfache Passwörter benutzt, somit könnte die Chance, das der Adminaccount geknackt wird, enorm gesteigert werden (BruteForce etc.).

Fazit

Jeder muss selbst überlegen, ob es für ihn ein großes Sicherheitsrisiko darstellt, wenn jemand den Adminnick aus dem Quelltext ausliest. Sollte das so sein, dann empfehle ich die obrige Lösung, allerdings sind dann genauere Definierungen wie Kommentartiefen oder eine besondere Einfärbung wenn der Kommentar vom Administrator ist etc. nicht mehr möglich. Wer diese Sachen ohnehin nicht nutzt, der braucht sich um den Wegfall der Klassen keine großen Gedanken machen.

4 Gedanken zu “Schwachstelle in WordPress verrät Adminnicks

  1. Hmja, Du hast Recht. Wie gut, dass ich wenigstens ein sicheres Passwort hab (12345)!

    Möglicherweise könnte man mit dem Role-Manager-Plugin den Admin „entmachten“ und dafür einem Nicht-Admin Adminrechte einräumen. Das wäre so eine Ey-Lou-Flynn-„Lösung“. Allerdings könnte die wieder neue, ungeahnte neue Probleme nach sich ziehen. Nehme den Vorschlag also zurück, frei nach dem Motto: „Wenn man keine Ahnung hat…“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.