Inhaltsverzeichnis
Technische Details
Store-Administrator deaktiviert Plug-Ins
woocommerce/includes/admin/class-wc-admin-status.php
woocommerce/includes/log-handlers / class-wc-log-handler-file.php
Heim Betrieb und Instandhaltung Sicherheit So beheben Sie die Sicherheitslücke beim Löschen willkürlicher Dateien im WordPress-Plugin WooCommerce

So beheben Sie die Sicherheitslücke beim Löschen willkürlicher Dateien im WordPress-Plugin WooCommerce

May 13, 2023 pm 06:16 PM
wordpress 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,                ⋮       ));
Nach dem Login kopieren

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);}
Nach dem Login kopieren

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');
Nach dem Login kopieren

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']));}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung May 06, 2024 pm 10:45 PM

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.

So ändern Sie die Seitenbreite in WordPress So ändern Sie die Seitenbreite in WordPress Apr 16, 2024 am 01:03 AM

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).

In welchem ​​Ordner liegen WordPress-Artikel? In welchem ​​Ordner liegen WordPress-Artikel? Apr 16, 2024 am 10:29 AM

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.

So erstellen Sie eine Produktseite in WordPress So erstellen Sie eine Produktseite in WordPress Apr 16, 2024 am 12:39 AM

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;

Wo ist die WordPress-Vorlagendatei? Wo ist die WordPress-Vorlagendatei? Apr 16, 2024 am 11:00 AM

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

So suchen Sie nach Autoren in WordPress So suchen Sie nach Autoren in WordPress Apr 16, 2024 am 01:18 AM

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.

Welche WordPress-Version ist stabil? Welche WordPress-Version ist stabil? Apr 16, 2024 am 10:54 AM

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“.

Welche Sprache wird zur Entwicklung von WordPress verwendet? Welche Sprache wird zur Entwicklung von WordPress verwendet? Apr 16, 2024 am 12:03 AM

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.

See all articles