هکرها در حال اکسپلویت یه آسیب پذیری با شدت بالا در پلاگین محبوب وردپرسی Elementor Pro هستن.
این پلاگین یه صفحه ساز وردپرسی هستش که به کاربران امکان ساخت یه سایت بدون اینکه یه خط کدنویسی بلد باشه رو میده .
آسیب پذیری توسط محققین NinTechNet در 18 مارس کشف شده و نسخه های 3.11.6 و قبل از اون رو تحت تاثیر قرار میده. دارای امتیاز 8.8 و شدت بالا هستش. نسخه اصلاح شده هم نسخه 3.11.7 هستش.
آسیب پذیری روی نسخه پرمیوم تاثیر میزاره و نسخه رایگان این پلاگین موجود در wordpress.org تحت تاثیر این آسیب پذیری نیست.
آسیب پذیری از نوع broken access control هستش و به یه کاربر احراز هویت شده ، مشتری سایت یا عضو سایت ، امکان تغییر تنظیمات و تصاحب کامل سایت رو میده.
وقتی پلاگین Elementor Pro روی سایتی که ووکامرس روش فعاله ، نصب میشه، مولفه زیر رو لوود میکنه :
1 |
elementor-pro/modules/woocommerce/module.php |
این مولفه منجر به ثبت چند اکشن AJAX میشه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/** * 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 هستش که توسط ویرایشگر داخلی المنتور استفاده میشه. این تابع یه تابع دیگه بنام update_option رو فراخوانی میکنه که برای تغییر تنظیمات سایت در دیتابیس ، با دو آرگومان ورودی از طرف کاربر ، قابل استفاده هستش :
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * 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'] ); } |
این تابع در حقیقت به ادمین فروشگاه کمک میکنه که برخی گزینه های WooCommercerce بروزرسانی کنه اما چون ورودی کاربر بررسی نمیشه و همچنین قابلیت محدود کردن دسترسی به امتیاز یه کاربر بالاتر رو هم نداره، آسیب پذیری رخ میده.
المنتور از AJAX handler خودش برای مدیریت بیشتر AJAX action ها از جمله pro_woocommerce_update_page_option با global elementor_ajax action استفاده میکنه که در نسخه رایگان ( که برای اجرای Elementor Pro نیاز هستش) و در مسیر زیر قرار داره :
1 |
elementor/core/common/modules/ajax/module.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/** * 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 هستش که امکان اکسپلویت کردن رو نمیده. اما nonce و همه کدهای جاوااسکریپتش از طریق یه هوک بنام admin_enqueue_scripts در elementor/core/common/app.php قابل لوود هستن :
1 |
add_action( 'admin_enqueue_scripts', [ $this, 'register_scripts' ] ); |
بنابراین در سورس صفحه، به همه کاربران لاگین کرده نشت میده :
یه مهاجم احراز هویت شده ، با فعال کردن users_can_register و تنظیم default_role به administrator ، تغییر ایمیل مدیریتی از طریق admin_email میتونه یه اکانت مدیریتی ایجاد کنه یا همونطور که در شکل زیر میبینید ، میتونه با تغییر siteurl ، کل ترافیک سایت رو به یه سایت مخرب هدایت کنه.
1 2 3 4 5 6 7 |
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 میتونن با افزودن wc-ajax=1 به بک اند دسترسی داشته باشن. مثلا :
1 |
https://example.com/wp-admin/?wc-ajax=1 |
سایت patchstack هم یه گزارشی منتشر کرده در خصوص اکسپلویت این آسیب پذیری توسط هکرها و ریدایرکت اونا به سایت مخرب away[.]trackersline[.]com یا آپلود یه بکدور.
IPهایی که در این کمپین مورد استفاده قرار گرفتن :
- 193.169.194.63
- 193.169.195.64
- 194.135.30.
فایلهای بکدور هم موارد زیر بودن :
- wp-resortpack.zip
- wp-rate.php
- lll.zip