Bei dieser Gelegenheit wurde ein schwerwiegendes Sicherheitsproblem in den Pagelines- und Platform-Designs entdeckt, das die Ausführung von Remotecode ermöglicht , was außerordentlich gefährlich ist.
Es ist immer gut zu wissen, welche Sicherheitsprobleme und Fehler in den WordPress-Plugins festgestellt wurden, z. B. bei Designs oder Plugins, da Entwickler auf diese Weise bewährte Methoden anwenden können, indem sie sichereren Code schreiben und die Benutzer über diese informieren Mögliche Sicherheitsrisiken Ihres Blogs.
Kritische Sicherheitslücke in den Pagelines und Platform for WordPress-Themes
Der Sicherheitsbericht stammt (wie üblich) von Sucuri und wurde als kritische Sicherheitslücke mit hohem Risiko eingestuft, da er uneingeschränkten Zugriff auf den Server ermöglicht.
Die betroffenen Versionen sind:
- Platform Theme : Versionen niedriger als 1.4.4 (betroffen von Rechteerweiterung und Remotecodeausführung) .
- Topic Pagelines : Versionen niedriger als 1.4.6 und auch das Blog müssen Benutzern die Registrierung ermöglichen, andernfalls kann die Sicherheitsanfälligkeit nicht ausgenutzt werden (betroffen von den mit Sicherheitsanfälligkeiten eskalierten Berechtigungen) .
Die Sicherheitslücke ermöglicht es uns, Privilegien zu eskalieren. Beispielsweise können Sie von einem Benutzer, der in unserem Blog als “Abonnent” registriert ist, Ihrem Konto Administratorrechte erteilen.
Das Problem der /pagelines/admin/actions.admin.php
liegt in folgendem Code aus /pagelines/admin/actions.admin.php
:
/** * Ajax Save Options Callback * * @package PageLines Framework * @since ... * */ add_action( 'wp_ajax_pagelines_ajax_save_option', 'pagelines_ajax_save_option_callback' ); function pagelines_ajax_save_option_callback() { /** This is how you get access to the database */ global $wpdb; $option_name = $_POST['option_name']; $option_value = $_POST['option_value']; update_option( $option_name, $option_value ); die(); }
Das Problem ist, dass alle wp_ajax_
Hooks für jeden im Blog registrierten Benutzer zugänglich sind, unabhängig von seinen Berechtigungen, wp_ajax_
ein einfacher Abonnent kann diese Hooks ausführen. In diesem Fall wird der Zugriff auf die Datenbank und die Einrichtung eines Abonnenten als Blogadministrator ermöglicht. Von dort aus kann der böswillige Benutzer über den WordPress-Datei-Editor vollen Zugriff auf den Server erhalten. Sowohl Platform als auch Pagelines sind anfällig.
Die Sicherheitsanfälligkeit, die Remotecodeausführung ermöglicht, betrifft nur Platform und befindet sich in der Datei /platform/includes/library.options.php
im folgenden Code, der zum Importieren der Themenkonfiguration verwendet wird:
if ( isset($_POST['settings_upload']) && $_POST['settings_upload'] == 'settings') { if (strpos($_FILES['file']['name'], 'Settings') === false && strpos($_FILES['file']['name'], 'settings') === false){ wp_redirect( admin_url('admin.php?page=pagelines&pageaction=import&error=wrongfile') ); } elseif ($_FILES['file']['error'] > 0){ $error_type = $_FILES['file']['error']; wp_redirect( admin_url('admin.php?page=pagelines&pageaction=import&error=file&'.$error_type) ); } else { ob_start(); include($_FILES['file']['tmp_name']); $raw_options = ob_get_contents(); ob_end_clean(); $all_options = unserialize($raw_options);
Das Problem ist, dass es die include()
Funktion verwendet, die den PHP-Code der Datei ausführt, die wir importieren. Dieser Code kann ausgeführt werden, weil die Funktion vom admin_init
Hook admin_init
, der von jedem Benutzer ausgeführt werden kann, wenn er /wp-admin/admin-post.php
oder /wp-admin/admin-ajax.php
.
Ein weiteres Beispiel dafür, dass WordPress verwundbar wird, da wir ein Add-On verwenden, obwohl die Entwickler das Problem in diesem Fall fast sofort gelöst haben. Deshalb war einer der Tipps, die ich bei der Auswahl eines geeigneten WordPress-Themas gegeben habe, dass es eine aktive Entwicklung hatte und wir die möglichen Sicherheitsfehler so schnell wie möglich beheben.