
اگر با وردپرس کار کرده اید، باید بدانید که Elementor یکی از محبوب ترین صفحه سازهای این سیستم مدیریت محتوا است که به شما کمک می کند هر آنچه را که نیاز دارید در ظاهر وب سایت خود، به راحتی و تنها با کشیدن و رها کردن ایجاد کنید. با این حال، همین ابزار محبوب و موثر در نسخه Pro خود دارای یک ضعف امنیتی بزرگ بود که در بنچمارک های CVSS Ver3.1 امتیاز 8.8 را کسب کرد، یعنی شرایط برای حملات سایبری فراهم است! اگرچه وردپرس این مشکل امنیتی را برطرف کرد، هنوز هم کاربرانی هستند که Elementor Pro خود را به روز نکرده اند. به همین دلیل، وب سایت آنها هنوز در معرض تهدید است. در این مقاله از وبلاگ پارس پک در مورد نقص و امنیت Elementor Pro و نحوه رفع آن صحبت خواهیم کرد. پس تا انتها همراه ما باشید.
مشکل امنیتی در Elementor Pro از کجا شروع شد؟
در ابتدا باید توجه داشته باشید که نقص امنیتی ذکر شده فقط در نسخه Pro Elementor وجود دارد. بنابراین افرادی که از نسخه رایگان المنتور استفاده می کنند در معرض این تهدید قرار نگرفتند. با این حال، زمانی که Elementor Pro در وب سایت فروشگاهی که WooCommerce را نیز فعال کرده بود، نصب شد، مولفه elementor-pro/modules/woocommerce/module.php نیز بارگیری شد. این مؤلفه چندین عملکرد AJAX را فعال می کند:
/** * Register Ajax Actions. * * Registers ajax action used by the Editor js. * * @since 3.5.0 * * @param Ajax $ajax */ public function register_ajax_actions( Ajax $ajax ) { // `woocommerce_update_page_option` is called in the editor save-show-modal.js. $ajax->register_ajax_action( 'pro_woocommerce_update_page_option', [ $this, 'update_page_option' ] ); $ajax->register_ajax_action( 'pro_woocommerce_mock_notices', [ $this, 'woocommerce_mock_notices' ] ); }
یکی از آنها pro_woocommerce_update_page_option است که ویرایشگر داخلی Elementor از آن استفاده می کند و تابع update_option را صدا می کند. تابعی که می تواند برای تغییر گزینه های وردپرس در پایگاه داده با استفاده از دو ورودی ارائه شده توسط کاربر استفاده شود:
/** * Update Page Option. * * Ajax action can be used to update any WooCommerce option. * * @since 3.5.0 * * @param array $data */ public function update_page_option( $data ) { update_option( $data['option_name'], $data['editor_post_id'] ); }
یکی از عملکردهای این ویژگی این است که به مدیر وب سایت یا مدیر فروشگاه اجازه می دهد تا برخی از گزینه های خاص WooCommerce را به روز کند. اما در عین حال مشکل اینجاست که از یک طرف ورودی های کاربر تعریف نشده است و از طرف دیگر عملکرد فاقد قابلیت محدود کردن دسترسی به عنوان یک کاربر حرفه ای است.
Elementor از یک کنترلر AJAX برای مدیریت عملکردهایی مانند pro_woocommerce_update_page_option استفاده می کند. این کار با استفاده از elementor_ajax انجام می شود که در اسکریپت elementor/core/common/modules/ajax/module.php نسخه رایگان Elementor قرار دارد و برای اجرای Elementor Pro لازم است:
/** * Handle ajax request. * * Verify ajax nonce, and run all the registered actions for this request. * * Fired by `wp_ajax_elementor_ajax` action. * * @since 2.0.0 * @access public */ public function handle_ajax_request() { if ( ! $this->verify_request_nonce() ) { $this->add_response_data( false, esc_html__( 'Token Expired.', 'elementor' ) ) ->send_error( Exceptions::UNAUTHORIZED ); } ...
با کمی دقت در این کدها، میتوانیم ببینیم که کدهای nonce و همه کدهای JS مرتبط از طریق قلاب admin_enqueue_scripts در اسکریپت elementor/core/common/app.php بارگیری میشوند:
add_action( 'admin_enqueue_scripts', [ $this, 'register_scripts' ] );
نتیجه این است که در منبع صفحه به همه کاربران وارد شده نشت می کند:
معرفی یک آسیب پذیری و مشکل امنیتی در Elementor Pro
بنابراین، یک هکر یا مهاجم که به درستی احراز هویت شده باشد میتواند به راحتی آدرس ایمیل مدیر وبسایت را تغییر دهد و با فعال کردن ثبت نام (users_can_register) و تنظیم ویژگی default_role به Administrator، کنترل کل وبسایت را در دست بگیرد:
MariaDB [example]> SELECT * FROM `wp_options` WHERE `option_name`='siteurl'; +-----------+-------------+------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+------------------+----------+ | 1 | siteurl | https://evil.com | yes | +-----------+-------------+------------------+----------+ 1 row in set (0.001 sec)
ممکن است فکر کنید که این باگ امنیتی به WooCommerce نیاز دارد. بله، اما یک کاربر غیرمجاز نیز می تواند یک حساب مشتری WooCommerce ایجاد کند و پس از ورود به حساب خود از این نقص امنیتی سوء استفاده کند. برای توضیح بیشتر، شخصی که دارای حساب مشتری WooCommerce است با افزودن wc-ajax=1 به درخواست (به عنوان مثال https://example.com/wp-admin/?wc-ajax=1) می تواند به backend برود. دسترسی داشته باشید و همین اتفاق بیفتد.
تاریخ کشف و رفع نقص امنیتی Elementor Pro
همانطور که گفتیم، یک اشکال امنیتی در یک افزونه می تواند هزینه زیادی برای شما داشته باشد. در 18 مارس 2020، این نقص امنیتی در Element Pro کشف شد و به تیم توسعه وردپرس گزارش شد. علاوه بر این، در 22 مارس 2023، باگ امنیتی مذکور با انتشار نسخه 3.11.7 رفع شد و به قفسه باگ های امنیتی رفع شده ارجاع شد. بنابراین اگر هنوز از نسخه های قبلی Element Pro استفاده می کنید، همین حالا به آخرین نسخه ارتقا دهید.
هر آنچه که باید در مورد سیستم مدیریت محتوای وردپرس بدانید را در مقاله زیر بخوانید.
وردپرس چیست؟
نتیجه
هکرها از هر روزنه ای برای نفوذ و خرابکاری وب سایت شما استفاده می کنند. به همین دلیل، امنیت سایبری یکی از مهمترین مفاهیم در دنیای وب است. در 18 مارس 2023، یک حفره امنیتی بسیار مهم در ساختار WordPress Elementor Pro کشف شد که هکرها می توانستند از آن برای کنترل کامل وب سایت استفاده کنند. اگرچه از زمان کشف این مشکل تنها چهار روز طول کشید، اما هنوز وب سایت هایی هستند که باگ امنیتی مذکور را در وب سایت خود برطرف نکرده اند. در این مقاله وبلاگ پارس پاک در مورد این مشکل امنیتی و نحوه رفع آن صحبت کردیم.
سوالات متداول
1. آیا نسخه رایگان المنتور هم مشکلات امنیتی دارد؟
خیر، اشکال امنیتی شناسایی شده فقط در نسخه Pro Elementor وجود دارد.
2. برای رفع مشکل امنیتی Elementor Pro چه باید کرد؟
تنها کاری که باید انجام دهید این است که Elementor Pro خود را به آخرین نسخه ارتقا دهید.
3. چگونه بفهمیم Elementor Pro ما یک مشکل امنیتی دارد؟
اگر از نسخه Elementor Pro قبل از 3.11.7 استفاده می کنید، وب سایت شما در معرض این تهدید امنیتی قرار دارد.