در ماههای اخیر، بسیاری از دوستان و کاربران با هکشدن سایتهای وردپرسیشان روبهرو شدهاند و برای رفع این مشکل از ما کمک خواستهاند. در بررسی این سایتها، بارها فایلهای اضافهای پیدا کردهایم و از طریق آنها، راه دسترسی دوباره فرد نفوذگر را شناسایی کردهایم. برای همین، فقط با حذف محتوای ناخواسته، مشکل را از ریشه حل نکردهایم.
در این آموزش، سراغ پاکسازی سایت هک شده وردپرس میرویم و کار را از بکاپگرفتن شروع میکنیم. بعد فایلهای اصلی وردپرس، قالب و افزونهها را بررسی میکنیم و در ادامه، رمزها و دسترسیهای سایت را تغییر میدهیم. اگر به پیشخوان هم دسترسی نداشته باشیم، بخش اول کار را از داخل هاست انجام میدهیم.
با این مراحل، بیشتر آلودگیهای سایت را پاک میکنیم، ولی بهخاطر تعداد زیاد فایلهای وردپرس، ممکن است بعضی فایلهای آلوده را جا بیندازیم. برای همین، بخشهای مختلف سایت را با دقت بررسی میکنیم.
در این مقاله چی قراره یاد بگیریم؟
اقدامات قبل از شروع پاکسازی سایت هک شده وردپرس
قبل از شروع پاکسازی سایت هک شده وردپرس، از فایلها و دیتابیس بکاپ میگیریم و پوشه نصب وردپرس را پیدا میکنیم. با این کار، یک نسخه برای برگشت نگه میداریم و موقع حذف یا جایگزینی فایلها، اشتباهی سراغ سایت دیگری نمیرویم.
اول از فایلها و دیتابیس سایت بکاپ میگیریم
حتی از همین سایت آلوده هم بکاپ میگیریم. اگر وسط کار یک فایل مهم را اشتباهی پاک کنیم، با همین نسخه میتوانیم به وضعیت قبل از پاکسازی برگردیم. البته روی این بکاپ برچسب «آلوده» میگذاریم، بیرون از پوشه عمومی سایت نگهش میداریم و بهجای بکاپ سالم از آن استفاده نمیکنیم.

در سیپنل، وارد بخش Files میشویم و گزینه Backup یا Backup Wizard را پیدا میکنیم. در تصویر بالا، Backup را زیر File Manager و Backup Wizard را زیر Web Disk میبینیم. برای اینکه قدمبهقدم جلو برویم، از Backup Wizard استفاده میکنیم.
- روی Backup Wizard کلیک میکنیم.
- در صفحه بعد، گزینه Back Up را انتخاب میکنیم.
- برای گرفتن بکاپ کامل، روی Full Backup کلیک میکنیم.
- در بخش Backup Destination، گزینه Home Directory را انتخاب میکنیم و برای دریافت خبر پایان بکاپ، ایمیل خودمان را وارد میکنیم.
- روی Generate Backup کلیک میکنیم و تا پایان کار منتظر میمانیم.
- بعد از آمادهشدن فایل، بکاپ را دانلود میکنیم و یک نسخه را روی کامپیوتر یا یک فضای امن دیگر نگه میداریم.
قبل از شروع پاکسازی، حتماً از همین سایت آلوده هم بکاپ میگیریم تا اگر در یکی از مراحل اشتباهی کنیم، بتوانیم سایت را به وضعیت قبل از پاکسازی برگردانیم.
اگر بکاپ سالم داشته باشیم، میتوانیم آن را برگردانیم. اما اگر بکاپ نداشته باشیم یا بعد از آخرین بکاپ محتوای جدید گذاشته باشیم و بخواهیم سایت فعلی را نگه داریم، سراغ پاکسازی میرویم
مسیر نصب سایت و امکان بازیابی را مشخص میکنیم
در این آموزش، روی یک سایت تستی داخل پوشه cleansite کار میکنیم. برای پاکسازی سایت هک شده وردپرس خودمان، وارد محل نصب وردپرس میشویم و همین مراحل را انجام میدهیم. معمولاً فایلهای سایت وردپرس را داخل پوشه public_html پیدا میکنیم.
مراحل پاکسازی سایت هک شده وردپرس را قدمبهقدم انجام میدهیم
حالا که بکاپ گرفتهایم و مسیر سایت را پیدا کردهایم، پاکسازی را شروع میکنیم. اول دسترسیهای هاست را تغییر میدهیم، بعد سراغ فایلها میرویم و در آخر، کاربران و رمزهای سایت را بررسی میکنیم. مراحل را به همین ترتیب انجام میدهیم و قبل از هر حذف، فایلهای انتخابشده را یک بار دیگر چک میکنیم.
مرحله ۱: رمز هاست و دسترسیهای FTP را تغییر میدهیم
برای پاکسازی سایت هک شده وردپرس، اول وارد حسابمان در شرکت هاستینگ میشویم و رمز کنترلپنل هاست را عوض میکنیم. یک رمز طولانی و غیرتکراری میگذاریم و بعد، داخل هاست سراغ بخش FTP Accounts میرویم.

بعد وارد بخش FTP Accounts میشویم و حسابهای FTP را چک میکنیم. حسابهایی را که به آنها نیاز نداریم، حذف میکنیم و رمز حسابهای باقیمانده را عوض میکنیم.
مرحله ۲: فایلهای هسته وردپرس را با نسخه سالم جایگزین میکنیم
در این مرحله، فایلهای اصلی وردپرس را با نسخه سالم جایگزین میکنیم. برای شروع، بسته وردپرس را از سایت رسمی وردپرس دانلود میکنیم.
در ویدئو، آخرین نسخه وردپرس را دانلود میکنیم. برای اینکه هنگام بازیابی با مشکل سازگاری روبهرو نشویم، روی سایت واقعی ابتدا بسته سالم همان نسخه فعلی را جایگزین میکنیم و بعد از پاکسازی، با بررسی PHP، قالب و افزونهها، بهروزرسانی را انجام میدهیم. این نکته را بهعنوان احتیاط تکمیلی رعایت میکنیم.
فایلهای سایت را از فایلهای هسته جدا میکنیم
پوشه wp-content و فایلهای wp-config.php و .htaccess را حذف نمیکنیم تا محتوا و تنظیمات سایتمان را از دست ندهیم. فقط نگهشان میداریم و در ادامه، آنها را هم از نظر آلودگی بررسی میکنیم. اگر خودمان فایل دیگری روی سایت گذاشته باشیم، قبل از حذف، کاربردش را بررسی میکنیم و فایلهای موردنیاز را از انتخاب خارج میکنیم.

پوشه wordpress مربوط به بسته تازهای را که استخراج کردهایم، هم فعلاً نگه میداریم. قبل از زدن دکمه Delete، دوباره انتخابها را چک میکنیم و مطمئن میشویم که بکاپ را گرفتهایم. تا وقتی کار را کامل بررسی نکردهایم، فایلها را بدون راه برگشت پاک نمیکنیم.
پوشههای هسته را کامل بازسازی میکنیم
برای حذف فایلهای مخرب وردپرس، فقط فایلهای جدید را روی قبلیها کپی نمیکنیم، چون با این کار ممکن است فایلهای آلوده اضافه را جا بگذاریم. برای همین، بعد از بکاپگرفتن، پوشههای wp-admin و wp-includes را کامل حذف میکنیم و نسخه سالمشان را جایگزین میکنیم.
فایلهای داخل پوشه سایت را با فایلهای اصلی وردپرس مقایسه میکنیم. پوشه wp-content، فایلهای wp-config.php و .htaccess و فایلهایی را که خودمان برای سایت گذاشتهایم، نگه میداریم. بعد فایلهای هسته و فایلهای اضافه را حذف میکنیم و نسخه سالم هسته وردپرس را جایگزین میکنیم

حالا وارد پوشه وردپرس تازه میشویم و فایلهای لازم را انتخاب میکنیم. wp-content را منتقل نمیکنیم تا فایلهای پیشفرض را با محتوای سایت قاطی نکنیم. فایل wp-config-sample.php را هم بهجای wp-config.php فعلی نمیگذاریم. بعد از انتقال و بررسی نتیجه، فایل زیپ و پوشه موقت را جمع میکنیم.
اگر به پیشخوان دسترسی داشته باشیم، گزینه «نصب دوباره» را در بخش بهروزرسانیها میبینیم. با این حال، برای پاکسازی سایت هک شده وردپرس فقط به این گزینه بسنده نمیکنیم و فایلهای اضافه را جدا بررسی میکنیم.
مرحله ۳: قالب سایت را با نسخه سالم جایگزین میکنیم
بعد از فایلهای اصلی، سراغ wp-content میرویم. این پوشه را کامل پاک نمیکنیم، چون قالب، افزونهها و فایلهای آپلودشده سایت را داخلش نگه میداریم. برای پاکسازی فایلهای آلوده وردپرس، هر بخش را جدا بررسی میکنیم و از پوشه themes شروع میکنیم.
نسخه سالم قالب را از منبع اصلی دریافت میکنیم
فایل نصبی قالب را از همان منبع معتبری که تهیه کردهایم، دوباره دانلود میکنیم. برای قالب رایگان از مخزن وردپرس استفاده میکنیم و برای قالب خریداریشده، وارد حساب خرید خودمان میشویم. فقط فایل نصبی خود قالب را میگیریم و بهجای آن، بسته نصب آسان یک سایت کامل را آپلود نمیکنیم.

اگر داخل فایلهای قالب تغییر اختصاصی داده باشیم، قبل از جایگزینی از آنها بکاپ میگیریم. بعد پوشه قبلی را کنار میگذاریم و نسخه سالم را استخراج میکنیم. قالبهای اضافی را هم حذف میکنیم. اگر از چایلدتم یا پوسته فرزند استفاده کنیم، هم خودش و هم قالب والد موردنیازش را نگه میداریم و فایلهایشان را بررسی میکنیم.
مرحله ۴: افزونههای موردنیاز را با نسخه معتبر جایگزین میکنیم
حالا وارد پوشه plugins میشویم و افزونهها را یکییکی بررسی میکنیم. نسخه سالم هر افزونه را از منبع اصلی میگیریم و بعد از بکاپگرفتن، پوشه قبلی را حذف میکنیم و نسخه سالم را جایگزین میکنیم.

اگر افزونهای را از سایت نامعتبر گرفته باشیم یا نسخه پولی آن را بهصورت کرکشده دانلود کرده باشیم، آن نسخه را کنار میگذاریم و از آن استفاده نمیکنیم. اگر به افزونه نیاز داشته باشیم، نسخه معتبرش را از سایت اصلی تهیه میکنیم. افزونههایی را که خودمان نصب نکردهایم را هم بررسی میکنیم، ولی بدون بررسی بیشتر علت هک سایت را به یک افزونه نسبت نمیدهیم.
مرحله ۵: پوشه mu-plugins را با دقت بررسی میکنیم
در ادامه پاکسازی سایت هک شده وردپرس، سراغ پوشه mu-plugins میرویم. اگر این پوشه را داخل wp-content داشته باشیم، فایلهایش را بررسی میکنیم. افزونههای این بخش را در لیست معمول افزونههای پیشخوان وردپرس نمیبینیم، اما از بخش جداگانه Must-Use یا افزونههای ضروری میتوانیم بررسیشان کنیم.

در تصویر، سه فایل نمونه از یک سایت آلوده را داخل این پوشه میبینیم. قبل از پاککردن پوشه، بررسی میکنیم که خودمان یا شرکت هاستینگ فایل مهمی داخلش نگذاشته باشیم. اگر فایل موردنیازی داشته باشیم، نگهش میداریم و فایلهای مخرب را پاک میکنیم.
مرحله ۶: فایلهای uploads را بدون حذف رسانهها بررسی میکنیم
حالا وارد uploads میشویم و فایلهای داخلش را چک میکنیم. عکسها، فیلمها، اسناد و فایلهایی را که خودمان آپلود کردهایم، نگه میداریم. بعضی افزونهها مثل المنتور هم در این مسیر فایل میسازند. برای همین، همه فایلهای غیرعکسی را آلوده حساب نمیکنیم و پاک نمیکنیم.

بعد از بررسی uploads، بقیه بخشهای wp-content را هم یکییکی چک میکنیم تا فایلهای مشکوک را پیدا و پاک کنیم. این پوشه را کامل حذف نمیکنیم، چون فایلهای مربوط به سایت خودمان را داخلش نگه میداریم.
مرحله ۷: کاربران ناشناس و رمزهای وردپرس را بررسی میکنیم
بعد از بررسی فایلها، سایت را باز میکنیم و وارد پیشخوان میشویم. در بخش کاربران، اول روی «مدیر کل» کلیک میکنیم و میبینیم چه کسانی به سایت دسترسی مدیریتی دارند. بعد نقشهای دیگر مثل ویرایشگر، نویسنده و مشارکتکننده را هم بررسی میکنیم.

اگر حسابی ساختهشده توسط فرد نفوذگر پیدا کنیم، آن را حذف میکنیم. قبلش مطمئن میشویم که حساب مربوط به یکی از اعضای تیم یا کاربران واقعی سایت را اشتباهی پاک نمیکنیم. اگر با آن حساب محتوا منتشر کرده باشند، موقع حذف درباره انتقال محتوا به یک کاربر معتبر تصمیم میگیریم.
بعد رمز حساب خودمان و بقیه کاربرانی را که به پیشخوان دسترسی دارند، عوض میکنیم. از بخش شناسنامه، رمز جدید را میگذاریم و روی «بهروزرسانی شناسنامه» کلیک میکنیم. اگر امکانش را داشته باشیم، ایمیل حساب ادمین را هم تغییر میدهیم
مرحله ۸: کلیدها و سالتهای امنیتی وردپرس را بازسازی میکنیم
حالا فایل wp-config.php را باز میکنیم و بخش Authentication unique keys and salts را پیدا میکنیم. در این قسمت، هشت خط مربوط به کلیدها و سالتهای امنیتی را میبینیم. برای گرفتن مقادیر تازه، وارد صفحه رسمی ساخت کلیدهای وردپرس میشویم.

هر هشت خط جدید را کپی میکنیم و دقیقاً جای هشت خط قبلی میگذاریم. خطهای قدیمی را نگه نمیداریم تا تعریف تکراری ایجاد نکنیم. از کلیدهای داخل تصویر هم استفاده نمیکنیم و برای سایت خودمان کلید تازه میگیریم. در پایان، فایل را ذخیره میکنیم.
با این کار، ورودهای قبلی را بیاعتبار میکنیم و برای استفاده از پیشخوان، دوباره وارد حساب میشویم. این مرحله را کنار تغییر رمز و پاکسازی فایلها انجام میدهیم و با عوضکردن سالتها بهتنهایی، فایلهای آلوده را حذف نمیکنیم.
مرحله ۹: رمز کاربر دیتابیس را در هاست و wp-config تغییر میدهیم
در این بخش از پاکسازی سایت هک شده وردپرس، رمز دسترسی دیتابیس را تغییر میدهیم. در فایل wp-config.php، مقدار DB_USER را نگاه میکنیم تا کاربر دیتابیس سایت را پیدا کنیم. بعد وارد بخش مدیریت دیتابیس هاست میشویم و کنار همان کاربر، روی Change Password کلیک میکنیم.

یک رمز جدید میسازیم و کپیاش میکنیم. بلافاصله به wp-config.php برمیگردیم و رمز تازه را جای مقدار قبلی DB_PASSWORD میگذاریم. بعد فایل را ذخیره میکنیم و سایت را باز میکنیم.
فقط رمز دسترسی را تغییر میدهیم و خود دیتابیس یا جدولها را حذف نمیکنیم. اگر از یک کاربر دیتابیس برای چند سایت استفاده کرده باشیم، رمز را در تنظیمات همه آن سایتها بهروز میکنیم. اگر خطای اتصال به دیتابیس ببینیم، رمز و نام کاربر را دوباره در هاست و wp-config چک میکنیم.
مرحله ۱۰: راه نفوذ را میبندیم و سایت را بهروز نگه میداریم
در آخر، به بخش افزونهها برمیگردیم و لیستشان را دوباره چک میکنیم. افزونههای ناشناس را بررسی میکنیم و موارد اضافی را کنار میگذاریم. وردپرس، قالب و افزونهها را هم بعد از بررسی سازگاری بهروز میکنیم.

برای امنترکردن سایت، سراغ یک افزونه امنیتی مثل All-In-One Security یا Wordfence میرویم و با کمک آموزش همان افزونه، تنظیمات لازم را انجام میدهیم. قابلیتهایی مثل فایروال و حفاظت از ورود را متناسب با امکانات افزونه فعال میکنیم، ولی با نصب یک افزونه بهتنهایی، جلوی همه حملهها را نمیگیریم.
برای تکمیل پاکسازی سایت هک شده وردپرس، یک بررسی دوباره هم انجام میدهیم. فایلها و صفحات را اسکن میکنیم و با کمک پشتیبانی هاست، راه ورود را پیدا میکنیم. بعد از پاکسازی، رمزهای مهم را دوباره عوض میکنیم و از سایت سالم بکاپ منظم میگیریم. این کارهای تکمیلی را برای کمترکردن احتمال برگشت آلودگی انجام میدهیم.
جمعبندی نهایی و صحبت آخر
برای پاکسازی سایت هک شده وردپرس، اول بکاپ میگیریم و دسترسیهای هاست را تغییر میدهیم. بعد فایلهای اصلی وردپرس را با نسخه سالم جایگزین میکنیم و قالب، افزونهها و پوشههای wp-content را بررسی میکنیم. در پایان هم کاربران، رمزها، سالتها و دسترسی دیتابیس را چک میکنیم.
در پایان، وردپرس، قالب و افزونهها را بهروز نگه میداریم و با نصب افزونه امنیتی و فعالکردن فایروال، امنیت سایت را بالاتر میبریم تا احتمال تکرار این مشکل را کمتر کنیم.



