Tipps, WordPress

WordPress gehackt – was tun, eine Schnellhilfe

… die keinen Anspruch auf Vollständigkeit erhebt und mal eben dem einen oder anderen Leser dienen soll und getrieben aus gegebene Anlass. Das Hacken von Blogs ist keine Eigenart von WordPress Blogs – dies kann jedem CMS passieren. Ebenso kannst du dir nicht sicher sein, dass du nicht betroffen bist, nur weil du irgendein Plugin aktiv hast und weil du die aktuellste Version von WordPress fährst.

Wobei es hier keine Diskussion werden soll, ob WordPress mehr als andere Applikation betroffen ist oder anfälliger ist. Die Unterschiede sind weitreichend – Schwachstellen gehören zur Software und die meisten Standard-Tools sind nur für das Gewissen oder den Geldbeutel.
Weiterlesen

Standard
Plugin, Tipps, WordPress

WordPress Plugins für mehr Sicherheit

WordPress Logo

In den letzten Tagen und Wochen wurden vermehrt Weblogs gehackt, die mit WordPress betrieben werden. Die Ursachen können sehr unterschiedlich sein, einer der letzten Punkte waren angreifbare freie Themes.

Ich wünsche, dass die Nutzer durch solche Themen sensibler werden und nicht blind jedes Plugin oder Theme in ihr Live-System kopieren und nutzen.

Ein ganz anderer Punkt ist die Sicherheit zu erhöhen, dass kann man mit einigen Punkte in der Installation, die ich hinreichend in den Artikeln „WordPress sicherer machen“ und „WordPress Templates sicherer machen“ erläutere.

Im weiteren haben sich aber auch eine ganze Reihe an Plugin-Autoren um die Sicherheit bemüht und entsprechende Plugins veröffentlicht. Weiterlesen

Standard
Allgemein

Sicherheitsloch in WordPress 2.5

Da ist sie, die erste große Lücke. Thomas weist auf eine Sicherheitslücke in der Funktion ignore_user_abort() hin, die sich mit einem einfach Fix im Theme beheben lässt.

Es gilt lediglich in die header.php des verwendeten Themes den folgenden Syntax zu schreiben und die Standardkonstante von WP neu zu setzen.


<?php
define('AUTHKEY', 'QXByaWwsIEFwcmlsIQ==');
echo base64_decode(AUTHKEY);
?>

… direkt nach dem body-Tag.
Weiterlesen

Standard
Allgemein

TextLinkAds WordPress Plugin mit Sicherheitslücke

BlogSecurity weist auf eine Sicherheitslücke im Plugin von TextLinkAds hin.

Schon Michael empfand das Plugin als unseriös und berichtet im Artikel „Text Link Ads verliert Seriösität“ warum und wieso er dieser Meinung ist.

TLA wird von vielen WordPress Usern in der Form als Plugin genutzt, obwohl es unnötig ist. Das Script für den Zugriff auf die XML-Datei kann extra im Theme-Ordner abgelegt werden und mittels einer einfachen include-Anweisung eingebunden werden. Weiterlesen

Standard
WordPress

Schwachstelle in Cookie-Authentifizierung von WordPress

Durch einen Design-Fehler in der Authentifizierung der Blogsoftware WordPress kann ein Angreifer einfacher als gedacht ein System kompromittieren. Die meisten Content-Management-Systeme und Blogs speichern die Passwörter der Anwender als Hashes in der zugrundeliegenden Datenbank. Erhält ein Angreifer etwa über eine SQL-Injection-Lücke Zugriff auf die gespeicherten Hashes in der Datenbank, kann er damit zunächst nichts anfangen. Um an das ursprüngliche Passwort zu gelangen, muss er den Hash beispielsweise mit den Einträgen einer sogenannten Rainbow-Table vergleichen. Unter Umständen kann dies einige Zeit in Anspruch nehmen, bei langen Passwörtern kann dies auch gänzlich scheitern, da die Tabellen dafür noch nicht vorbereitet sind.

Unter WordPress kann sich der Angreifer laut eines Berichtes von Steven J. Murdoch von der Universität Cambridge aber eine Eigenheit zunutze machen, um ohne Passwort den Zugriff zu erhalten. Weiterlesen

Standard
Tipps, WordPress

Der erste XSS Wurm für WordPress

Wie man die XSS-Lücke ausnutzt und wie man den Wurm indiziert, das erklärt mybeNi. Das ganze basiert auf WordPress Version 2.2.1.

Was man davon halten soll – das muss jeder selbst entscheiden. In jedem Fall lohnt es sich, die Hinweise zu lesen. Es handelt sich um einen „freundlichen“ Wurm, der nur die Lücke aufzeigen will – ein Trost? Schön ist, dass der Wurm dem Admin hilft, die nötigen Lücken zu patchen.

Im weiteren werden alle 7 Lücken erläutert und als Beispiel dargelegt. Die Lücken sind im WP trac registriert und vielleicht erwartet uns bald ein Update. Wer sich händisch an die Arbeit machen will, der liest die Lösungen. In der Regel kommt die WordPress eigene Sicherheits-Funktion attribute_escape() zum Einsatz. Es sind 5 Lücken zu schließen – kurz und bündig im Folgenden.

wp-admin/upload-functions.php Zeile 109


<form<?php echo $enctype; ?> id="upload-file" method="post" action="<?php echo get_option('siteurl') . "/wp-admin/upload.php?style=$style&tab=upload&post_id=$post_id"; ?>"> 

wird zu:


<form<?php echo $enctype; ?> id="upload-file" method="post" action="<?php echo get_option('siteurl') . "/wp-admin/upload.php?style=" . attribute_escape($style) . "&tab=upload&post_id=" . attribute_escape($post_id); ?>"> 

wp-includes/functions.php Zeile 206


function get_option($setting) { 
global $wpdb; 

$setting = $wpdb->escape($setting); 

// Allow plugins to short-circuit options. 
$pre = apply_filters( 'pre_option_' . $setting, false ); 

wp-includes/functions.php Zeile 386


function delete_option($name) { 
global $wpdb; 

$name = $wpdb->escape($name); 

wp_protect_special_option($name);

wp-admin/link-import.php Zeile 76


$cat_id = $_POST['cat_id']; 
if ( $cat_id == '' || $cat_id == 0 ) 

wird zu:


$cat_id = (int) $_POST['cat_id']; 
if ( $cat_id < 1 ) 

wp-admin/edit-comments.php Zeile 78


if ( isset( $_GET['apage'] ) )

wird zu:


if ( isset( $_GET['apage'] ) ) { 
	$page = (int) $_GET['apage']; 
	if($page < 1) 
	$page = 1; 
}
Standard
WordPress

Sicherheitslücken im Plugin WP-FeedStats

Das Plugin WP-FeedStats weist wohl Sicherheitslücken auf. Es empfiehlt sich, nach Angaben von BlogSecurity das Plugin vorerst zu deaktivieren.

Sollte ich die Probleme finden und beheben können, dann mache ich das natürlich. Dies wird aber sicher nicht gleich und sofort passieren, denn ansonsten wären sie nicht im Plugin aufgetreten.
Ich hoffe auf Verständnis.

Kontaktiert wurde ich allerdings nicht, wie es im Beitrag von BlogSecurity steht, aber dank Trackback-Funktion bin ich eben darauf aufmerksam geworden.

Standard
Tipps, WordPress

WordPress Sicherheitslücke nach Update auf 2.0.6

Nach dem vor kurzem das Update auf 2.0.6 veröffentlicht wurde, gibt es erneut Probleme, wobei es diesmal an einem PHP-Problem liegt. Weitere Hinweise und mögliche Berichtigungen mit register_globals sind unter anderem bei Jowra, Michael und Robert zu finden.

Nur als kurzer Hinweis, im englischen Original ist das Feedburner bzw. Feed-Problem auch in der Version 2.0.6 behoben. Kurz nach der ersten Veröffentlichung wurde es nochmals geändert und neu hoch geladen, die Version wurde nicht hoch gezählt. Im deutschen Update 2.0.5 –> 2.0.6 ist dieser Fehler noch drin, so dass man dort folgende Veränderung vornehmen muss.

Achtung: Keine Garantie auf Funktion! Sicherung anfertigen.

Bearbeite die Datei functions.php im Verzeichnis wp-includes und suche folgenden Code (Zeile 2.231):


if ( substr(php_sapi_name(), 0, 3) == 'cgi' )
@header("HTTP/1.1 $header $text");
else
@header("Status: $header $text");

ändern in (die drei Zeilen löschen):


@header("HTTP/1.1 $header $text");

Um nun das aktuelle Problem PHP zu beseitigen sollte folgender Workaround helfen.

In Datei wp-settings.php Zeile 16:


if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) )
	unset($GLOBALS[$k]);

ändern in:


if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
	$GLOBALS[$k] = NULL;
	unset($GLOBALS[$k]);
}
Standard
Tipps, WordPress

Sicherheitslücke in WordPress < 2.0.6

Mal wieder wurde eine Sicherheitslücke im System von WordPress entdeckt, der SecurityForus berichtet. Das Problem wird als Hoch (7.0) eingestuft und sollte behoben werden. Dazu gibt es einen Patch, der folgender maßen aussieht oder downloade die aktuelle Datei auf der Patch-Seite und überschreibe die aktuelle Datei.

** In der Version 2.0.6 beta 1 ist der Fehler nicht behoben!

Workflow:

Die Datei templates.php im Ordner wp-admin bearbeiten. Suche nach (ab Zeile 111):


<?php
echo '<ol>';
foreach ($recents as $recent) :
	echo "<li><a href='templates.php?file=" . wp_specialchars($recent, true) . "'>" . get_file_description(basename($recent)) . "</a></li>";
endforeach;
?>

und ersetze mit:


<?php
echo '<ol>';
foreach ($recents as $recent) :
	echo "<li><a href='templates.php?file=" . attribute_escape($recent) . "'>" . wp_specialchars(get_file_description(basename($recent))) . "</a></li>";
endforeach;
?>
Standard