Jadual Kandungan
Butiran teknikal
Pentadbir kedai melumpuhkan pemalam
woocommerce/includes/admin/class-wc-admin-status.php
woocommerce/includes/log-handlers/class-wc - log-handler-file.php
Rumah Operasi dan penyelenggaraan Keselamatan Bagaimana untuk menyelesaikan kelemahan pemadaman fail sewenang-wenangnya dalam pemalam WordPress WooCommerce

Bagaimana untuk menyelesaikan kelemahan pemadaman fail sewenang-wenangnya dalam pemalam WordPress WooCommerce

May 13, 2023 pm 06:16 PM
wordpress woocommerce

Butiran teknikal

Mekanisme pemprosesan kebenaran WordPress dilaksanakan terutamanya dengan menyediakan fungsi yang berbeza kepada peranan yang berbeza Apabila peranan pentadbir kedai ditakrifkan, ia akan menetapkan fungsi edit_users kepada peranan ini, supaya Mereka boleh terus menguruskan akaun pelanggan kedai. Keseluruhan proses penetapan kebenaran berlaku semasa proses pemasangan pemalam. 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,                ⋮       ));
Salin selepas log masuk

Maklumat kebenaran peranan akan disimpan dalam pangkalan data sebagai tetapan teras WordPress, yang bermaksud bahawa peranan pengguna kini bebas daripada pemalam, walaupun jika pemalam tidak didayakan dan tidak akan menjejaskan kebenaran peranan yang berkaitan.

Apabila pengguna yang disahkan cuba mengubah suai maklumat pengguna lain, fungsi current_user_can() dipanggil dan kemudian memastikan bahawa hanya pengguna istimewa boleh melakukan operasi ini. Contoh panggilan fungsi Current_user_can():

$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) {    edit_user($target_user_id);}
Salin selepas log masuk

Logik pengesahan panggilan adalah seperti berikut: Pengguna ini ingin menggunakan ID $target_user_id untuk mengubah suai pengguna tertentu Adakah dia mempunyai kebenaran untuk melaksanakan?

Di bawah konfigurasi lalai, fungsi edit_users membenarkan pengguna dengan kebenaran (seperti pentadbir kedai) untuk mengedit pengguna lain, malah pengguna pentadbir, dan kemudian melakukan operasi seperti kemas kini kata laluan. Atas sebab keselamatan, WooCommerce perlu menentukan sama ada pentadbir kedai boleh mengedit pengguna, jadi pemalam perlu menambah kebenaran meta. Fungsi meta boleh dipanggil oleh current_user_can(). Nilai yang dikembalikan oleh fungsi di bawah tingkah laku lalai adalah benar, tetapi nilai yang dikembalikan oleh fungsi kebenaran meta boleh menentukan sama ada pengguna semasa boleh melakukan operasi sedemikian. Berikut ialah kod fungsi abstrak penapis kebenaran meta 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');
Salin selepas log masuk

Sebagai contoh, apabila current_user_can('edit_user', 1) dipanggil, penapis akan menentukan bahawa ID ialah 1 ($target_user_id) Sama ada pengguna ialah pentadbir, dan berdasarkan keputusan, tentukan sama ada untuk membenarkan pengguna beroperasi.

Pentadbir kedai melumpuhkan pemalam

Secara lalai, hanya pentadbir boleh melumpuhkan pemalam. Walau bagaimanapun, kelemahan ini membolehkan pentadbir kedai memadamkan sebarang fail boleh tulis pada pelayan, jadi kami boleh menghalang WordPress daripada memuatkan pemalam dengan memadam fail utama WooCommerce-woocommerce.php.

Kerentanan pemadaman fail ini wujud dalam fungsi pengelogan WooCommerce Log akan disimpan dalam direktori kandungan wp dalam bentuk fail .log. Apabila pentadbir kedai ingin memadamkan fail log, dia perlu menyerahkan nama fail sebagai parameter GET. Coretan kod yang ditunjukkan di bawah ialah bahagian yang terdedah:

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']));}
Salin selepas log masuk

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);
Salin selepas log masuk

Masalahnya di sini ialah nama fail ($handle) akan ditambahkan pada direktori log (wp-content/wc-logs/) dan kemudian diserahkan kepada unlink( ) fungsi. Apabila menetapkan "$handle../../plugins/woocommerce-3.4.5/woocommerce.php", failkan wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce php akan dialih keluar dan menyebabkan WooCommerce dilumpuhkan.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan kelemahan pemadaman fail sewenang-wenangnya dalam pemalam WordPress WooCommerce. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP vs. Flutter: Pilihan terbaik untuk pembangunan mudah alih PHP vs. Flutter: Pilihan terbaik untuk pembangunan mudah alih May 06, 2024 pm 10:45 PM

PHP dan Flutter ialah teknologi popular untuk pembangunan mudah alih. Flutter cemerlang dalam keupayaan merentas platform, prestasi dan antara muka pengguna, dan sesuai untuk aplikasi yang memerlukan prestasi tinggi, merentas platform dan UI tersuai. PHP sesuai untuk aplikasi sebelah pelayan dengan prestasi yang lebih rendah dan bukan merentas platform.

Bagaimana untuk menukar lebar halaman dalam wordpress Bagaimana untuk menukar lebar halaman dalam wordpress Apr 16, 2024 am 01:03 AM

Anda boleh mengubah suai lebar halaman WordPress anda dengan mudah dengan mengedit fail style.css anda: Edit fail style.css anda dan tambahkan .site-content { max-width: [lebar pilihan anda]; Edit [lebar pilihan anda] untuk menetapkan lebar halaman. Simpan perubahan dan kosongkan cache (pilihan).

Dalam folder manakah artikel wordpress terletak? Dalam folder manakah artikel wordpress terletak? Apr 16, 2024 am 10:29 AM

Catatan WordPress disimpan dalam folder /wp-content/uploads. Folder ini menggunakan subfolder untuk mengkategorikan pelbagai jenis muat naik, termasuk artikel yang disusun mengikut tahun, bulan dan ID artikel. Fail artikel disimpan dalam format teks biasa (.txt), dan nama fail biasanya termasuk ID dan tajuknya.

Cara membuat halaman produk dalam wordpress Cara membuat halaman produk dalam wordpress Apr 16, 2024 am 12:39 AM

Buat halaman produk dalam WordPress: 1. Buat produk (nama, penerangan, gambar); 4 . Buat variasi (warna, saiz yang berbeza);

Di manakah fail templat wordpress? Di manakah fail templat wordpress? Apr 16, 2024 am 11:00 AM

Fail templat WordPress terletak dalam direktori /wp-content/themes/[theme name]/. Ia digunakan untuk menentukan penampilan dan kefungsian tapak web, termasuk pengepala (header.php), pengaki (footer.php), templat utama (index.php), artikel tunggal (single.php), halaman (page.php) , Arkib (archive.php), kategori (category.php), tag (tag.php), carian (search.php) dan halaman ralat 404 (404.php). Dengan mengedit dan mengubah suai fail ini, anda boleh menyesuaikan penampilan laman web WordPress anda

Bagaimana untuk mencari pengarang dalam WordPress Bagaimana untuk mencari pengarang dalam WordPress Apr 16, 2024 am 01:18 AM

Cari pengarang dalam WordPress: 1. Setelah log masuk ke panel pentadbir anda, navigasi ke Catatan atau Halaman, masukkan nama pengarang menggunakan bar carian, dan pilih Pengarang dalam Penapis. 2. Petua lain: Gunakan kad bebas untuk meluaskan carian anda, gunakan operator untuk menggabungkan kriteria atau masukkan ID pengarang untuk mencari artikel.

Versi wordpress yang manakah stabil? Versi wordpress yang manakah stabil? Apr 16, 2024 am 10:54 AM

Versi WordPress yang paling stabil ialah versi terkini kerana ia mengandungi tampung keselamatan terkini, peningkatan prestasi dan memperkenalkan ciri dan penambahbaikan baharu. Untuk mengemas kini kepada versi terkini, log masuk ke papan pemuka WordPress anda, pergi ke halaman Kemas Kini dan klik Kemas Kini Sekarang.

Apakah bahasa yang digunakan untuk membangunkan WordPress? Apakah bahasa yang digunakan untuk membangunkan WordPress? Apr 16, 2024 am 12:03 AM

WordPress dibangunkan menggunakan bahasa PHP sebagai bahasa pengaturcaraan terasnya untuk mengendalikan interaksi pangkalan data, pemprosesan borang, penjanaan kandungan dinamik dan permintaan pengguna. PHP dipilih atas sebab termasuk keserasian merentas platform, kemudahan pembelajaran, komuniti aktif dan perpustakaan dan rangka kerja yang kaya. Selain daripada PHP, WordPress juga menggunakan bahasa seperti HTML, CSS, JavaScript, SQL, dll. untuk meningkatkan fungsinya.

See all articles