مشکل امنیتی وردپرس در تمام نسخه ها! حل کنید مشکل را
- امنیت وردپرس
- بروزرسانی شده در
طبق گفته ی متخصصان وردپرس، این پلت فرم 29% از وبسایت های اینترنتی جهان را میزبانی می کند. منظور این مقاله٬ ایجاد هر وبسایت وردپرس بصورت آنلاین است و کاری با وردپرس های نصب شده در لوکال هاست سازمان ها و سیستم های شخصی نداریم! حالا یک مشکل امنیتی بوجود آمده. این مشکل از طریق Denial of Service صورت می پذیرد. Denial of Service به این معنی وارد کردن تقاضاهای زیادی به سرور است و امروز بحث این نیست که چگونه وبسایت وردپرس خود را از هک شدن دور کنیم و امنیت را بالا ببریم. بحث امروز ما رفع مشکل امنیتی وردپرس است.
بروزرسانی: این مشکل در نسخه جدید وردپرس برطرف شد.
آنچه در این مقاله میخوانید
۲۹ درصد از سایت های دنیا مشکل امنیت دارند!
به دلیل overload شدن یا حجم زیاد پردازش کننده عملیات سرور در یک بازه زمانی به صورت پی در پی توسط رایانه های مختلف حالا بصورت خواسته یا ناخواسته٬ سرور سایت شما ممکن است با مشکل مواجه شود. چون حجم اطلاعات زیاد است در واقع میزان لود سرور سایت شما افزایش پیدا کرده و اصطلاحا می گوییم سرور Down شده.
توجه داشته باشید که ورود به مسائل امنیتی وبسایت ها غیر قانونی بوده و در صورتی که مدیر وبسایت این اجازه را به شما دهد می توانید وارد مسائل امنیتی یک سایت شوید. در واقع این کار (هک یا اعمال فشار روی یک سایت) با انگیزه های متفاوت توسط گروهی از افراد صورت می پذیرد. اهداف این دسته از گروه ها ممکن است متفاوت باشد مثلاً برای از سر راه برداشتن رقیبان در وبسایت های مختلف. در هر صورت بهتر است برای جلوگیری از این حمله ها راه های پیشگیری را بدانید.
هنگامی که یک سایت با پلت فرم وردپرس ساخته می شود٬ آدرس اینترنتی زیر یک ملاک است برای لود فایل های مورد نیاز پنل مدیریت سایت های وردپرسی: این ادرس در تمام سایت های وردپرس وجود دارد.
https://siteshoma.com/wp-admin/load-scripts.php?c=1&load=jquery-ui-core
فایل load-scripts.php یک پارامتر به نام load [] دریافت می کند، مقدار پارامتر jquery-ui-core است. در پاسخ درخواست “JQuery UI Core” JS module را دریافت می کنیم. مانند تصویر زیر:
حالا این مشکل امنیتی وردپرس چی است؟
از این url می توان نتیجه گرفت که احتمالا این ادرس برای ایجاد فایل و خروجی برخی از ماژول های js است. علاوه بر این پارامتر [] یک آرایه است.که امکان ارائه مقادیر متعدد و قادر به دریافت ماژول های js می باشد. همانطور که وردپرس یک منبع باز است و باز بینی کدها و بررسی این ویژگی ها آسان است. از این ویژگی میتوان برای صرفه جویی برای مقدار درخواست ارسال شده از سرویس گیرنده در هنگام بارگذاری فایل های JS یا CSS استفاده کرد.
بنابراین هنگامی که مرورگر نیاز به بارگذاری چند فایل JS / CSS دارد، از کد اسکریپت (php) برای JS استفاده می شود. برای سریعتر کارکردن پنل مدیریت وردپرس بهتر است همه فایل های js و سی اس اس توسط این فایل بصورت همزمان اجرا شود پس ایجاد این فایل در وردپرس چندان هم بیخود و بی جهت نبوده.
حالا مشکل اینجاست که این مقدار می تواند حدود ۱۸۱ متغیر را در خود جای دهد! لیست متغیر ها:
eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter
اگر هنوز هم به عمق فاجعه پی نبرده اید٬ فیلم آموزشی را ببینید تا متوجه این موضوع شوید.
پس یک هکر نه چندان حرفه ای هم می تواند با چندبار reload کردن صفحه سایت شما را زیر فشار Dos قرار دهید و سایتتان را Down کند. به همین راحتی!
حالا چطور مشکل را حل کنیم؟
اگر سرور سایت دست شماست و دسترسی مستقیم به سرور سایتتان دارید. فیلم آموزشی بالای صفحه را ببینید و به راحتی مشکلتان را حل کنید.
این هم کدی که در فیلم آموزشی به فایل reza.sh اضافه کردم:
#! /bin/bash
if [[ -f wp-login.php && -f wp-admin/load-scripts.php && -f wp-admin/includes/noop.php ]]
then
sed -i "1 s/^.*$/<?php\ndefine('CONCATENATE_SCRIPTS', false);/" wp-login.php
sed -i -e "s/^require( ABSPATH . WPINC . '\/script-loader.php' );$/require( ABSPATH . 'wp-admin\/admin.php' );/g" wp-admin/load-scripts.php
sed -i -e "s/^require( ABSPATH . WPINC . '\/script-loader.php' );$/require( ABSPATH . 'wp-admin\/admin.php' );/g" wp-admin/load-styles.php
echo """<?php
/**
* Noop functions for load-scripts.php and load-styles.php.
*
* @package wordpress
* @subpackage Administration
* @since 4.4.0
*/
function get_file( \$path ) {
if ( function_exists('realpath') ) {
\$path = realpath( \$path );
}
if ( ! \$path || ! @is_file( \$path ) ) {
return '';
}
return @file_get_contents( \$path );
}""" > wp-admin/includes/noop.php
echo 'Successfuly patched.'
else
echo 'Please run this file from WordPress root directory.'
fi
و نحوه کار با این کدها و قراردادن آن در سایتتان را در فیلم ببینید.
اگر هاست اشتراکی دارید کافیست نسخه وردپرسی که انتهای همین پست برای دانلود قرار دادم را نصب کنید. آموزش آپدیت دستی وردپرس را هم ببینید.
موفق و پیروز و سربلند و متخصص امنیت وردپرس باشید 😀
با سلام و احترام
امروز 23 خرداد 98 هست خواستم بپرسم آیا این باگ فیکس شده یا همچنان این مشکل وجود داره؟
ممنون میشم پاسخ بدید
با تشکر
سلام حل شده در نسخه جدید.
بسیار مفید بود جناب مهندس
سلام اگه امکان داره در مورد فایروال سرور بیشتر توضیح بدید
سلام توی دوره آموزش امنیت وردپرس توضیح داده شده.
باسلام. لطفا بهترین افزونه تبدیل تاریخ های میلادی سایت در هر قسمتی به تاریخ شمسی رو معرفی کنید. باتشکر.
سلام
با تشکر از شما. پیشنهادتان بررسی میشود.
باسلام. با توجه به تاریخ این پست و بعد از آن آپدیت شدن وردپرس به نسخه جدید این آپدیت مشکل رو حل کرده؟
چرا خود وردپرس این مشکل رو که 29 درصد سایتها رو تهدید میکنه تا حالا برطرف نکرده؟
باتشکر.
سلام
مشکل برطرف شده است.
سلام
وقت بخیر
اگه مشکل امنیتیه چرا برای سایت خودتون برطرفش نکردید!!!؟؟؟
سلام حل شده. اما از روش فایروال سرور
سلام
در فیلم های آموزشیتان ، با چه نرم افزاری از دسکتاپ فیلم ضبط می کنید ؟
سلام کمتازیا
همه این کارها را انجام دادم ولی باز هم مشکل وجود داره
فایل را دانلود کده و آپدیت نمودم
اگر مراحل را درست پیش رفته باشید به خوبی کار میکند.
من از افزونه افزونه امنیتی وردپرس و فایروال استفاده میکنم ایا نیازی به این کار بود
تازه من این فایل دانلودی شما رو دانلود کردم و در هاست جایگزین کردم
وقتی وارد ادمین میشم هیچ درخواستی رو نداده
انتها
اینو نوشته
شما در حال استفاده از یک نگارش در حال توسعه (5.0-alpha-42964) میباشید٬ ایول!
ولی هیچ تاثیری هم نداشته و باز هکر میتونه کار خودشو انجام بده
یله باز هم نیاز به اینکار است.
اگر درست انجام شود مشکل رفع میشود.
من روی لوکال تست کردم نشد …. به هر حال ممنون
به دلیل کمبود منابع لوکال هاست روی هاست اصلی تست کنید.
سلام
فایل شما را گذاشتم به جای فایل اصلی ورد پرس ولی هیچ فرقی نکرد . شما خودتون فایل را تست کردین ؟
سلام
بله تست شده است.
بنظرم بجای این کارها بهتره برید در خط اول فایل “load-scripts.php” بعد از 20) exit;
در این کد گفته شده اگر تعداد متغیرها بیشتر از 20 تا شد عملیات کنسل بشه این عدد قابل تغییر است.
سلام
حتما باید با لینوکس مشکلو حل کرد با ویندوز نمی شه
سلام هاست شما باید لینوکسی باشه
افزونه all-in-one-wp-security-and-firewall رو معرفی کنید راحت
https://wordpress.org/support/topic/load-scriptphp-fails-to-load/?replies=3
سلام. سایت خودتونم که هنوز همین مشکل رو داره D:
سلام سایت ما از روش دیگه ای مشکل رو حل کرده. از طریق فایروال سرور 😀 سه بار درخواست رو بفرستید و نتیجه رو ببینید. 🙂 آی پی شما سریع بلاک میشه
جالب بود.اما نیاز به این همه اب و تاب نداشت به نظر من
خیلی راحت میشه با password protect directory یا محدود کردن بخش ادمین به ip این مورد رو رفع کرد
ما هیچ مشکلی نداریم با این موضوع چون اصلا اجازه لود این فایل رو نمیدیم و تمام
سلام
درسته اما سایت هایی که مثل سایت ما از عضویت و ورود کاربر استفاده می کنند چی؟
سلام استاد
شما که فرمودید بنده هم به شک افتادم که نکنه کاربر ها مشکلی داشته باشند
اما چک کردم موردی نیست برای لاگین کردن کاربران سایت از بابت password protect directory
در یک صورت مشکلی نیست. اینکه از افزونه هایی مثل یوزر پرو یا theme mylogin استفاده کنید برای ورود کاربر از محیط سایت نه از طریق wp-login.php
سلام
ممنون
توی وردپرسی که گذاشتید کدوم فایل ها دقیقا تغییر داشته که همون ها رو کپی کنیم رو هاست؟
سلام متشکرم
فایل noodp و یه سری فایل دیگه. بهتره با winmegre ادغام کنید دقیقتر فایل ها رو
با سلام
من به هاستم دسترسی دارم سی پنل
یک فایل درسنت کنم و این کدهای معرفی شده رو درون فایل بریزم ایا اسم فایل مهمه چی باشه
بعد در روت هاست بریززم کنار فایل های وردپرس
درود خیر امکانش نیست باید به ssh دسترسی داشته باشید
من هاست اشتراکی دارم یعنی فقط سی پنل و اختصاصی ندارم برای جلوگیری فایل شما را قرار بدم کافیه
درود بله نیازی به انجام مراحل اولیه کار نیست
من فایل رو دانلود کردم ولی انگار اپدیت است و نسخه وردپرس من آخرین ویرایش است
ایا باز هم باید این فایل 12 مگ شما رو دانلود کنم فایل ها رو جایگزین کنم یا لازم نیست
درود با نرم افزار minmerge مقایسه کنید و تغییرات رو اعمال کنید روی وردپرس جدید
از کجا متوجه شیم که این مشکل برای سایت ما دیگه بوجود نمیاد ؟
مثل فیلم آموزشی بعدش هم سایت رو تست کنید
پایین در قسمت پیشخوان این جمله رو نوشته:
شما در حال استفاده از یک نگارش در حال توسعه (5.0-alpha-42619) میباشید
آپدیت دیگه نکنیم تا مشکلش رو وردپرس حل کنه؟
فعلا بله باید صبر کنیم تا مشکل رو حل کنه
سلام
ممنون آموزش بسیار کاربردی بود. دمتون گرم .
خواهش میکنم