هر فردی که یک وبسایت وردپرسی را مدیریت میکند، احتمالا با تابع XML-RPC آشنایی دارد. این رابط برنامهنویسی (API) در وردپرس، امکان تعامل با سایت از طریق برنامههای خارجی را فراهم میکند. با این حال، به دلیل محدودیتها و آسیبپذیریهای امنیتی، API های مدرنتری مانند REST و GraphQL جایگزین مناسبتری هستند.
با وجود کاربردهای XML-RPC، این ابزار یکی از نقاط ضعف امنیتی وردپرس محسوب میشود. متأسفانه، فایل xmlrpc.php در برابر انواع مختلف خطرات امنیتی مانند حملات بروت فورس و DDoS آسیبپذیر است. با غیرفعال کردن XML-RPC، مالکان سایتهای وردپرسی میتوانند امنیت وبسایت را افزایش داده و از سایت خود در برابر چنین تهدیداتی محافظت کنند. در این مقاله، مزایای غیرفعال کردن XML-RPC بررسی شده و راهنمایی کاملی در مورد نحوه دستیابی به این هدف با استفاده از کد یا یک افزونه امنیتی ارائه خواهد شد.
چرا باید XML-RPC را غیرفعال کنید: مزایای امنیتی
با غیرفعال کردن XML-RPC، میتوانید امنیت سایت خود را به طور قابل توجهی بهبود بخشیده و در برابر تهدیدات مختلف محافظت کنید. در ادامه مزایای اصلی غیرفعال کردن XML-RPC توضیح داده می شود:
محافظت در برابر حملات brute force با غیرفعال کردن XML-RPC
حملات بروت فورس یکی از رایجترین تهدیداتی هستند که سایتهای وردپرسی با آنها مواجه میشوند. این حملات به صورت خودکار تلاش میکنند تا با امتحان کردن ترکیبات مختلف نام کاربری و رمز عبور، اطلاعات ورود به سیستم را حدس بزنند. با توجه به تعداد زیاد رمزهای عبور ضعیف و استفاده مداوم کاربران از آنها، حملات بروت فورس میتوانند یک روش بسیار موثر برای دسترسی غیرمجاز باشند.
مهاجمان اغلب برای اجرای حملات بروت فورس، روی XML-RPC تمرکز میکنند. هکرها با ارسال درخواست های متعدد از طریق روشهایی مانند system.multicall، میتوانند صدها یا حتی هزاران ترکیب رمز عبور را به طور همزمان امتحان کنند. چنین تاکتیکی احتمال نفوذ به سایت را افزایش میدهد.
غیرفعال کردن XML-RPC خطر قربانی شدن در حملات بروت فورس را کاهش میدهد. با حذف فایل xmlrpc.php، سطح حمله هکرها را محدود میکنید و خودکارسازی تلاش ها جهت حدس زدن اطلاعات ورود به سیستم، برای آنها دشوارتر می شود. یک قدم ساده میتواند جهت محافظت از سایت در برابر دسترسی غیرمجاز و حفظ امنیت دادهها و اطلاعات کاربران شما بسیار موثر باشد.
جلوگیری از آسیبپذیریهای DDoS
با غیرفعال کردن XML-RPC میتوان تا حدودی حمله DDoS را مهار کرد. در یک حمله DDoS، چندین سیستم آلوده، سرور وبسایت هدف را با ترافیک بسیار بالا تحت فشار قرار میدهند و عملکرد آن را مختل میکنند. این حملات میتوانند دسترسی کاربران عادی به سایت را غیرممکن نمایند و موجب از دست دادن درآمد، آسیب به شهرت و نارضایتی مشتریان شوند. حملات DDoS در سالهای اخیر به طور چشمگیری افزایش یافته است. با افزایش 74 درصدی این نوع حملات در سال 2022، مالکین وبسایتها باید اقدامات پیشگیرانهای برای محافظت از سایتهای خود انجام دهند.
تصویر(1)
یکی از رایجترین حملات DDoS که به وسیله XML-RPC انجام می گیرد، حمله "pingback" است. در این حمله، هکرها از یک ویژگی خاص وردپرس به نام "pingback" سوءاستفاده میکنند. آنها توسط فایل xmlrpc.php تعداد زیادی درخواست pingback به سرور شما ارسال مینمایند و باعث میشوند سرور از کار بیفتد.
نکته: پینگ بک (Pingback) یک سیستم اطلاعرسانی خودکار در وبلاگنویسی است. وقتی شما در پستی به وبلاگ دیگری لینک میدهید، یک پینگ بک به صورت خودکار برای آن وبلاگ ارسال میشود. این پینگ بک به مالک وبلاگ مقصد اطلاع میدهد که شما به محتوای او لینک دادهاید.
اجرای کد دلخواه (ACE) و تزریق کد از راه دور
آسیبپذیری ACE به مهاجمان اجازه میدهد تا کد دلخواه خود را روی سرور اجرا کنند. این مشکل از آنجا نشات میگیرد که تجزیه کننده XML در PHP، دادههای دریافتی از کاربر را بدون بررسی و پاکسازی، مستقیما به یک تابع قدرتمند با نام ()eval ارسال میکند. این تابع هر کدی که به آن داده شود را بیچون و چرا اجرا می نماید.
در نتیجه، مهاجم میتواند با ارسال یک درخواست خاص، قطعه کدی را به سرور تزریق کرده و هر کاری که بخواهد انجام دهد. مثلاً میتواند یک درب پشتی ایجاد کند تا در آینده مجددا به سرور نفوذ کرده یا اطلاعات مهم را سرقت نماید. در واقع مهاجم با این کار کنترل سرور را کاملا در دست میگیرد.
حمله جعل درخواست سمت سرور (SSRF)
با روش پینگ بک XML-RPC، میتوان SSRF را برای دور زدن فایروالها و افشای آدرس IP واقعی یک سرور که از CDN استفاده می کند، بهره برد. با فریب دادن سرور برای ارسال درخواست به آدرس تحت کنترل هکر، آدرس IP واقعی کاربر لو میرود و ممکن است دادههای حساس نشت پیدا کنند.
چرا XML-RPC از وردپرس حذف نشده است؟
XML-RPC به طور پیشفرض در سال 2012 توسط وردپرس فعال گردید و برای انتشار از راه دور، پینگ بکها و ترک بکها (trackbacks) استفاده میشد. در حالی که REST API تا حد زیادی جایگزین آن شده است اما XML-RPC همچنان در وردپرس برای پشتیبانی از سیستمهای قدیمی وجود دارد.
حذف کامل XML-RPC موجب از کار افتادن افزونهها و قالبهای قدیمی که عملکرد آنها به XML-RPC وابسته است، خواهد شد. اگرچه به سایتهای جدید توصیه میشود برای امنیت و عملکرد بهتر از REST API استفاده کنند اما حفظ سازگاری با سیستمهای قدیمی همچنان یک اولویت برای تیم وردپرس است. در نتیجه، XML-RPC علیرغم خطرات امنیتی بالقوه خود، همچنان بخشی از وردپرس می باشد.
چگونه باید XML-RPC را به طور ایمن غیرفعال کرد؟
خوشبختانه غیرفعال کردن XML-RPC نسبتاً ساده است و میتوانید این کار را از طریق فایل htaccess. سایت خود یا افزونه امنیتی انجام دهید. ابتدا با استفاده از مراحل زیر مطمئن شوید XML-RPC در سایت شما فعال است:
نحوه بررسی فعال بودن XML-RPC در وردپرس
- به وبسایت XML-RPC Validator مراجعه کنید.
تصویر(2)
- نام دامنه سایت خود را در فیلد ارائه شده وارد کنید.
- روی دکمه "Check" کلیک نمایید.
- اگر پیام موفقیت آمیز بودن را مشاهده کردید، XML-RPC در سایت وردپرسی شما فعال است.
اگر قابلیت XML-RPC فعال می باشد، جای نگرانی نیست. کدهای افزونهها و قالبهای وبسایت خود را بررسی کنید که آیا برنامهای از این قابلیت استفاده میکند یا خیر. میتوانید با استفاده از نرمافزار FTP یا کنترل پنل هاست (مانند cPanel) این کار را انجام دهید.
تصویر(3)
در پوشه افزونهها (/wp-content/plugins) و قالب (/wp-content/themes) دنبال هرگونه ارجاع به فایل xmlrpc.php باشید.
همچنین میتوانید با استفاده از یک کد ساده، بررسی کنید که آیا برنامهای از XML-RPC استفاده میکند یا نه:
add_filter('xmlrpc_enabled','__return_true');
اگر استفاده از قابلیت XML-RPC ضروری باشد، صاحبان سایت میتوانند از اقدامات امنیتی استفاده کنند که در ادامه این مقاله توضیح داده خواهد شد.
غیرفعال کردن XML-RPC از طریق فایل htaccess.
بسته به مهارتهای کدنویسی خود، میتوانید عملکرد XML-RPC را در وردپرس از طریق فایل htaccess. غیرفعال کنید. htaccess. فایلی است که تنظیمات مختلف سرور مانند ریدایرکت ها، ویژگیهای امنیتی و… را در وردپرس کنترل میکند. این فایل در دایرکتوری اصلی سایت شما قرار دارد. قبل از انجام هرگونه تغییر در فایل htaccess.، یک نسخه پشتیبان از آن تهیه کنید. این کار تضمین میکند که در صورت بروز مشکل، به سرعت میتوانید فایل اصلی را بازیابی نمایید.
برای غیرفعال کردن xmlrpc.php با استفاده از فایل htaccess.، دستورالعملهای گام به گام زیر را دنبال کنید:
- از طریق FTP یا File Manager کنترل پنل هاست خود، به فایل htaccess. در دایرکتوری اصلی سایت دسترسی پیدا کنید.
- فایل htaccess. را در یک ویرایشگر متن باز نمایید.
- قطعه کد زیر را به فایل اضافه کنید:
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
- اگر از سرور آپاچی نسخه 2.4 یا بالاتر استفاده می نمایید، به جای آن کد زیر را وارد کنید:
<Files "xmlrpc.php">
Require all denied
</Files>
- تغییرات را ذخیره نمایید.
- با استفاده از XML-RPC validator تغییرات را بررسی کنید. اکنون فایل xmlrpc.php باید غیر قابل دسترسی باشد.
راهنمای گام به گام برای غیرفعال کردن XML-RPC با استفاده از افزونه Solid Security
در حالی که غیرفعال کردن XML-RPC از طریق فایل htaccess. یک روش موثر برای افراد حرفه ای می باشد اما ممکن است با خطراتی نیز همراه شود. حتی یک خطای کوچک در کدنویسی میتواند کل سایت را از کار بیندازد.
ایمنترین و سادهترین روش برای غیرفعال کردن XML-RPC استفاده از یک افزونه امنیتی مانند Solid Security است.
پس از نصب افزونه، میتوانید XML-RPC را با دنبال کردن این مراحل ساده غیرفعال کنید:
- به بخش "امنیت وردپرس > تنظیمات > پیشرفته" در داشبورد وردپرس بروید.
تصویر(4)
- طبق تصویر زیر وارد بخش امنیت وردپرس شوید.
تصویر(5)
- تنظیمات XML-RPC را در کنار API Access بیابید.
تصویر(6)
- برای غیرفعال کردن کامل، لازم گزینه "XML-RPC را غیرفعال کنید" انتخاب شود.
- سپس روی "ذخیره" کلیک نمایید.
توجه داشته باشید که غیرفعال کردن XML-RPC ممکن است با برخی افزونهها یا سرویسهایی که به این قابلیت وابستهاند، تداخل ایجاد کند. اگر پس از غیرفعال کردن XML-RPC با هرگونه مشکلی روبرو شدید، تنظیمات را به حالت قبل برگردانید و با پشتیبانی افزونه ای که از XML-RPC استفاده می کند تماس بگیرید.
نتیجه گیری
xmlrpc.php مانند یک درب پشتی برای وردپرس است که هکرها میتوانند از آن جهت ورود غیرمجاز به سایت استفاده کنند. با بستن این در، امنیت سایت شما به طور قابل توجهی افزایش پیدا میکند. البته، غیرفعال کردن xmlrpc.php به تنهایی کافی نیست و باید سایر اقدامات امنیتی را نیز انجام دهید تا سایت شما در برابر حملات مختلف ایمن بماند.