WordPressプラグインWooCommerceにおける任意のファイル削除の脆弱性を解決する方法
技術的な詳細
WordPress の権限処理メカニズムは、主にロールごとに異なる機能を提供することで実装されています。ストア管理者のロールが定義されると、このロールに edit_users 関数が割り当てられ、ストア管理者ができるようになります。ストアの顧客アカウントを直接管理します。権限の割り当てプロセス全体は、プラグインのインストール プロセス中に行われます。 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, ⋮ ));
ロール権限情報は WordPress コア設定としてデータベースに保存されます。つまり、ユーザー ロールはプラグインから独立しています。プラグインは有効になっていないため、関連するロールの権限には影響しません。
認証されたユーザーが他のユーザー情報を変更しようとすると、 current_user_can() 関数が呼び出され、特権ユーザーのみがこの操作を実行できるようにします。 Current_user_can() 関数呼び出しの例:
$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) { edit_user($target_user_id);}
呼び出しの検証ロジックは次のとおりです: このユーザーは、ID $target_user_id を使用して特定のユーザーを変更したいと考えています。実行する権限を持っていますか?
デフォルト設定では、edit_users 関数により、権限を持つユーザー (ストア管理者など) が他のユーザー (管理者ユーザーであっても) を編集し、パスワード更新などの操作を実行できます。セキュリティ上の理由から、WooCommerce ではストア管理者がユーザーを編集できるかどうかを指定する必要があるため、プラグインはメタ権限を追加する必要があります。メタ関数は current_user_can() によって呼び出すことができます。デフォルトの動作で関数によって返される値は true ですが、メタ権限関数によって返される値によって、現在のユーザーがそのような操作を実行できるかどうかが決まります。以下は、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');
たとえば、current_user_can('edit_user', 1) が呼び出されるとき、フィルターは ID が 1 ($target_user_id) であると判断します。ユーザーは管理者であり、その結果に基づいてユーザーに操作を許可するかどうかを決定します。
ストア管理者はプラグインを無効にする
デフォルトでは、管理者のみがプラグインを無効にできます。ただし、この脆弱性により、ストア管理者はサーバー上の書き込み可能なファイルを削除できるため、WooCommerce のメイン ファイル woocommerce.php を削除することで、WordPress がプラグインを読み込まないようにすることができます。
このファイル削除の脆弱性は WooCommerce のログ機能に存在し、ログは .log ファイルの形式で wp-content ディレクトリに保存されます。ストア管理者がログ ファイルを削除したい場合は、ファイル名を GET パラメータとして送信する必要があります。以下に示すコード スニペットは脆弱な部分です:
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);
ここでの問題は、ファイル名 ($handle) がログ ディレクトリ (wp-content/wc-logs/) に追加され、その後 unlink() に渡されることです。関数。 「$handle../../plugins/woocommerce-3.4.5/woocommerce.php」を設定する場合、ファイル wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce.php削除され、WooCommerce が無効になります。
以上がWordPressプラグインWooCommerceにおける任意のファイル削除の脆弱性を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP と Flutter は、モバイル開発でよく使われるテクノロジです。 Flutter は、クロスプラットフォーム機能、パフォーマンス、ユーザー インターフェイスに優れており、高パフォーマンス、クロスプラットフォーム、カスタマイズされた UI を必要とするアプリケーションに適しています。 PHP は、クロスプラットフォームではなく、パフォーマンスが低いサーバー側アプリケーションに適しています。

style.css ファイルを編集することで、WordPress ページの幅を簡単に変更できます。 style.css ファイルを編集し、 .site-content { max-width: [好みの幅] }; を追加します。 [好みの幅]を編集してページ幅を設定します。変更を保存し、キャッシュをクリアします (オプション)。

WordPress の投稿は /wp-content/uploads フォルダーに保存されます。このフォルダーはサブフォルダーを使用して、年、月、記事 ID ごとに整理された記事など、さまざまな種類のアップロードを分類します。記事ファイルはプレーン テキスト形式 (.txt) で保存され、通常、ファイル名には ID とタイトルが含まれます。

WordPress で製品ページを作成します。 1. 製品 (名前、説明、写真) を作成します。 2. ページ テンプレートをカスタマイズします (タイトル、説明、写真、ボタンを追加します)。 3. 製品情報 (在庫、サイズ、重量) を入力します。 4. バリエーションを作成します (さまざまな色、サイズ)。 5. 公開または非表示を設定します。 7. ページをプレビューして公開します。

WordPress テンプレート ファイルは、/wp-content/themes/[テーマ名]/ ディレクトリにあります。これらは、ヘッダー (header.php)、フッター (footer.php)、メイン テンプレート (index.php)、単一記事 (single.php)、ページ (page.php) など、Web サイトの外観と機能を決定するために使用されます。 、アーカイブ (archive.php)、カテゴリ (category.php)、タグ (tag.php)、検索 (search.php)、および 404 エラー ページ (404.php)。これらのファイルを編集および変更することで、WordPress Web サイトの外観をカスタマイズできます。

WordPress で作成者を検索します。 1. 管理パネルにログインしたら、[投稿] または [ページ] に移動し、検索バーを使用して作成者名を入力し、[フィルター] で [作成者] を選択します。 2. その他のヒント: ワイルドカードを使用して検索範囲を広げたり、演算子を使用して条件を組み合わせたり、著者 ID を入力して記事を検索したりできます。

最も安定した WordPress バージョンは、最新のセキュリティ パッチ、パフォーマンスの強化、新機能と改善が導入された最新バージョンです。最新バージョンに更新するには、WordPress ダッシュボードにログインし、[更新] ページに移動して、[今すぐ更新] をクリックします。

WordPressは登録が必要です。私の国の「インターネットセキュリティ管理措置」によれば、国内でインターネット情報サービスを提供するウェブサイトは、WordPress を含め、地方のインターネット情報局に登録する必要があります。登録プロセスには、サービスプロバイダーの選択、情報の準備、申請の送信、審査と公開、登録番号の取得などのステップが含まれます。申請の利点には、法令順守、信頼性の向上、アクセス要件の満たし、通常のアクセスの確保などが含まれます。申請情報は真実かつ有効である必要があり、申請後は定期的に更新する必要があります。
