XML-RPC یکی از ویژگیهای وردپرس است که امکان انتقال دادهها را فراهم میکند. برای مثال حالتی را تصور کنید که به کامپیوتر شخصی خود دسترسی ندارید و میخواهید از طریق تلفن همراه اطلاعاتی در وبسایت منتشر کنید. در اینجا باید از ویژگی دسترسی از راه دور فعال شده توسط xmlrpc.php استفاده کنید.
xmlrpc چیست و فایل xmlrpc.php چه کاربردی دارد؟
XML-RPC یا XML Remote Procedure Call یکی از ویژگیهای پیش فرض در نسخه 2/6 وردپرس است.
همانطور که در بالا گفته شد گاهی وردپرس نیاز دارد تا از طریق پروتکل http با دیگر سیستمها ارتباط برقرار کرده و تبادل داده داشته باشد.
این ارتباط از طریق فایل xmlrpc.php موجود در فایلهای پیش فرض وردپرس انجام میشود. با استفاده از این فایل، cms وردپرس از طریق یک ارتباط http و با کمک xml میتواند به سیستمهای خارج از سرور متصل شده و تغییراتی را در وبسایت ایجاد کند.
در ابتدا ایده توسعه این ویژگی در وردپرس، یک API به منظور ایجاد دسترسی ارتباط از راه دور (Remote Connection) با پیشخوان وردپرس برای کاربران آن بود. در حال حاضر نیز اتصال به پیشخوان از طریق برخی اپلیکیشنهای مرتبط نظیر xmlrpc.client، امکانپذیر است.
جالب است بدانید که به علت کاربردهای خطرناک این فایل، در برخی آپدیتهای قبلی وردپرس، توسعهدهندگان آن تصمیم به حذف این فایل از وردپرس گرفتند اما بعد از مدتی مجددا به دلایل مختلف به وردپرس بازگردانده شد.
راه های سوء استفاده از xmlrpc
متاسفانه از همان ابتدا آسیبپذیریهای این فایل مورد توجه هکرها و باگ هانترها قرار گرفت.
این اشخاص میتوانند با ایجاد یک اتک Brute Force بر روی این فایل رمز عبور پیشخوان وردپرس را حدس زده و کنترل وبسایت را به دست بگیرند.
حتی در برخی موارد، درگیری سایت با این اتک منجربه کندی سرعت سایت، مصرف منابع زیاد یا تاخیر بیش از حد معمول در بارگزاری آن شود.
اتک Brute Force یک اتک قدیمی و مرسوم میان هکرها است که طی آن هکر با ابزارهای موجود، تلاش میکند تا با ایجاد درخواستهای متعدد برروی یک فرم یا فایل، مشخصات و رمزهای مختلف را بررسی کرده تا در نهایت به رمز عبور صحیح سیستم برسد.
این اتک زمانی میتواند موفق باشد که فایروال یا سیستمی بر روی وبسایت، برای بررسی درخواستهایی به این شکل وجود نداشته باشد. همچنین فرد بر روی سیستم یا وبسایت خود از پسوردهای ضعیف و به دور از پیچیدگیهای لازم استفاده کرده باشد.
جلوگیری و محافظت از xmlrpc.php
برای این که وبسایت شما در معرض حملات xmlrpc قرار نگیرد، آپدیت کردن افزونهها و استفاده از یک افزونه امنیتی دارای فایروال که درخواستهای وبسایت را کنترل کند، تا حدودی تاثیرگذار است. توصیه میشود اقدامات جزئیتری نیز در این خصوص انجام دهید تا مشکل جدیتری برای وبسایت رخ ندهد.
برای بررسی باز بودن فایل xmlrpc بر روی وبسایت میتوانید url زیر را در مرورگر وارد نمایید و نتیجه را مشاهده کنید(به جای domain.com آدرس دامنه خود را قرار دهید):
اگر این فایل بر روی وبسایت شما در دسترس عموم باشد، پاسخ زیر را در صفحه مرورگر مشاهده خواهید کرد:
XML-RPC server accepts POST requests only.
یکی از بهترین اقدامات در جهت محافظت از این اتک، مسدود کردن دسترسی عمومی (خارج از وبسایت) به این فایل است.
ما قطعه کدی را تهیه کردهایم که با جایگذاری آن در فایل htaccess سایت، موجود در پوشه public html، این مشکل را برطرف میکند. همچنین مواردی دیگری نیز جهت افزایش امنیت وبسایت به این کد اضافه شده است که در ادامه به توضیح هر یک میپردازیم.
## BEGIN WordPress Advanced htaccess By IranServer Security Team ##
Block WordPress xmlrpc.php requests#
<Files xmlrpc.php>
order deny,allow
deny from all
<Files/>
Restrict Uploading Files to WordPress directories #
Options -Indexes
Deny access to all .htaccess files #
<“files ~ “^.*\.([Hh][Tt][Aa])>
order allow,deny
deny from all
satisfy all
<files/>
Block WordPress wp-config.php requests #
<files wp-config.php>
order allow,deny
deny from all
<files/>
Default htaccess file#
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
/ RewriteBase
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
## END WordPress Advanced htaccess ##
در بخش اول دسترسی به فایل xmlrpc.php مسدود شده است. بخش دوم نیز از آپلود فایل در پوشههای وردپرس محافظت میکند. بخش سوم و چهارم قطعه کد نیز به ترتیب دسترسی عمومی به فایلهای htaccess و wp-config.php سایت را محدود میکنند. در ادامه نیز کدهای پیش فرض htaccess وردپرس و rewrite rule های مربوطه نوشته شدهاند.
پس از ذخیره این کدها در htaccess وبسایت میتوانید مجددا url فوق را بررسی کنید. (https://domain.com/xmlrpc.php) و در صورت اعمال تنظیمات به صورت صحیح، خطای 403 دریافت خواهید کرد. این خطا نشان میدهد که شما دسترسی به مشاهده یا درخواست این فایل را ندارید.
[irp posts=”3925″ name=”16 راهکار کارآمد برای افزایش امنیت وردپرس”]حرف آخر
همانطور که گفته شد xmlrpc یکی از قابلیتهای وردپرس است که در کنار مزایا خود دارای معایبی است که میتواند امنیت سایت وردپرسی را تهدید کند. بنابراین با نگارش این مقاله سعی کردیم راههای محافظت از این قابلیت را برای شما توضیح دهیم. ما در ایران سرور معتقدیم که افزایش سطح امنیت با افزایش آگاهی کاربران عزیزمان اتفاق میافتد. از همین رو امیدواریم این مقاله، افزایش دانش فنی و آگاهی شما را به همراه داشته باشد.