


So beheben Sie die Sicherheitslücke beim Löschen willkürlicher Dateien im WordPress-Plugin WooCommerce
Technische Details
Der Berechtigungsverarbeitungsmechanismus von WordPress wird hauptsächlich durch die Bereitstellung verschiedener Funktionen für verschiedene Rollen implementiert. Wenn die Store-Administratorrolle definiert ist, werden edit_users dieser Rollenfunktion zugewiesen, damit sie dies tun können Verwalten Sie die Kundenkonten des Shops direkt. Der gesamte Berechtigungszuweisungsprozess findet während des Installationsprozesses des Plug-Ins statt. woocommerce/includes/class-wc-install.php:
//Shop manager role.add_role( 'shop_manager', // Internal name of the new role 'Shop manager', // The label for displaying array( // Capabilities ⋮ 'read_private_posts' => true, 'edit_users' => true, 'edit_posts' => true, ⋮ ));
Die Rollenberechtigungsinformationen werden in der Datenbank als WordPress-Kerneinstellungen gespeichert, was bedeutet, dass die Benutzerrolle jetzt sogar unabhängig vom Plugin ist Wenn das Plugin nicht aktiviert ist, hat es keine Auswirkungen auf die zugehörigen Rollenberechtigungen.
Wenn ein authentifizierter Benutzer versucht, andere Benutzerinformationen zu ändern, wird die Funktion current_user_can() aufgerufen und stellt dann sicher, dass nur privilegierte Benutzer diesen Vorgang ausführen können. Beispiel für einen Funktionsaufruf Current_user_can():
$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) { edit_user($target_user_id);}
Die Verifizierungslogik des Aufrufs lautet wie folgt: Dieser Benutzer möchte die ID $target_user_id verwenden, um einen bestimmten Benutzer zu ändern. Hat er die Berechtigung zur Ausführung?
In der Standardkonfiguration ermöglicht die Funktion edit_users Benutzern mit Berechtigungen (z. B. Shop-Administratoren), andere Benutzer, sogar Administratorbenutzer, zu bearbeiten und dann Vorgänge wie Kennwortaktualisierungen durchzuführen. Aus Sicherheitsgründen muss WooCommerce angeben, ob der Shop-Administrator Benutzer bearbeiten kann, daher muss das Plug-in Meta-Berechtigungen hinzufügen. Metafunktionen können von current_user_can() aufgerufen werden. Der von der Funktion im Standardverhalten zurückgegebene Wert ist wahr, aber der von der Meta-Berechtigungsfunktion zurückgegebene Wert kann bestimmen, ob der aktuelle Benutzer einen solchen Vorgang ausführen kann. Unten ist der abstrakte Funktionscode des WooCommerce-Meta-Berechtigungsfilters aufgeführt:
function disallow_editing_of_admins( $capability, $target_user_id ) { // If the user is an admin return false anddisallow the action if($capability == "edit_user"&& user_is_admin($target_user_id)) { return false; } else { return true; }}add_filter('map_meta_cap', 'disallow_editing_of_admins');
Wenn beispielsweise current_user_can('edit_user', 1) aufgerufen wird, ermittelt der Filter, dass die ID 1 ist ($ target_user_id ) ist ein Administrator und bestimmt anhand des Ergebnisses, ob dem Benutzer die Bedienung gestattet werden soll.
Store-Administrator deaktiviert Plug-Ins
Standardmäßig können nur Administratoren Plug-Ins deaktivieren. Diese Sicherheitslücke ermöglicht es dem Shop-Administrator jedoch, jede beschreibbare Datei auf dem Server zu löschen, sodass wir verhindern können, dass WordPress das Plug-in lädt, indem wir die Hauptdatei von WooCommerce, woocommerce.php, löschen.
Diese Sicherheitslücke beim Löschen von Dateien besteht in der Protokollierungsfunktion von WooCommerce. Die Protokolle werden im wp-content-Verzeichnis in Form von .log-Dateien gespeichert. Wenn der Store-Administrator eine Protokolldatei löschen möchte, muss er den Dateinamen als GET-Parameter übergeben. Der unten gezeigte Codeausschnitt ist der anfällige Teil:
woocommerce/includes/admin/class-wc-admin-status.php
class WC_Admin_Status{ public static function remove_log() { ⋮ $log_handler = newWC_Log_Handler_File(); $log_handler->remove(wp_unslash($_REQUEST['handle']));}
woocommerce/includes/log-handlers / class-wc-log-handler-file.php
class WC_Log_Handler_File extends WC_Log_Handler{ public function remove($handle) { ⋮ $file = trailingslashit(WC_LOG_DIR) .$handle; ⋮unlink($file);
Das Problem hierbei ist, dass der Dateiname ($handle) zum Protokollverzeichnis (wp-content/wc-logs/) hinzugefügt wird. und dann an die Funktion unlink() übergeben. Beim Festlegen von „$handle../../plugins/woocommerce-3.4.5/woocommerce.php“ wird die Datei wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce php wird entfernt und führt zur Deaktivierung von WooCommerce.
Das obige ist der detaillierte Inhalt vonSo beheben Sie die Sicherheitslücke beim Löschen willkürlicher Dateien im WordPress-Plugin WooCommerce. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP und Flutter sind beliebte Technologien für die mobile Entwicklung. Flutter zeichnet sich durch plattformübergreifende Funktionen, Leistung und Benutzeroberfläche aus und eignet sich für Anwendungen, die eine hohe Leistung, plattformübergreifende und benutzerdefinierte Benutzeroberfläche erfordern. PHP eignet sich für serverseitige Anwendungen mit geringerer Leistung und nicht plattformübergreifend.

Sie können die Breite Ihrer WordPress-Seite ganz einfach ändern, indem Sie Ihre style.css-Datei bearbeiten: Bearbeiten Sie Ihre style.css-Datei und fügen Sie .site-content { max-width: [Ihre bevorzugte Breite] hinzu. Bearbeiten Sie [Ihre bevorzugte Breite], um die Seitenbreite festzulegen. Änderungen speichern und Cache leeren (optional).

WordPress-Beiträge werden im Ordner /wp-content/uploads gespeichert. Dieser Ordner verwendet Unterordner, um verschiedene Arten von Uploads zu kategorisieren, einschließlich Artikeln, die nach Jahr, Monat und Artikel-ID geordnet sind. Artikeldateien werden im Nur-Text-Format (.txt) gespeichert und der Dateiname enthält normalerweise seine ID und seinen Titel.

Erstellen Sie eine Produktseite in WordPress: 1. Erstellen Sie das Produkt (Name, Beschreibung, Bilder); 2. Passen Sie die Seitenvorlage an (fügen Sie Titel, Beschreibung, Bilder, Schaltflächen hinzu). 3. Geben Sie Produktinformationen ein (Lagerbestand, Größe, Gewicht); 4. Variationen erstellen (verschiedene Farben, Größen); 6. Kommentare aktivieren/deaktivieren;

WordPress-Vorlagendateien befinden sich im Verzeichnis /wp-content/themes/[Themenname]/. Sie werden verwendet, um das Erscheinungsbild und die Funktionalität der Website zu bestimmen, einschließlich Kopfzeile (header.php), Fußzeile (footer.php), Hauptvorlage (index.php), einzelner Artikel (single.php), Seite (page.php). , Archiv (archive.php), Kategorie (category.php), Tag (tag.php), Suche (search.php) und 404-Fehlerseite (404.php). Durch Bearbeiten und Modifizieren dieser Dateien können Sie das Erscheinungsbild Ihrer WordPress-Website anpassen

Suchen Sie nach Autoren in WordPress: 1. Sobald Sie sich in Ihrem Admin-Bereich angemeldet haben, navigieren Sie zu „Beiträge“ oder „Seiten“, geben Sie den Namen des Autors über die Suchleiste ein und wählen Sie „Autor“ in den Filtern aus. 2. Weitere Tipps: Verwenden Sie Platzhalter, um Ihre Suche zu erweitern, verwenden Sie Operatoren, um Kriterien zu kombinieren, oder geben Sie Autoren-IDs ein, um nach Artikeln zu suchen.

Die stabilste WordPress-Version ist die neueste Version, da sie die neuesten Sicherheitspatches und Leistungsverbesserungen enthält und neue Funktionen und Verbesserungen einführt. Um auf die neueste Version zu aktualisieren, melden Sie sich bei Ihrem WordPress-Dashboard an, gehen Sie zur Seite „Updates“ und klicken Sie auf „Jetzt aktualisieren“.

WordPress wird unter Verwendung der PHP-Sprache als Kernprogrammiersprache für die Handhabung von Datenbankinteraktionen, Formularverarbeitung, dynamischer Inhaltsgenerierung und Benutzeranfragen entwickelt. PHP wurde aus Gründen wie plattformübergreifender Kompatibilität, einfacher Erlernbarkeit, aktiver Community sowie umfangreicher Bibliothek und Frameworks ausgewählt. Neben PHP verwendet WordPress auch Sprachen wie HTML, CSS, JavaScript, SQL usw., um seine Funktionalität zu erweitern.
