Software Guide

Die besten Tipps, Anleitungen und Downloads

Ihre Werbung auf Software Guide

Sie möchten in dieser Box oder an anderer Stelle dieser Webseiten eine Werbung schalten? Sehen Sie sich dazu am besten einfach mal die verschiedenen Möglichkeiten an.


Lösung zu WordPress-Sicherheitslücken

2. März 2006 von Michael | Wordpress

Gemäß einem Advisory vom Neo Security Team wurden in WordPress Sicherheitslücken entdeckt, die z.T. als kritisch eingestuft wurden:

  1. Über Kommentare lässt sich aufgrund einer unzreichenden Filterung JavaScript-Code einbetten. Besucher könnten sich damit möglicherweise einen administrativen Zugang zum Blog verschaffen. Allerdings ist dieses Sicherheitsrisiko überbewertet, da die Lücke nur dann entsteht, wenn der JavaScript-Code von einem Administrator gepostet wird.
  2. Beim direkten Aufrufen einer Reihe von Dateien erscheint aufgrund einer PHP-Fehlermeldung der vollständige Pfad der WordPress-Installation. Angreifer könnten dies u.U. ausnutzen, um das Blogsystem bzw. den Server anzugreifen.
  3. Beim Aufrufen des Verzeichnis wp-includes/ wird der Verzeichnisinhalt angezeigt. Dies wurde jedoch als unkritisch eingestuft.

Die Fehler wurden in WordPress 2.0.1 nachgewiesen, lt. Advisory sind aber auch alle älteren Versionen davon betroffen.

(via BasicThinking, Heise: Sicherheitslücken im Blog-System WordPress)

Im folgenden zeige ich, wie man die Lücken schließen kann (getestet unter WordPress 2.0.1):

1. JavaScript-Code in Kommentaren verhindern

In der Datei wp-comments-post.php die Zeilen

$comment_author       = trim($_POST['author']);
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['comment']);

durch diese ersetzen:

$comment_author       = htmlspecialchars(trim($_POST['author']));
$comment_author_email = htmlspecialchars(trim($_POST['email']));
$comment_author_url   = htmlspecialchars(trim($_POST['url']));
$comment_content      = htmlspecialchars(trim($_POST['comment']));

Achtung: Dadurch sind keine (X)HTML-Tags in den Kommentaren mehr möglich.

2. Anzeige des vollständigen Pfad der WordPress-Installation verhindern

Bei den Dateien

  • wp-admin/admin-footer.php
  • wp-admin/admin-functions.php
  • wp-admin/edit-form.php
  • wp-admin/edit-form-advanced.php
  • wp-admin/edit-form-comment.php
  • wp-admin/edit-link-form.php
  • wp-admin/edit-page-form.php
  • wp-admin/menu.php
  • wp-admin/menu-header.php
  • wp-includes/default-filters.php
  • wp-includes/kses.php
  • wp-includes/locale.php
  • wp-includes/rss-functions.php
  • wp-includes/template-loader.php
  • wp-includes/vars.php
  • wp-includes/wp-db.php
  • wp-settings.php

folgenden Code in die erste Zeile eintragen:

<?php if (eregi('Dateiname.php', $_SERVER['PHP_SELF'])) die('You are not allowed to see this page directly'); ?>

Dabei den Platzhalter Dateiname.php durch den jeweiligen Dateinamen ersetzen.

Hinweis: Läuft PHP auf dem Server nicht als Apache-Modul, sondern als CGI, dann funktioniert diese Lösung leider nicht.

3. Frei zugängliches Directory-Listing verhindern

Eine leere Datei index.php im Verzeichnis /wp-includes/ erstellen.

Kritik

U.a. Blogging Tom kritisiert zurecht die schnelle, ungeprüfte Übernahme des Advisory durch Heise. Insbesondere das Ausführen von JavaScript-Code in Kommentaren ist reichlich überbewertet, da das Einschleusen nur durch einen Administrator möglich ist.

Fazit

Eine aktuelle Gefahr droht wohl nicht, wenn man die Lücken nicht schließt. Dennoch ist oben der Weg aufgezeigt, wie man die Lücken schließen kann.

Artikel-Aktualisierungen:

  • 02.03.2006 — Um das Problem mit den Umlauten unter Punkt 1 zu lösen, habe ich gemäß Kommentar von BloggingTom htmlentities durch htmlspecialchars ersetzt.
  • 03.03.2006 — Läuft PHP auf dem Server nicht als Apache-Modul, sondern als CGI, dann funktioniert das Script unter Punkt 2 lt. Kommentar nicht.

Informationen zum Artikel:

Weiterblättern im Blog:

Was ist ein Trackback?

2 Trackbacks/Pings:

9 Comments:

Gravatar

1

Robert Basic

2. März 2006, 21:39

Punkt 3:
du meinst sicher die index.php aus dem Blog-Root und nicht aus Wp-Content (da ist defaultmäßig unter WP 1.5 keine). Man kann auch ne leere Datei reinkopieren, schätze ich mal .-)

Gravatar

2

Robert Basic

2. März 2006, 21:40

(die Umlaute scheinen in den Comments nicht zu funzen)

Gravatar

3

BloggingTom

2. März 2006, 21:50

Zu Punkt 1 muss der "neue" Code richtigerweise folgendermassen aussehen:

$comment_author = htmlspecialchars(trim($_POST[‚author‘]));
$comment_author_email = htmlspecialchars(trim($_POST[‚email‘]));
$comment_author_url = htmlspecialchars(trim($_POST[‚url‘]));
$comment_content = htmlspecialchars(trim($_POST[‚comment‘]));

Damit funktionieren auch die Umlaute wieder…

(via Kommentar in meinem Post)

Gravatar

4

Robert Basic

2. März 2006, 21:51

lol,.. klar.. htmlentities … hat jemand einen Fix fuer den Fix ?

Gravatar

5

Robert Basic

2. März 2006, 21:52

Ueberschneidung also.. statt entities specialchars nehmen..,.. thx :-)

Gravatar

6

Michael (Author)

2. März 2006, 21:53

Danke Robert für die Hinweise, hab das mit der index.php angepasst.
Außerdem hab ich nochmal recherchiert, gerade (1) ist wohl absolut überbewertet, außerdem entstehen Probleme bei Umlauten (wie man oben schön sieht :-) und HTML-Code geht auch nicht mehr…
Daher im Artikel jetzt noch die Punkte ‚Kritik‘ und ‚Fazit‘ ergänzt ;-)

Gravatar

7

Michael (Author)

2. März 2006, 22:06

Vielen Dank auch Dir, Tom, für den Hinweis, habe ich ergänzt.

Gravatar

8

BloggingTom

3. März 2006, 7:36

Bitte, gern geschehen, dann machen wir doch gleich noch einen Hinweis: Läuft PHP auf dem Server nicht als Apache-Modul, sondern als CGI, dann funktioniert die „eregi“-Geschichte wie oben beschrieben nicht.
Aber es ist unterdessen ja ziemlich selten, dass PHP nicht als Modul eingebunden ist… ;-)

Gravatar

9

Michael (Author)

3. März 2006, 17:49

Danke Tom, hab auch das noch ergänzt ;-)

Die Kommentarmöglichkeit ist derzeit für diesen Artikel ausgeschaltet.

Blog-Kategorien

Volltextsuche

Neueste Artikel

Neueste Kommentare

Neueste Trackbacks/Pingbacks

Andere Projekte

Blogparade

dient als zentrale Anlaufstelle für Blog-Paraden bzw. Blog-Karnevals und andere von BloggerInnen veranstaltete Aktionen.

Mediadaten

Feed-Statistik:
Feedburner

Software Guide gibt es seit Dezember 2005 und es werden durchschnittlich 4 Blog- Beiträge/Monat veröffentlicht. Die Themenschwerpunkte sind in der Tagcloud ersichtlich. Mehr Infos...

Links

 

Nach oben

Wordpress

© 2005-2016 Software Guide | ISSN 1864-9599