روزمرگی فنی
روزمرگی فنی
خواندن ۶ دقیقه·۳ سال پیش

هک ریدایرکت سایت وردپرسی و نحوه پاکسازی آن

هک ریدایرکت

در چند ماه گذشته سایت‌های وردپرسی میزبان موج جدیدی از حملات هکری بودند؛ حملاتی جدید ولی با شیوه‌ای قدیمی. به این ترتیب که با استفاده از خلل‌ها و آسیب‌پذیری‌های موجود در قالب یا افزونه‌ها، یک کد مخرب به داخل دیتابیس یا فایل‌های سایت تزریق می‌شود، بعد درست مثل ویروس در بدن خود را تکثیر می‌کند و با آلوده کردن سایت، هر بازدیدکننده‌ای را به مقصد یک سایت (آلوده‌) دیگر هدایت یا ری‌دایرکت می‌کند (به این ترتیب حتی مدیر سایت هم از دسترسی به پیشخوان ناکام می‌ماند). به همین خاطر چنین هک‌هایی به Redirect Hack موسوم هستند.

آسیب‌ها

در چنین مواردی اگر دیر به داد سایت برسید، فاتحه سئو و اعتبار شما خوانده است. چون قطعا گوگل بعد از مدتی سایت شما را در فهرست سیاه قرار می‌دهد و بدتر اینکه عبارتِ «این سایت احتمالا هک شده» (This Site May Be Hacked) را در نتایج جستجوی گوگل زیر عنوان سایت شما نشان می‌دهد که همین یک قلم به تنهایی دخل برندینگ یا اعتبار بِرَند شما را می‌آورد. حالا بگذریم که اگر سایت فروشگاهی دارید، این اتفاق با افت شدید خرید و ضررهای مالی همراه می‌شود.

نحوه راهیابی ویروس

همانطور که اشاره شد، هکر (در واقع ربات‌ها و بدافزارها) برای آلوده‌ کردن سایت، از خلل‌ها و آسیب‌پذیری‌های موجود در قالب یا افزونه‌های شما استفاده می‌کند؛ در اکثر موارد محل ضربه یکی از موارد زیر است:

الف. قدیمی بودن قالب‌ها، افزونه‌ها و فایل‌های هسته وردپرس ب. استفاده از افزونه‌های به‌اصطلاح نال‌شده ج. وجود باگ امنیتی در نسخه یک قالب یا افزونه د. تعیین سطح دسترسی نادرست برای فایل‌ها و فولدرها ه. عدم استفاده از افزونه‌های امنیتی و غیره.

شیوه‌های ری‌دایرکت قربانی

به طور کلی این هدایت کاربر از سایتِ قربانی به سمت یک نشانی آلوده، به چند حالت می‌تواند اتفاق بیفتد:

-هنگام بازدید مستقیم از سایت شما (فقط در موبایل یا فقط در دسکتاپ یا در هر دو)

-هنگام کلیک بر روی سایت شما در صفحه نمایش جستجوهای گوگل

-به صورت نمایش نوتیفیکیشن یا پیام تبلیغاتی به کاربر روی سایت

مسیرهای ری‌دایرکت

هکرها در این حملات جدید برای آلوده‌سازی و ری‌دایرکت سایت شما، از مسیر دامنه‌های مختلفی استفاده می‌کنند که برخی‌ از مهم‌ترین‌هایشان در اینجا فهرست شده‌اند. مثلا:

Lovegreenpencils[.]ga

Transandfiestas[.]ga

Donatelloflowfirstly[.]ga

Wiilberedmodels[.]com

در یک مورد معروف(lovegreenpencils[.]ga)، این دامنه در گیلان ثبت شده بود که نشان می‌دهد هکرهای وطنی زحمتش را کشیده‌اند!


مکان‌های محبوب ویروس

وردپرس به طور کلی به دو قسمت اصلی تقسیم می‌شود: فایل‌های سایت و دیتابیس. و حالا مشکل این است که ویروس یا بدافزار در هر جایی از این دو قسمت می‌تواند سر و کله‌اش پیدا شود.

منتها به خاطر روش و الگوی نسبتا واحد این نوع هک‌ها، ردپای این ویروس را معمولا در جاهای ثابتی می‌شود پیدا کرد:

در قسمت فایل‌ها، این ویروس غالبا به سراغ آلوده‌سازی هسته وردپرس می‌رود (یعنی محتویات فولدرهای wp-admin و wp-includes)؛ یا در بخش‌هایی از قالب سایت و افزونه‌ها جا خوش می‌کند (محتویات فولدر wp-content و به خصوص فایل‌های header.php، footer.php، functions.php، index.php و غیره. ناگفته نماند که ممکن است فایل‌های جاوااسکریپت یا js را هم آلوده کند)؛ یا به سر وقت فایل htaccess در روت سایت می‌رود. در قسمت دوم، یعنی دیتابیس، جدول‌های wp_posts و wp_options در صدر احتمال آلودگی قرار دارند.

منتها یافتن کد آلوده بین انبوه فایل‌ها و آن هم به‌خصوص در حالتی که هکر کد را رمزگذاری و پیچیده می‌کند، چندان ساده نیست. پس چکار باید کرد؟

نمونه‌ای از تزریق یک کد مخرب رمزگذاری‌شده در فایل header.php سایت
نمونه‌ای از تزریق یک کد مخرب رمزگذاری‌شده در فایل header.php سایت


پاکسازی سایت

الآن که کلیت روش و خصوصیات رفتاری این نوع ویروس روشن شد، می‌شود وارد مرحله پاکسازی شد. قبل از هر چیز باید خونسرد باشید! و از دیتابیس و تمام فایل‌های سایت خود (علیرغم آلودگی) پشتیبان بگیرید. بعد قدم‌ به قدم مراحل زیر را طی کنید (که بنا به تجربه در اکثر موارد موفقیت‌آمیز عمل می‌کند).

1. اصلاح ردیف‌های siteurl و home در دیتابیس

از آنجایی که ویروس با ری‌دایرکت کردن سایت به شما حتی اجازه ورود به پیشخوان را هم نمی‌دهد، در نتیجه اول باید از سی‌پنل یا دایرکتوری به قسمت phpMyAdmin بروید، دیتابیس و سپس جدول wp-options را انتخاب کنید و در ردیف‌های siteurl و home به جای مسیر آلوده، لینک سایت خودتان را قرار دهید.


با این کار موقتا می‌توانید به پیشخوان سایت دسترسی پیدا کنید و کاربر هم به مسیر آلوده هدایت نمی‌شود. البته می‌گویم «موقتا»، چون هکر یک «درِ پشتی» یا backdoor در سایت شما ایجاد کرده و بنابراین چند ساعت بعد، مجددا این آدرس‌ها تغییر خواهند کرد.

2. تغییر رمز ادمین از phpMyAdmin

قبلا در این مطلب توضیح دادم که چطور از phpMyAdmin رمز ورود به سایت را تغییر دهید. برای اینکار باید جدول wp_users را مطابق تصویر زیر ویرایش کنید.


ضمنا بهتر است از قسمت «کاربران» در پیشخوان سایت هم چک کنید که آیا یک ادمین ناشناس یا به‌اصطلاح شبح (Ghost Admin) به سایت شما اضافه شده است یا نه. البته هکر اگر هم چنین بکند، آن را از دید شما در این قسمت پنهان می‌کند. پس برای شناسایی‌اش باید یک ترفند بزنید که برای طولانی نشدن متن، توضیحش را مطلب بعدی موکول می‌کنم.

3. به‌روزرسانی هسته وردپرس

در این مرحله می‌توانید یا به صورت دستی یا از قسمت بروزرسانی در پیشخوان سایت، وردپرس خود را آپدیت و یا نصب مجدد (Re-install) کنید. با این کار تمام کدهای مخرب یا فایل‌های backdoor هکر که در لابلای کدها و فایل‌های هسته وردپرس لانه کرده، می‌پرد و پاک می‌شود.

4. به‌روزرسانی یا نصب دوباره قالب/افزونه‌ها

مرحله 3 را با همان هدف ولی اینبار در مورد قالب و افزونه‌ها اجرا کنید.

5. اسکن و پاکسازی جداول دیتابیس

حالا که هسته وردپرس، قالب و افزونه‌ها را بروزرسانی یا مجددا نصب کرده‌ایم و حدس می‌زنیم که کدهای مخرب و فایل‌های Backdoor هکر پریده باشند، به سراغ غول مرحله آخر یعنی پاکسازی دیتابیس آلوده می‌رویم.

فرض کنیم که سایت شما بعد از آلودگی به مسیر example.com هدایت می‌شود. نام این دامنه، یک سرنخ خوب برای یافتن جداول آلوده‌شده دیتابیس است. از قسمت جستجو، نام دامنه آلوده را جستجو کنید.

الآن آن دسته از جداول دیتابیس که آلوده شده‌اند به شما نمایش داده می‌شود (مثلا wp_options و wp_posts). با زدن بر روی دکمه browse، تمام ردیف‌ها و ستون‌های آلوده‌شده این جدوال برای شما نمایش داده می‌شود.


به عنوان مثال، وقتی جدول wp_posts را (تصویر بالا) که مربوط به نوشته‌های وردپرس است بازمی‌کنیم، می‌بینیم که در ستون post_content یک اسکریپت آلوده با ساختار زیر اضافه شده است:

<script src='#' type='text/javascript'><script src='#' type='text/javascript'>


یا مثلا می‌بینیم که در جدول wp_bv_fw_requests، ستون Path آلوده شده و مسیر ری‌دایرکت هکر به آن اضافه شده است:


حالا که نام جداول آلوده شده را پیدا کردید، نوبت به پاکسازی این اسکریپت‌ها از آن‌ها می‌رسد. برای این کار کافی است که جدول مورد نظر را از دیتابیس انتخاب کنید (مثلا wp_posts، wp_options و غیره)، سپس از بالا گزینه Search و Find and Replace را انتخاب کنید. بعد در کادر Find لینک یا اسکریپت آلوده‌ای را که کپی گرفته‌اید قرار دهید، کادر Replace With را خالی رها کنید و در قسمت Column، ستونی را که آلوده شده (مثلا post_content، path و غیره) تعیین کنید. سپس Go و نهایتا Replace را بزنید.


آخرین مرحله

بعد از انجام همه این مراحل، فقط می‌ماند پاک کردن کش سایت (که اغلب فراموش می‌شود) و بعد باز کردن سایت در حالت Incognito و بررسی اینکه آیا مشکلی در سایت وجود دارد یا نه. ضمنا سورس کد صفحه را باز کنید (کلیدهای Cntr + U) و به دنبال اسکریپت مخرب یا نام دامنه آلوده بگردید تا ببینید اثری از آثارشان باقی مانده است یا نه. همزمان می‌توانید از اسکنرهای آنلاین مثل Astra هم برای بررسی فرانت‌اند سایت خود استفاده کنید. اگر اوضاع بر وفق مراد بود و شواهدی از ویروس نیفتادید، می‌توانید فایل بکاپ آلوده را پاک کنید و پشت بند آن یک افزونه امنیتی (مثل Wordfence یا Sucuri) را هم برای اسکن بدافزار در بک‌اند سایت نصب کنید.

وندا نوژن

هک وردپرسویروس
روزها درگیر مصائب فنی، شب‌ها مشغول ثبت راه‌حل‌های یافتنی
شاید از این پست‌ها خوشتان بیاید