آسیبپذیری جدیدی در هسته وردپرس با نام Click2Shell کشف شده است که به مهاجمان اجازه میدهد با فریب دادن مدیران سایت (Administrator) برای کلیک بر روی یک لینک مهندسی شده، کدهای PHP را به صورت از راه دور (Remote Code Execution) اجرا کرده و کنترل کامل وبسایت را در دست بگیرند.
مکانیزم حمله و تحلیل فنی
این نقص امنیتی از جریان کاری پیشنمایش قالبها (Theme-preview workflow) در وردپرس سوءاستفاده میکند. در حالت عادی، وقتی مدیر سایت یک لینک پیشنمایش قالب را باز میکند، وردپرس از API رسمی WordPress.org برای نمایش قالب استفاده میکند. با این حال، محققان PWNAI دریافتند که در حالی که API سمت سرور مقدار ورودی را استانداردسازی (Canonicalize) میکند، جاوااسکریپت در سمت کلاینت مقدار اصلی URL را برای ساخت یک jQuery selector حفظ میکند.
مهاجم میتواند با تزریق سینتکس خاص در این مقدار، باعث شود جاوااسکریپت وردپرس به طور خودکار روی دکمه Install در کارت قالب کلیک کند. در نتیجه، قالبی که مهاجم انتخاب کرده است، بدون اطلاع یا تایید دستی مدیر، از مخزن رسمی نصب میشود. از آنجایی که این فرآیند از Session فعال و Nonce مدیر استفاده میکند، سیستم آن را به عنوان یک درخواست مشروع شناسایی میکند.
از نصب قالب تا RCE
نصب اجباری یک قالب به تنهایی منجر به هک کامل نمیشود، زیرا قالب نصب شده غیرفعال (Inactive) میماند و ظاهر سایت تغییر نمیکند. اما نکته کلیدی اینجاست که وردپرس ممکن است فایل functions.php یک قالب غیرفعال را هنگام پردازش پیشنمایش در Customizer بارگذاری کند.
در اثبات مفهوم (PoC) ارائه شده، محققان از نسخهای آسیبپذیر از یک قالب استفاده کردند که دارای یک تابع AJAX بدون اعتبارسنجی Nonce بود. این ترکیب منجر شد تا مهاجم بتواند یک بسته افزونه (Plugin) مخرب را دریافت و بارگذاری کند و در نهایت منجر به اجرای کد PHP با دسترسیهای وبسرور شود.
پیامدهای امنیتی
- دسترسی به دادههای پیکربندی (wp-config.php) و اعتبارنامههای دیتابیس.
- امکان ایجاد حسابهای مدیر جدید و تغییر محتوای سایت.
- استقرار بدافزار (Malware) و دسترسی به دادههای WooCommerce.
- احتمال تسلط کامل بر محیط Hosting میزبان.
راهکارهای مقابله و رفع مشکل
وردپرس در نسخه 7.1.1 این مشکل را با Escape کردن مقادیر مشتق شده از URL پیش از درج در jQuery selector برطرف کرده است. برای ایمنسازی محیطها، اقدامات زیر توصیه میشود:
- بهروزرسانی فوری: ارتقای هسته وردپرس به نسخه 7.1.1 یا بالاتر.
- پاکسازی: بررسی و حذف تمامی قالبها و افزونههای غیرفعال و بلااستفاده.
- مانیتورینگ: بررسی لاگهای نصب قالب و افزونه و بازبینی فایلهای تغییر یافته اخیر.
- مدیریت دسترسی: بازبینی حسابهای مدیر و اطمینان از اجرای Nonce check در تمامی اکشنهای AJAX.