نحوه یافتن backdoor در یک سایت وردپرس هک شده و رفع آن
بارها پیش آمده که کاربران از ما جهت بازسازی سایت وردپرسشان که هک شده کمک میخواهند. اکثر این کاربران زمانی کمک میخواهند که چندین بار سایت را پاکسازی کرده اند اما همچنان هکرها راهی برای بازگشت پیدا میکنند. زمانی که سایت را بطور کامل پاکسازی نکنید یا ندانید باید دنبال چه چیزی برای پاکسازی بگردید این اتفاق ممکن است بیفتد. در اکثر موارد، ما یک راه مخفی (backdoor) را پیدا میکنیم که توسط هکرها ایجاد شده تا به وسیله آن مسیر عادی احراز هویت را دور بزنند. در این مقاله ما به شما نشان میدهیم چگونه این راه مخفی را در سایت وردپرس پیدا کنید و آن را از بین ببرید.
Backdoor (راه خفی) چیست؟
Backdoor روشی برای دورزدن احراز هویت معمولی و به دست آوردن راهی برای دسترسی به سرور بصورت مخفی است. اکثر هکرهای باهوش همواره این راه مخفی خود را بروزرسانی میکنند. این کار به آنها اجازه میدهد تا هرزمان که شما راه مخفی آنها را پیدا و مسدود کردید راه دیگری برای نفوذ داشته باشند. راه های مخفی اغلب پس از بروزرسانی وردپرس نیز در سایت باقی میمانند.
برخی backdoor ها به سادگی به کاربران امکان ایجاد نام کاربری مخفی برای ورود به قسمت مدیریت را فراهم میکنند. درحالی که برخی backdoor های پیچیده تر به هکرها امکان اجرای کدهای php و ارسال آن به مرورگر را میدهند. و در انواع پیشرفته تر، آنها میتوانند بوسیله سرور شما ایمیل اسپم ارسال کنند، دستورات SQL اجرا کنند و هر کار دیگری که میخواهند را انجام دهند.
این کد در کجا مخفی شده؟
بکدور روی وردپرس معمولا در فایل های زیر مخفی میشود:
1- قالب ها (themes)- در اکثر موارد این راه مخفی در قالبی که استفاده میکنید نیست. هکرها میخواهند که کدشان با بروزرسانی های هسته همچنان باقی بماند. بنابراین اگر قالبی دارید که قدیمی است یا اکنون از آن استفاده نمیکنید امکان دارد که این راه مخفی در دایرکتوری آن قالب باشد. به همین دلیل است که همیشه توصیه میشود که قالب های غیر فعال را حذف کنید.
2- پلاگین ها – پلاگین ها بزرگترین محل تجمع backdoor هایی هستند که توسط هکرها ایجاد میشوند. این موضوع 3 دلیل دارد. اول به این علت که صاحبان وبسایت ها اغلب پلاگین ها و کدهای مربوط به آنها را بررسی نمیکنند. دوم اینکه اغلب کاربران پلاگین ها، علاقه ای به بروزرسانی پلاگین ها ندارند. و سوم اینکه برخی از پلاگین ها ممکن است کدنویسی ضعیفی داشته باشند که همین موضوع باعث میشود از نظر امنیتی ضعیف باشند.
3- دایرکتوری Uploads- اگر یک وبلاگ نویس باشید هیچ گاه این دایرکتوری را بررسی نمیکنید. شما تعداد زیادی تصویر در این دایرکتوری آپلود میکنید و از آن در پست هایتان استفاده میکنید. ممکن است هزاران تصویر در فولدر uploads داشته باشید که بصورت جداگانه براساس ماه و سال تقسیم بندی شده اند. این کار برای هکرها بسیار آسان است که backdoor خود را در فولدر upload آپلود کنند زیرا بین هزاران فایلی که خودتان آپلود کرده اید پنهان میشوند. بعلاوه شما معمولا بطور مرتب آنها را بررسی نمیکنید. اکثر کاربران از پلاگین هایی مانند sucuri که این مسیر را مانیتور میکنند استفاده نمیکنند. درنهایت به این علت که دایرکتوری upload قابل نوشتن است هدف بسیار مناسبی برای انجام این کار است. بسیاری از backdoor ها در این مسیر یافت میشوند.
4- فایل wp-config.php – این فایل یکی از بهترین اهداف برای هکرها میباشد و یکی از فایل هایی است که در بررسی های اولیه به کاربران گفته میشود تا به آن نگاه بیندازند.
5- فولدر Includes- فولدر wp-includes محل دیگری است که معمولا backdoor ها در آن یافت میشوند. برخی هکرها راه های مخفی خود را در بیش از یک فولدر جایگذاری میکنند. زمانی که یکی از فایل های خود را در جایی آپلود کردند برای اطمینان بیشتر از ازبین نرفتن دسترسیشان نسخه های دیگر همان فایل را درفولدرهای دیگر آپلود میکنند. فولدر include فولدر دیگری است که معمولا کاربران به آن نگاه نمی اندازند.
در همه موارد فایل backdoor مانند فایل های دیگر وردپرس بنظر میرسد.
برای مثال: دریکی از سایت هایی که پاکسازی کردیم، backdoor در فولدر wp-include بود، و با نام wp-user.php ذخیره شده بود. (این فایل هنگام نصب وردپرس بطور معمول وجود ندارد). فایل user.php وجود دارد اما فایلی به نام wp-user.php در فولدر wp-include هیچ گاه بصورت معمول وجود ندارد. در یکی از موارد دیگر، فایلی به نام hello.php را در فولدر update یافتیم. این فایل مانند یکی از فایل های مربوط به پلاگین Hello Dolly مخفی شده بود، در حالی که ارتباطی با این پلاگین نداشت.
همچنین این فایل های مخرب میتوانند نام هایی مانند wp-content.old.tmp، data.php، php5.php یا بسیاری نام های دیگر را داشته باشند. توجه داشته باشید پسوند این فایل ها تنها به .php محدود نمیشود بلکه میتوانند پسوندهایی نظیر .zip یا پسوندهای دیگری را داشته باشند. در بیشتر موارد این فایلها توسط base64 کد میشوند و میتوانند طیف وسیعی از فعالیتها را انجام دهند.(مانند: اضافه کردن لینکهای اسپم، اضافه کردن صفحات، ریدایرکت کردن سایت به صفحات اسپم و …)
اکنون ممکن است فکر کنید وردپرس از امنیت کافی برخوردار نیست که اجازه میدهد هکرها فایل های backdoor را آپلود کنند.شما در اشتباه هستید! نسخه فعلی وردپرس آسیب پذیری شناخته شده ای ندارد.backdoorها اولین مرحله هک یک وبسایت نیستند، این مرحله معمولا مرحله دوم برای هک است. اغلب هکرها در اولین مرحله یک پلاگین یا اسکریپت غیر اصلی پیدا میکنند تا فایل backdoor خود را در آن آپلود و به وسیله آن دسترسی پیدا کنند. نکته: هک timthumb. این هک میتواند دنباله ای از فعالیت های پشت سرهم بصورت مرتب باشد. برای مثال، یک پلاگین که کد گذاری ضعیف دارد میتواند اجازه دسترسی به کاربر را افزایش دهد. اگر سایت شما یک فرم ثبت نام دارید هکرها تنها میتوانند بصورت رایگان ثبت نام کنند.
بهره برداری از یک ویژگی برای به دست آوردن امتیازات بیشتر ( که به آنها امکان آپلود فایل ها را میدهد.) در موارد دیگر، ممکن است هک به این دلیل اتفاق بیفتد که سرویس میزبانی خود را بدرستی انتخاب نکرده اید. برای کسب اطلاعات بیشتر در این زمینه میتوانید راهنمای ما درمورد بهترین سرویس میزبانی وب مطالعه کنید.
مقاله مرتبط: کلیدهای امنیتی وردپرس چیست؟ چرا باید از آنها استفاده کنیم؟ !
چگونه backdoor ها را بیابیم و از سایت خود پاکسازی کنیم؟
اکنون که فهمیدیم backdoor چیست، و کجاها یافت میشود باید یافتن و پاکسازی این فایل های مخرب را آغاز کنیم. پاکسازی این فایل ها به آسانی با حذف آنها انجام میپذیرد. اما قسمت سخت کار این است که آنها را پیدا کنیم. میتوانید این کار را بوسیله یک پلاگین اسکن بدافزارها آغاز کنید. یکی از این پلاگین ها که قبلا نیز توصیه کرده بودیم پلاگین Quttera Web Malware Scanner است.
همچنین میتوانید از Exploit Scanner استفاده کنید. اما بخاطر داشته باشید که base64 و eval codes در این پلاگین استفاده شده. به همین دلیل ممکن است برخی اوقات نتایج اشتباهی را برگرداند. اگر به توسعه پلاگین ها آشنایی ندارید، احتمالا ممکن است تشخیص کدها از بین هزاران خط کد برایتان دشوار باشد. بهترین کاری که میتوانید انجام دهید حذف دایرکتوری پلاگین و نصب دوباره آن است. این مطمئن ترین راه است و باعث صرفه جویی در زمان نیز میشود.
مقاله مرتبط: مقایسه ۵ پلاگین برتر فایروال برای وردپرس
جستجو در دایرکتوری Update
یکی از پلاگین های اسکنر یک فایل مخرب در فولدر Upload پیدا میکند. اگر به دستورات SSH آشنایی دارید، کافی است دستور زیر را در خط فرمان بنویسید:
find uploads -name "*.php" -print
هیچ دلیلی برای وجود فایل های .php داخل فولدر Update وجود داشته باشند. در اکثر موارد این فولدر برای فایل های رسانه ای طراحی شده. اگر فایل .php در این فولدر پیدا کردید لازم است که آن را حذف کنید.
حذف قالب های بلا استفاده
همانطور که در بالا اشاره کردیم، در اکثر موارد قالب هایی که از آنها استفاده نمیکنید، هدف خوبی برای backdoor ها هستند. بهترین کاری که در اینگونه موارد میتوانید انجام دهید این است که بطور کلی قالب های غیرفعال و بلااستفاده را حذف کنید ( که ممکن است شامل قالب های اولیه نیز باشد). نیازی نیست که وقت خود را صرف چک کردن این قالب ها کنید زیرا این کار بطور کلی امنیت سایت را بالا میبرد و با این کار در زمان نیز صرفه جویی میکنید.
فایل .htaccess
برخی اوقات کدهای redirect به این فایل اضافه میشوند. تنها کافی است که این فایل را حذف کنید پس از این کار فایل بصور خودکار مجددا تولید میشود. اگر بصورت خودکار ایجاد نشد به پنل مدیریت وردپرس لاگین شوید و به مسیر تنظیمات » پیوندها بروید.در اینجا روی دکمه ذخیره کلیک کنید. فایل .htaccess بصورت خودکار مجددا تولید میشود.
فایل wp-config
این فایل را با فایل wp-config-sample.php مقایسه کنید. اگر چیز اضافه ای دیدید آن را پاک کنید.
مقاله مرتبط:چگونگی ویرایش wp-config.php در وردپرس
اسکن دیتابیس
یک هکر باهوش هیچگاه تنها به یک نقطه اکتفا نمیکند. آنها مکان های مختلفی را آلوده میکنند. یک پایگاه داده پر از داده هدف بسیار مناسبی برای آنهاست. آنها میتوانند توابع php خود، حساب های مدیریت جدید، لینک های اسپم و … را در دیتابیس ذخیره کنند. گاهی اوقات شما کاربر مدیر را در صفحه کاربران خود نمیبینید. به این صورت که شما میبینید که 3 کاربر وجود دارد اما تنها 2 تا از آنها قابل مشاهده هستند. احتمالا شما هک شده اید.
اگر ندانید که باید با SQL چکار کنید، باید یک اسکنر این کار را برای شما انجام دهد. پلاگین های Exploit Scanner و Sucuri هردو این کار را انجام میدهند.
تاملی بیشتر درمورد اسکن
اگر چه ممکن است تمام اقدامات بالا را انجام داده باشید اما این موضوع باز هم نیاز به درنگ بیشتر دارد. مرورگر خود را در حالت ناشناس (incognito mode) باز کنید تا ببینید باز هم هک بازمیگردد یا خیر. برخی اوقات هکرها بسیار باهوش هستند. آنها کاری میکنند که هک به کاربران لاگین شده نمایش داده نشود و تنها کاربرانی که از حساب کاربری خود خارج شده اند میتوانند آن را ببینید. یا بهتر است سعی کنید useragent مرورگر خود را به Google تغییر دهید. برخی اوقات هکرها تنها میخواهند موتورهای جستجو را هدف قراردهند. اگر مشکلی مشاهده نکردید میتوانید مرورگر خود را ببندید.
توجه: اگر میخواهید 100 درصد مطمئن شوید که دیگر هیچ هکی وجود ندارد میتوانید سایت خود را حذف کنید سپس یک بکاپ از سایت را از زمانی که مطمئن هستید هنوز هک نشده بوده اید بازگردانی کنید.توجه کنید این راهکار ممکن است برای برخی عملی نباشد.
چگونه از هک ایمن بمانیم؟
اولین توصیه ما این است که همیشه یک بکاپ کامل از سایت خود داشته باشید و از یک سرویس مانیتورینگ استفاده کنید. توجه داشته باشید همانطور که گفتیم نمیتوانید تمام عناصری که روی سایتتان می آیند را مانیتور کنید.
کارهای دیگری که میتوانید انجام دهید:
1- استفاده از پسوردهای قوی- کاربرانتان را مجبور کنید که پسورد قوی انتخاب کنند. میتوانید از یک سرویس مدیریت پسورد برای این کار استفاده کنید.
مقاله مرتبط: ۱۵ دستور مفید در .htaccess برای وردپرس
2- احراز هویت دو مرحله ای- میتوانید این کار را با ارسال یک کد به تلفن همراه مشترک انجام دهید. این کار برای زمانی که کاربر پسورد خود را از دست بدهد نیز مناسب است.
3- محدود کردن تعداد دفعات ورود ناموفق- در این مورد پلاگینی وجود دارد که کاربر را پس از تعداد ورود ناموفق محدود، مسدود میکند. برای کسب اطلاعات بیشتر میتوانید راهنمای ما درمورد اینکه چگونه تعداد دفعات ورود به سایت را محدود کنیم را مطالعه کنید.
4- غیرفعالسازی قالب ها و ویرایشگرهای پلاگین- این کار باعث جلوگیری از افزایش مشکلات سمت کاربر میشود. با این کار حتی اگر امتیازات و دسترسی های کاربر افزایش یابد، آنها نمیتوانند قالب یا پلاگین های شما را با استفاده از wp-admin دستکاری کنند.
5- محافظت از wp-admin با پسورد- شما میتوانید از این دایرکتوری بوسیله پسورد محافظت کنید.همچنین میتوانید دسترسی را بوسیله IP محدود کنید.
6- غیرفعال کردن اجرای php در برخی دایرکتوری های وردپرس- این کار باعث میشود کلیه کدهای php در برخی فولدارها مانند upload یا هر فولدر دیگری که خودتان انتخاب میکنید غیر فعال شود.با این کار حتی اگر هکر بتواند فایل مخرب خود را آپلود کند قادر به اجرای آن نخواهد بود.
7- بروزرسانی مرتب- همواره از آخرین ورژن وردپرس و پلاگین ها استفاده کنید و آنها را بصورت مرتب بروزرسانی کنید
نهایتا زمانی که سایتتان را ایمن کردید خیالتان از بابت اینکه دیگر هک نمیشوید راحت نباشد. ما همیشه میگوییم بهترین اقدام امنیتی بکاپ گیری کامل از سایت است. حتما بصورت مرتب از سایت خود بکاپ بگیرید. این کار باعث میشود که حتی اگر هک شدید همیشه یک راه برای برگشت داشته باشید.
امیدواریم این مقاله را مفید دیده باشید اگر دیدگاهی دارید میتوانید زیر همین پست با ما درمیان بگذارید.