امنیت سایتها همواره یکی از مهمترین دغدغدههای مدیران سایتها بوده است. یکی از این مشکلات امنیتی حملات xml-rpc در وردپرس میباشد. این پروتکل به تنهایی مشکلی ایجاد نمیکند اما هکرها میتوانند با استفاده از این پروتکل حملات شدیدی به سایت شما کنند و سایت شما را از دسترس خارج کنند.
در این مقاله همراه ما باشید تا با راههای مقابله با این حملات را بررسی نماییم.
حمله xml-rpc چیست؟
xml-rpc مخفف عبارت xml- remote prodecure call به معنای فراخوانی دستورها از راه دور میباشد که با xml و با استفاده از مکانیسم انتقالی ihtttp اطلاعات را منتقل میکند.
این ویژگی اوایل به دلایل امنیتی غیرفعال بود اما از نسخه 3.5 وردپرس بعد از قابل اطمینان دانستن این پروتکل امکان فعال کردن و یا غیرفعال کردن xml-rpc را از منوی پیشخوان وردپرس برداشته و درحال حاضر در نسخههای جدید بطور پیشفرض فعال است.
این پروتکل امکان مدیریت سایت را از راه دور توسط trackbacks و pingbacks از سایر سایتها و بعضی از توابع مربوط با پلاگین jetpack با تلفن همراه و تبلت را فراهم میکند.
به عبارتی دیگر xml-rpc مکانیزمی است که وردپرس با استفاده از آن با سیستمهای دیگر و سایتها ارتباط برقرار میکند.
دلیل ساخت xml-rpc
مکانیزم xml-rpc نخستین بار توسط دیووینر در سال 1998 تولید شد.
اجرای xml-rpc به روزهای اولیه وردپرس برمیگردد؛ در گذشتههای نه چندان دور که وبلاگ نویسی به شدت محبوب بود و سرعت اینترنت بسیار پایین بود، نوشتن و انتشار یک پست در وب زمان بر بوده و به همین خاطر افراد مطالب خود را آفلاین مینوشتند و سپس محتوای خود را در وب جایگذاری میکردند؛ اما این روش نیز دشوار و سخت بود.
در نتیجه بلاگر، برنامه api یا application programming interface را ایجاد کرد که به توسعه دهندگان اجازه دسترسی به وبلاگهای بلاگر را میداد.
وارد شدن به وبلاگ در حالت آفلاین به کاربران اجازه میداد؛ تا بصورت آفلاین مطالب خود را تایپ کرده و سپس از طریق xml-rpc به بلاگر متصل شوند.
دلیل غیرفعال کردن xml-rpc
مکانیزم xml-rpc علاوه بر قابلیتهای مفید نقطه ضعفهایی دارد.
در نسخههای جدید وردپرس این باگ امنیتی تا حد زیادی برطرف شده اما همچنان هکرها میتوانند با درخواست بسیار زیاد به این فایل از متد post را ارسال کنند که منجر به بالا رفتن منابع پردازشی سایت شما شده؛ باعث از دسترس خارج شدن سرور شما میشود.
به نوعی این فایل برای حمله ddos استفاده میشود؛ پس اگر از امکان ارسال از راه دور مثل نرم افزار windows live writer یا اپلیکیشن وردپرس استفاده نمیکنید نیازی به فعال بودن این امکان در وردپرس ندارید، هرچند میتوانید با استفاده از رمزعبورهای قوی و افزونههای امنیتی از وردپرس خود محافظت کنید اما بهتر است این ویژگی را غیرفعال کنید.
حمله ddos چیست؟
حمله ddos مخفف distributed denial of service به معنای حمله بسیار مخرب است که هدف آن ایجاد اختلال ، کند کردن و تخریب سرور است.
درباره بررسی خطای Mixed Content و رفع خطای HTTPS در مرورگر کروم نیز بخوانید.
بدین صورت که هکرها مقدار زیادی ترافیک جعلی را به سرور هدف ارسال کرده و باعث استفاده بیش از حد از منابع پردازشی و در نهایت از کار افتادن سرور میشود.
نقاط ضعف xml-rpc
حملات brute force
در این روش هکرها سعی میکنند با استفاده نام کاربری و رمز عبورهای مختلف از طریق xmlrpc.php وارد سایت شوند.
راهی وجود دارد که از طریق xmlrpc.php به هکرها اجازه میدهد تا از یک خط دستور برای حدس زدن صدها پسورد استفاده و ابزارهای امنیتی سرور را مسدود کنند.
حملات ddos از طریق pingback
یکیدیگر از نقاط ضعف این پروتکل حمله ddoa از طریق pingback است.
در این راه با استفاده از قابلیت Pingback هر هکر میتواند با بدست آوردن تعداد نامحدودی آیپی حملات ddos را بر روی هزاران سایت وردپرس بدون آن که به آنها نفوذ کند ترتیب دهد.
غیرفعال کردن xml-rpc در وردپرس
دو راه برای غیرفعال کردن ویژگی xml-rpc وردپرس برای محافظت در برابر حملات xml-rpc وجود دارد که در ادامه آن ها را بررسی میکنیم.
استفاده از افزونه disable xml-rpc
نصب افزونه disable xml-rpc میتواند این api را غیرفعال کند و شما را در برابر این حملات محافظت کند.
نکته قابل توجه این است که ممکن است افزونههای دیگری از بخش xml-rpc استفاده کنند و غیر فعال کردن کامل این افزونه سایت شما را با اختلال مواجه کند. این افزونه را میتوانید از هاست وردپرس خود یا مخزن وردپرس دانلود و فعال کنید.
کد نویسی در فایل function قالب
یکی دیگر از راههای جلوگیری از این حملات در وردپرس این است که قطعه کد زیر را به فایل function قالب وردپرسی خود اضافه کنید. (با تغییر قالب ممکن است دوباره نیاز باشد تا این کد را به فایل function اضافه کنید):
add_filter('xmlrpc_enabled', '__return_false');
کد نویسی در فایل htaccess هاست
کار آمدترین راه این راه است که دسترسی به پروتکل xml-rpc از سایت غیرفعال میشود. در نهایت از این نوع حملات جلوگیری خواهد شد.
با استفاده از این راه اگر کسی به این پروتکل نیز دسترسی پیدا کند، امکان استفاده از آن را نخواهد داشت.
یکی دیگر از نکات مثبت این روش این است که میتوانید دسترسی آیپی یک دستگاه خاص را فعال کرده و دسترسی دیگر افراد را مسدود کنید.
برای این کار کافیست تا کد زیر را به انتهای فایل htaccess سایت خود اضافه کنید:
<FilesMatch “^(xmlrpc\.php)”> Order Deny,Allow Deny from all Allow from 111.111.111.111 </FilesMatch>
حتما درباره نحوه دسته بندی ویژگی های محصولات در ووکامرس بخوانید.
به جای آیپی 111.111.111.111 آِیپی یا آِیپیهای مجاز را جایگذاری کنید و اگر به کل از این ویژگی استفاده نمیکنید؛ بهتر است به طور کامل خط allow را حذف نمایید.
تست غیرفعال بودن ویژگی xml-rpc
برای تست غیرفعال بودن ویژگی xml-rpc کافیست تا به آخر آدرس سایت خود، /xmlrpc.php را اضافه کرده و در مرورگر جستجو کنید.
اگر با خطای 404 یا 403 مواجه شدید؛ بدین معناست که xml-rpc در سایت شما غیرفعال است.
با این حال اگر از این ویژگی استفاده میکنید از یک افزونه امنیتی مانند wordfense استفاده کنید.
سلام افزونه disable xml-rpc نصب نمیشه خطای امنیتی جدی میدهد چطور رفع کنم؟