Table des matières
Détails techniques
Plugins désactivés par l'administrateur du magasin
woocommerce/includes/admin/class-wc-admin-status.php
woocommerce/includes/log-handlers/class-wc-log-handler-file.php
Maison Opération et maintenance Sécurité Comment résoudre la vulnérabilité de suppression arbitraire de fichiers dans le plugin WordPress WooCommerce

Comment résoudre la vulnérabilité de suppression arbitraire de fichiers dans le plugin WordPress WooCommerce

May 13, 2023 pm 06:16 PM
wordpress woocommerce

Détails techniques

Le mécanisme de traitement des autorisations de WordPress est principalement mis en œuvre en fournissant différentes fonctions à différents rôles. Lorsque le rôle d'administrateur de magasin est défini, il attribuera la fonction edit_users à ce rôle afin qu'ils puissent gérer directement le compte client de la boutique. . L'ensemble du processus d'attribution des autorisations se produit pendant le processus d'installation du plug-in. 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,                ⋮       ));
Copier après la connexion

Les informations d'autorisation du rôle seront stockées dans la base de données avec les paramètres de base de WordPress, ce qui signifie que le rôle de l'utilisateur est désormais indépendant du plugin, même si le plugin n'est pas activé , cela n'affectera pas les autorisations de rôle pertinentes.

Lorsqu'un utilisateur authentifié tente de modifier d'autres informations utilisateur, la fonction current_user_can() est appelée et garantit ensuite que seuls les utilisateurs privilégiés peuvent effectuer cette opération. Exemple d'appel de fonction Current_user_can() :

$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) {    edit_user($target_user_id);}
Copier après la connexion

La logique de vérification de l'appel est la suivante : Cet utilisateur souhaite utiliser l'ID $target_user_id pour modifier un utilisateur spécifique. A-t-il l'autorisation d'exécuter ?

Dans la configuration par défaut, la fonction edit_users permet aux utilisateurs disposant d'autorisations (telles que les administrateurs de magasin) de modifier d'autres utilisateurs, même les utilisateurs administrateurs, puis d'effectuer des opérations telles que des mises à jour de mots de passe. Pour des raisons de sécurité, WooCommerce doit spécifier si l'administrateur du magasin peut modifier les utilisateurs, le plug-in doit donc ajouter des méta-autorisations. Les méta-fonctions peuvent être appelées par current_user_can(). La valeur renvoyée par la fonction sous le comportement par défaut est vraie, mais la valeur renvoyée par la fonction de méta-autorisation peut déterminer si l'utilisateur actuel peut effectuer une telle opération. Vous trouverez ci-dessous le code de fonction abstraite du filtre de méta-autorisation WooCommerce :

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');
Copier après la connexion

Par exemple, lorsque current_user_can('edit_user', 1) est appelé, le filtre déterminera si l'utilisateur avec l'ID 1 ($target_user_id) est l'administrateur décide si pour permettre à l'utilisateur d'opérer en fonction des résultats.

Plugins désactivés par l'administrateur du magasin

Par défaut, seuls les administrateurs peuvent désactiver les plugins. Cependant, cette vulnérabilité permet aux administrateurs du magasin de supprimer tout fichier inscriptible sur le serveur. Nous pouvons donc empêcher WordPress de charger le plug-in en supprimant le fichier principal de WooCommerce, woocommerce.php.

Cette vulnérabilité de suppression de fichiers existe dans la fonction de journalisation de WooCommerce. Les journaux seront stockés dans le répertoire wp-content sous forme de fichiers .log. Lorsque l'administrateur du magasin souhaite supprimer un fichier journal, il doit soumettre le nom du fichier en tant que paramètre GET. L'extrait de code ci-dessous est la partie vulnérable :

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']));}
Copier après la connexion

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);
Copier après la connexion

Le problème ici est que le nom du fichier ($handle) sera ajouté au répertoire des journaux (wp-content/wc-logs/) puis transmis à la fonction unlink(). Lors de la configuration de "$handle../../plugins/woocommerce-3.4.5/woocommerce.php", fichier wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce php. sera supprimé et entraînera la désactivation de WooCommerce.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP vs Flutter : le meilleur choix pour le développement mobile PHP vs Flutter : le meilleur choix pour le développement mobile May 06, 2024 pm 10:45 PM

PHP et Flutter sont des technologies populaires pour le développement mobile. Flutter excelle dans les capacités multiplateformes, les performances et l'interface utilisateur, et convient aux applications qui nécessitent des performances élevées, une interface utilisateur multiplateforme et personnalisée. PHP convient aux applications côté serveur avec des performances inférieures et non multiplateformes.

Comment changer la largeur d'une page dans WordPress Comment changer la largeur d'une page dans WordPress Apr 16, 2024 am 01:03 AM

Vous pouvez facilement modifier la largeur de votre page WordPress en modifiant votre fichier style.css : modifiez votre fichier style.css et ajoutez .site-content { max-width : [votre largeur préférée] } ; Modifiez [votre largeur préférée] pour définir la largeur de la page. Enregistrez les modifications et videz le cache (facultatif).

Dans quel dossier se trouvent les articles wordpress ? Dans quel dossier se trouvent les articles wordpress ? Apr 16, 2024 am 10:29 AM

Les publications WordPress sont stockées dans le dossier /wp-content/uploads. Ce dossier utilise des sous-dossiers pour classer différents types de téléchargements, notamment les articles organisés par année, mois et ID d'article. Les fichiers d'articles sont stockés au format texte brut (.txt) et le nom de fichier inclut généralement son identifiant et son titre.

Comment créer une page produit dans WordPress Comment créer une page produit dans WordPress Apr 16, 2024 am 12:39 AM

Créez une page produit dans WordPress : 1. Créez le produit (nom, description, images) ; 2. Personnalisez le modèle de page (ajoutez un titre, une description, des images, des boutons) ; 3. Saisissez les informations sur le produit (stock, taille, poids) ; 4 . Créer des variantes (différentes couleurs, tailles) ; 5. Définir la visibilité (publique ou cachée) ; 6. Activer/désactiver les commentaires ; 7. Prévisualiser et publier la page ;

Où se trouve le fichier de modèle WordPress ? Où se trouve le fichier de modèle WordPress ? Apr 16, 2024 am 11:00 AM

Les fichiers de modèles WordPress se trouvent dans le répertoire /wp-content/themes/[theme name]/. Ils sont utilisés pour déterminer l'apparence et les fonctionnalités du site Web, notamment l'en-tête (header.php), le pied de page (footer.php), le modèle principal (index.php), l'article unique (single.php), la page (page.php). , Archive (archive.php), catégorie (category.php), balise (tag.php), recherche (search.php) et page d'erreur 404 (404.php). En éditant et en modifiant ces fichiers, vous pouvez personnaliser l'apparence de votre site WordPress

Comment rechercher des auteurs dans WordPress Comment rechercher des auteurs dans WordPress Apr 16, 2024 am 01:18 AM

Rechercher des auteurs dans WordPress : 1. Une fois connecté à votre panneau d'administration, accédez à Articles ou Pages, saisissez le nom de l'auteur à l'aide de la barre de recherche et sélectionnez Auteur dans Filtres. 2. Autres conseils : utilisez des caractères génériques pour élargir votre recherche, utilisez des opérateurs pour combiner des critères ou saisissez des identifiants d'auteur pour rechercher des articles.

Quelle version de wordpress est stable ? Quelle version de wordpress est stable ? Apr 16, 2024 am 10:54 AM

La version WordPress la plus stable est la dernière version car elle contient les derniers correctifs de sécurité, des améliorations de performances et introduit de nouvelles fonctionnalités et améliorations. Pour mettre à jour vers la dernière version, connectez-vous à votre tableau de bord WordPress, accédez à la page Mises à jour et cliquez sur Mettre à jour maintenant.

WordPress doit-il être enregistré ? WordPress doit-il être enregistré ? Apr 16, 2024 pm 12:07 PM

WordPress nécessite une inscription. Selon les « Mesures de gestion de la sécurité Internet » de mon pays, les sites Web qui fournissent des services d'information sur Internet dans le pays doivent s'enregistrer auprès du bureau provincial local d'information sur Internet, y compris WordPress. Le processus d'enregistrement comprend des étapes telles que la sélection d'un fournisseur de services, la préparation des informations, la soumission d'une demande, l'examen et la publication, ainsi que l'obtention d'un numéro d'enregistrement. Les avantages du dépôt incluent la conformité légale, l’amélioration de la crédibilité, le respect des exigences d’accès, la garantie d’un accès normal, etc. Les informations de dépôt doivent être véridiques et valides, et doivent être mises à jour régulièrement après le dépôt.

See all articles