آسیب‌پذیری‌های بحرانی در افزونه File Management وردپرس

نقص‌های خطرناکی در افزونه File Management وردپرس کشف شده است که امکان اجرای حملات مختلفی مانند حذف صفحات سایت و اجرای کد از راه دور را بر روی وب‌سایت فراهم می‌کند.

این افزونه به گونه‌ای طراحی شده است که با استفاده از آن مدیران سایت می‌توانند فایل‌های وب‌سایت خود را به صورت کاملاً حرفه‌ای مدیریت کنند. این افزونه با وجود امکانات بسیار متنوع خود به مدیر این امکان را می‌دهد تا بتواند با این سطوح دسترسی، از دسترسی کاربران مشخص به فایل‌ها بهره‌مند شده و برای هر کاربر به صورت جداگانه پوشه جدید جهت ذخیره فایل راه‌اندازی کند. مدیر می‌تواند دسترسی‌های مختلفی مانند خواندن و یا نوشتن را در اختیار کاربران قرار دهد.
یکی از این نقص‌ها آسیب‌پذیری cross-site scripting ‪(XSS)‬ است که وب‌سایت‌های دارای پلاگین Frontend File Manager را تحت تأثیر قرار داده و به کاربران احراز هویت نشده اجازه می‌دهد کدهای جاوااسکریپت مخرب خود را به منظور ایجاد حساب‌های کاربری ادمین بر روی سایت آسیب‌پذیر تزریق نمایند.
این نقص یکی از ۶ آسیب‌پذیری بحرانی است که نسخه ۱۷.۱ و ۱۸.۲ پلاگین Front File Manager وردپرس را که در بیش از ۲۰۰۰ سایت وردپرسی فعال است تحت تأثیر قرار می‌دهد. وردپرس برای هر ۶ آسیب‌پذیری که در روز دوشنبه به صورت عمومی منتشر شدند وصله‌های امنیتی منتشر نموده است.
محققان Ninja Technologies Network اظهار داشتند این آسیب‌پذیری‌ها راه را برای طیف وسیعی از حملات اجرای کد از راه دور که هکرها را قادر به تغییر یا حذف پست‌‌ها، تقویت اسپم‌ها، امکان ارتقاء سطح دسترسی و انجام حملات stored cross-site scripting ‪(XSS)‬ بر روی سایت‌های وردپرسی می‌سازد باز می‌کنند. شرح این ۶ آسیب‌پذیری در زیر آورده شده است:


آسیب‌پذیری Stored XSS
به گفته‌ی محققان، نقص XSS امکان تزریق محتوای غیرمجاز  به وب‌سایت را فراهم می‌کند.
AJAX action ‪"wpfm_edit_file_title_desc"‬ یک تابع " wpfm_edit_file_title_desc" را بارگیری می‌کند که هنگام ویرایش پست‌های سایت مورد استفاده قرار می‌گیرد. این تابع فاقد امنیت است، چرا که تأیید نمی‌کند آیا کاربران در حال ویرایش پست‌های خود هستند یا خیر. بنابراین، یک کاربر احراز هویت نشده می‌تواند محتوا و عنوان هر صفحه و هر پستی از سایت را به دلخواه خود تغییر دهد.
علاه بر آن، اگر پست از نوع wpfm-files باشد، امکان تزریق کد جاوااسکریپت در title پست وجود دارد، چرا که این افزونه برای sanitize متغیر REQUEST‪[‘file_title’]‬_$ فقط به تابع esc_attr متکی است که در آن خروجی attributeهای HTML در بک‌اند نشان داده خواهد شد و زمانی که کاربر مدیر از صفحه‌ی تنظیمات افزونه بازدید می‌کند کد جاوااسکریپت اجرا می‌شود. بنابراین، یک کاربر احراز هویت نشده می‌تواند به منظور ایجاد یک حساب کاربری ادمین کد جاوااسکریپت دلخواه خود را تزریق نماید.


ارتقاء سطح دسترسی
این نقص، از عملکرد تابع "wpfm_get_current_user" ناشی می‌شود. این تابع برای بازیابی شناسه کاربر از اسکریپت "nmedia-user-file-uploader/inc/helpers.php" مورد استفاده قرار می‌گیرد.
محققان تشریح کردند:"اگر کاربر احراز هویت شده باشد شناسه‌ی کاربر از تابع get_current_user_id در وردپرس، و اگر لاگین نکرده باشد از گزینه wpfm_guest_user_id در افزونه بازگردانده می‌شود." این بدان معناست که کاربر چه احراز هویت شده باشد چه نشده باشد می‌تواند هر شناسه‌ای را به متغیر GET‪[‘file_owner’]‬_$ اختصاص دهد تا i$current_user_id L318را نادیده بگیرد و از این طریق ارتقاء سطح دسترسی را منجر شود.


تغییر تنظیمات و بارگذاری فایل‌های دلخواه
آسیب‌پذیری دیگر به کاربر احراز هویت شده اجازه می‌دهد تنظیمات افزونه را تغییر دهد. تابع "wpfm_save_settings" از اسکریپت "nmedia-user-file-uploader/inc/admin.php"، توسط wpfm_save_settings AJAX action بارگیری می‌شود و برای ذخیره‌ی تنظیمات افزونه مورد استفاده قرار می‌گیرد که هیچ قابلیت امنیتی برای آن در نظر گرفته نشده است. بنابراین، مهاجم می‌تواند با اضافه کردن PHP به لیست نوع‌فایل‌های مجاز، از این آسیب‌پذیری بهره‌برداری نماید.
تجزیه و تحلیل‌ها نشان می‌دهد با استفاده از  AJAX action ‪" wpfm_upload_file"‬، مهاجم می‌تواند یک اسکریپت PHP بارگذاری کند که به صورت " http://example.com/wp-content/uploads/user_uploads/<username>/<file>.php" در دسترس باشد و منجر به اجرای کد از راه دور شود.


حذف پست
آسیب‌پذیری چهارم به یک مهاجم احراز هویت نشده اجازه می‌دهد هر صفحه و پستی را از سایت حذف کند.
AJAX action ‪" wpfm_delete_file"‬ به صورت غیرمجاز تابع " wpfm_delete_file" را از اسکریپت " nmedia-user-file-uploader/inc/files.php" بارگیری می‌کند، یک شناسه REQUEST‪[‘file_id’]‬_$ می‌گیرد و پست مربوطه را حذف می‌کند. مشکل اینجاست که این افزونه تأیید نمی‌کند که آیا کاربر مجاز است پست را حذف کند یا خیر و از این جهت فاقد امنیت لازم است.


تغییرغیرمجاز متادیتای پست و دانلود فایل‌های دلخواه
مهاجمان همچنین می‎‌توانند متادیتای پست‌ها را به دلخواه خود تغییر دهند که می‌تواند منجر به دانلود فایل‌های دلخواه شود. wpfm_file_meta_update’ AJAX action تابع " wpfm_file_meta_update" را به صورت غیرمجاز از اسکریپت " nmedia-user-file-uploader/inc/files.php" بارگیری می‌کند و برای تغییر متادیتای پست‌ها مورد استفاده قرا ر می‌گیرد. داده‌ها اعتبارسنجی یا Sanitize نمی‌‍شوند و هیچ اقدام امنیتی برای آن در نظر گرفته نشده است.
طبق تجریه و تحلیل‌های صورت گرفته، مهاجمان با اختصاص دادن " wpfm_dir_path" به " meta_key$"و "wp-config.php" برای "meta_value$" می‌توانند از این حفره امنیتی برای تغییر متادیتای پست‌ها سوءاستفاده کنند و سپس به جای فایل بارگذاری شده، اسکریپت "w5p-config.php" را دانلود کنند.


تزریق HTML غیرمجاز
آخرین آسیب‌پذیری به کاربر احراز هویت نشده اجازه می‌دهد از وب‌سایت به عنوان spam relay استفاده کند. این نقص از تابع " wpfm_send_file_in_email" در اسکریپت " nmedia-user-file-uploader/inc/callback-functions.php" ناشی می‌شود و برای کاربر امکان ارسال ایمیل را فراهم می‌کند.
از آنجا که ایمیل‌ها در فرمت HTML ارسال می‌شوند و مورد بررسی قرار نمی‌گیرند، می‌توان کد HTML (در قالب متن، تصویر، CSS و غیره) در آن‌ها تزریق کرد تا ایمیل به طور کامل سفارشی شود. علاوه بر این، حتی اگر REQUEST‪[‘file_id’]‬_$ خالی یا نامعتبر باشد، پیام به هر حال ارسال می‌شود.


توصیه امنیتی
کاربران به منظور محافظت از خود در برابر این حملات، باید افزونه‌ی خود را به نسخه‌ی ۱۸.۳ یا بالاتر ارتقاء دهند.

 

منبع خبر:https://threatpost.com/frontend-file-manager-wordpress-bugs/167687