آموزش های میزبان هاستامنیتشبکهفروشگاه ساز ووکامرسوردپرس

آسیب پذیری SQL Injection در افزونه WooCommerce

در ۱۵ جولای ۲۰۲۱ که اخبار مربوط به آسیب‌پذیری injection SQL در ووکامرس منتشر شد، ووکامرس پستی در بلاگ خود در خصوص این موضوع منتشر کرد (لینک مطلب). این آسیب‌پذیری‌ها در سیزدهم جولای شناسایی شده و در نسخه های ۳.۳.۶ تا ۵.۵.۱ WooCommerce و نسخه های ۲.۵.۱۶ تا ۵.۵.۱ WooCommerce Blocks رفع شده‌اند. در ادامه یک تحلیل کوتاه از این آسیب‌پذیری، نحوه برطرف کردن و PoC آن خواهیم داشت.

بررسی اصلاحات انجام شده

در پست وبلاگ WooCommerce که در بالا لینک آن را دادیم، می‌توانیم آسیب‌پذیری‌ها را در WooCommerce و افزونه WooCoomerce Blocks مشاهده کنیم.

در اینجا ما ۲ مورد رفع مشکل امنیتی را می‌بینیم که در هر دو، فایل ‘class-wc-webhook-data-store.php’ اصلاح شده است. برای نمایش واضح‌تر روی عکس زیر کلیک کنید 👇

بررسی اصلاحات انجام شده

نحوۀ این اصلاحات واقعاً جالب است. آن‌ها برای بررسی بیشتر این موضوع، یک نسخه از source آسیب‌پذیر آن را بر روی یک سایت وردپرسی راه‌اندازی کرده‌اند (البته که این کار برای نمایش PoC نیز مفید خواهد بود).

میزبان هاست سوشال

از source برنامه می‌فهمیم که آسیب ‌پذیری بر روی API است و می توانیم با ‘woocommerce\packages\woocommerce-blocks\src\StoreApi\RoutesController.php، لیست خوبی از مسیرهای API را مشاهده کنیم.

بررسی اصلاحات انجام شده

با استفاده از آن می‌توانیم مسیر product-collection-data را ببینیم و داخل این مسیر را مشاهده کنیم:

woocommerce\packages\woocommerce-blocks\src\StoreApi\Routes\ProductCollectionData.php’ which looks promising!

بررسی اصلاحات انجام شده افزونه WooCommerce

سرورهای مجازی میزبان هاست

مسیر ما در حال حاضر /wp-json/wc/store/products/collection-data است. از این فایل می‌توانیم به راحتی URL کامل را تهیه کنیم.

اگر به patch اصلی برگردیم، wc_sanitize_taxonomy_name ما را به تایع زیر می‌رساند:

بررسی اصلاحات انجام شده افزونه WooCommerce

پس از جستجو و تحقیق در خصوص استفاده از sanitize_title، به این موارد دست پیدا کردیم:

به صورت پیش‌فرض کاراکترهای نماد آوا را به کارکترهای ASCII  تبدیل می‌کند و حروف الفبا را به مقادیر underscore (_) و dash(-) از طریق فیلتر sanitize_title محدودیت ایجاد می‌کند.

اپلیکیشن میزبان هاست

و این کد همچنین از urldecode استفاده می‌کند، بنابراین اگر ۳ بار URL را encode کنیم، باید یک PoC کاملاً کارا همراه با URL که قبلاً ایجاد شده است داشته باشیم.

استفاده از باگ

با اطلاعاتی که به‌دست آوردیم، اکنون می‌توانیم از این آسیب‌پذیری‌ها استفاده کنیم!

با تمام داده‌هایی که به دست آورده‌ایم، URL نهایی ما به شکل زیر خواهد بود. این پیلود شامل یک دستور sleep ساده در SQL است که صحت آسیب‌پذیر بودن آن را نشان می‌دهد:

http://127.0.0.1:8080/wordpress/wp-json/wc/store/products/collection-data?calculate_attribute_counts[0][taxonomy]=test%252522%252529%252520or%252520sleep%25252810.1%252529%252523

اجرای این PoC در نسخه آسیب پذیر WooCommerce واقعاً کار می‌کند!

میزبان هاست راهکار جامع شبکه و وب

بررسی اصلاحات انجام شده افزونه WooCommerce

پابرگی:

منظور از PoC: مستنداتی که درباره آسیب‌پذیری موجود است و ما از آن برای رفع آسیب‌پذیری‌ها استفاده می‌کنیم.

امتیاز این نوشته

امتیاز

امتیاز کاربران: 4.45 ( 1 رای)

مشاهده بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا