چطور از ویروسی شدن وردپرس جلوگیری کنیم – طراحی و پشتیبانی سایت وردپرسی
برنامه نویسی

چطور از ویروسی شدن وردپرس جلوگیری کنیم

نویسنده: مصطفی علاءالدین 27 مرداد 1404 561 بازدید
تصویر چطور از ویروسی شدن وبسایت جلوگیری کنیم

لایه‌های اصلی حمله به وردپرس

  • حملات به سطح اپلیکیشن (Application Layer):
    • SQL Injection: تزریق مستقیم به دیتابیس از طریق فرم‌ها یا URL.
    • XSS (Cross-Site Scripting): جاوااسکریپت مخرب توی ورودی کاربر، که باعث میشه سشن ادمین یا کوکی‌ها دزدیده بشه.
    • CSRF (Cross-Site Request Forgery): استفاده از سشن فعال ادمین برای اجرای دستورات مخرب.
  • بک‌دورها (Backdoors):
    • معمولاً به شکل کدهای Obfuscated میان (eval, base64_decode, gzinflate, preg_replace /e).
    • جاگذاری توی فایل‌های هسته مثل functions.php یا حتی wp-config.php.
    • بعضی وقت‌ها توی جدول دیتابیس wp_options یا wp_posts اسکریپت مخفی میذارن.
  • تزریق فایل (File Upload Vulnerability):
    • آپلود شل (PHP Shell) به اسم تصویر یا PDF.
    • اجرا شدن باگ از طریق wp-content/uploads/.
  • Privilege Escalation (ارتقای سطح دسترسی):
    • هکر اول یوزر عادی می‌سازه → بعد با اکسپلویت دسترسی ادمین می‌گیره.
    • معمولاً توی پلاگین‌های عضویت یا فروشگاهی دیده میشه.
  • حملات به سطح سرور (Server Layer):
    • Misconfiguration در Apache/Nginx.
    • آسیب‌پذیری در PHP یا MySQL نسخه قدیمی.
    • سرور اشتراکی آلوده.

📌 نشانه‌های آلوده شدن (نه ساده، خیلی دقیق‌تر)

  • فایل‌های Timestamp غیرعادی.
  • PHP Execution غیرمعمول در uploads.
  • Cron Jobهای مخفی در دیتابیس یا cPanel.
  • ایجاد User مشکوک با نقش Admin یا Editor.
  • Mail Function Abuse برای ارسال اسپم و Botnet.

📌 روش‌های حرفه‌ای پاکسازی

  • Isolation (جداسازی): سایت را روی Maintenance یا صفحه استاتیک ببرید.
  • File Integrity Check: مقایسه پوشه‌ها با نسخه اصلی و حذف فایل‌های مشکوک.
  • Database Audit: جستجوی iframe, eval, base64 در wp_options و wp_posts.
  • Log Analysis: بررسی access_log و error_log برای مسیرهای حمله.
  • Hardening: غیرفعال کردن اجرای PHP در پوشه‌های uploads, cache, tmp، تنظیم Permission و استفاده از WAF.

📌 ابزارهای تخصصی

  • WP-CLI + grep → اسکن سریع کدهای مشکوک.
  • Linux Malware Detect (Maldet) → شناسایی شل‌ها روی هاست.
  • ClamAV → اسکن فایل‌های آلوده روی هاست.
  • OSSEC یا Wazuh → مانیتورینگ تغییرات فایل.

حملات به سطح اپلیکیشن (Application Layer) در وردپرس

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

در حملات SQL Injection، مهاجم با وارد کردن کدهای SQL مخرب در ورودی سایت (مانند فرم‌ها یا پارامترهای URL)، می‌تواند دیتابیس را تغییر داده یا اطلاعات حساس مثل یوزرنیم و پسورد را استخراج کند.

  • ورود مستقیم کد SQL از طریق فرم یا URL.
  • امکان دسترسی به اطلاعات کاربران و جداول دیتابیس.
  • راهکار: استفاده از $wpdb->prepare() برای کوئری‌های ایمن.

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

  • اجرای اسکریپت مخرب در مرورگر کاربر.
  • سرقت کوکی‌ها و اطلاعات حساس.
  • راهکار: استفاده از توابع esc_html() و esc_attr() در وردپرس.

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

  • اجرای درخواست‌های غیرمجاز با استفاده از سشن فعال.
  • تغییر تنظیمات یا انجام عملیات مدیریتی بدون اجازه.
  • راهکار: استفاده از wp_nonce_field() و check_admin_referer() در فرم‌ها.

بک‌دورها (Backdoors) در وردپرس

بک‌دور یا درب پشتی یکی از خطرناک‌ترین تهدیدهای امنیتی در وردپرس است. هکرها پس از دسترسی اولیه، کدهای مخفی و مبهم (Obfuscated) را در فایل‌های هسته، قالب یا حتی دیتابیس قرار می‌دهند تا در آینده بتوانند بدون نیاز به دوباره هک کردن، وارد سایت شوند.

بک‌دورها معمولاً با استفاده از توابعی مثل eval()، base64_decode()، gzinflate() یا preg_replace('/e') نوشته می‌شوند تا تشخیص آن‌ها سخت‌تر باشد.

  • قرار گرفتن در فایل‌های مهم مثل functions.php یا wp-config.php.
  • کدها معمولاً به صورت رمزگذاری‌شده و نامفهوم هستند.
  • راهکار: اسکن فایل‌ها با WP-CLI یا ابزارهایی مثل Maldet و حذف کدهای مشکوک.

گاهی اسکریپت‌های مخرب در جدول‌های دیتابیس مثل wp_options یا wp_posts ذخیره می‌شوند. این کدها هنگام نمایش صفحات به اجرا در می‌آیند.

  • قرار گرفتن iframe یا اسکریپت‌های مشکوک در محتوای پست‌ها.
  • وجود مقادیر رمزگذاری‌شده با base64 در دیتابیس.
  • راهکار: جستجوی کلمات کلیدی مثل iframe, eval, base64 در دیتابیس و پاکسازی.

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

  • وجود یوزرهایی با نقش Admin یا Editor که شما ایجاد نکردید.
  • کدهای PHP برای ساخت یوزر خودکار در فایل‌های هسته یا افزونه‌ها.
  • راهکار: بررسی لیست کاربران و حذف یوزرهای مشکوک + تغییر پسوردهای اصلی.

تزریق فایل (File Upload Vulnerability) در وردپرس

یکی از رایج‌ترین روش‌های هک وردپرس، سوءاستفاده از قابلیت آپلود فایل است. در این نوع حمله، هکر فایل مخرب (معمولاً یک PHP Shell) را به عنوان تصویر یا PDF آپلود می‌کند و سپس از طریق آن کنترل کامل سایت را به دست می‌گیرد.

هکر فایل شل مخرب را با پسوند تغییر یافته (مثلاً image.php.jpg) در پوشه wp-content/uploads/ بارگذاری می‌کند. پس از اجرا، این فایل به او امکان مدیریت دیتابیس، آپلود فایل‌های جدید و حتی تغییر قالب سایت را می‌دهد.

  • فایل‌های ناشناس در مسیر uploads.
  • فایل‌هایی با اندازه یا نام مشکوک (مانند shell.php).
  • راهکار: محدود کردن فرمت‌های مجاز به jpg, png, pdf و غیرفعال کردن اجرای PHP در پوشه uploads.

پس از آپلود، هکر با دسترسی به آدرس مستقیم فایل (URL) آن را اجرا می‌کند. اگر سرور به درستی پیکربندی نشده باشد، فایل PHP اجرا شده و کل سایت در معرض خطر قرار می‌گیرد.

  • دسترسی مستقیم به /uploads/2025/08/shell.php یا مشابه آن.
  • اجرای دستورات سیستمی از طریق وب شل.
  • راهکار: قرار دادن فایل .htaccess در مسیر uploads برای جلوگیری از اجرای PHP.

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

  • بررسی پسوند واقعی فایل با mime-type قبل از ذخیره.
  • قرار دادن Permission مناسب (به‌طور مثال 644 برای فایل‌ها).
  • استفاده از پلاگین‌های امنیتی معتبر مثل Wordfence یا iThemes Security.
  • مانیتورینگ مداوم پوشه uploads برای شناسایی فایل‌های غیرمجاز.

دوره مقدماتی تا پیشرفته طراحی سایت

در این دوره جامع، از مباحث پایه‌ای HTML5، CSS3 و JavaScript شروع کرده و به مباحث پیشرفته‌تر می‌پردازیم. با این آموزش‌ها، شما می‌توانید سایت‌های واکنش‌گرا، حرفه‌ای و بهینه بسازید.

ارتقای سطح دسترسی (Privilege Escalation) در وردپرس

یکی از حملات پیشرفته روی سایت‌های وردپرسی، حمله Privilege Escalation است. در این روش، هکر ابتدا یک کاربر عادی یا ثبت‌نام‌شده ایجاد می‌کند و سپس با سوءاستفاده از آسیب‌پذیری‌ها در پلاگین‌ها یا هسته وردپرس، دسترسی خود را به سطح مدیر (Admin) ارتقا می‌دهد.

اولین گام در این حمله، ساخت یک حساب کاربری ساده (Subscriber یا Customer) است. بسیاری از سایت‌ها ثبت‌نام آزاد دارند، بنابراین این مرحله بسیار راحت است.

  • یوزرهای جدید با نقش Subscriber یا Customer ناخواسته.
  • راهکار: بستن ثبت‌نام آزاد یا استفاده از کپچا در فرم‌های ثبت‌نام.

پس از ثبت‌نام، هکر به دنبال باگ در پلاگین‌های عضویت، فروشگاهی یا حتی API وردپرس می‌گردد. این آسیب‌پذیری‌ها به او امکان تغییر نقش کاربری خود یا اجرای مستقیم دستورات با دسترسی Admin را می‌دهند.

  • باگ در پلاگین‌های فروشگاهی مثل WooCommerce یا پلاگین‌های Membership.
  • تغییر role کاربر در دیتابیس از طریق SQL Injection.
  • راهکار: آپدیت مداوم پلاگین‌ها و بررسی امنیتی API.

  • وجود اکانت‌های Admin یا Editor که خودتان ایجاد نکرده‌اید.
  • تغییر ناگهانی سطح دسترسی کاربران موجود.
  • فعال شدن قابلیت‌هایی که باید محدود به ادمین باشد (مثل نصب افزونه یا تغییر قالب).

برای جلوگیری از این نوع حمله، باید ثبت‌نام کاربران و نقش‌های کاربری را به‌طور دقیق کنترل کنید.

  • بستن امکان ثبت‌نام خودکار در وردپرس اگر نیاز نیست.
  • استفاده از پلاگین‌های امنیتی برای مانیتورینگ نقش کاربران.
  • بررسی منظم دیتابیس و حذف کاربران مشکوک.
  • فعال‌سازی ورود دو مرحله‌ای (2FA) برای اکانت‌های Admin.

حملات به سطح سرور (Server Layer) در وردپرس

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

کانفیگ ضعیف یا باز گذاشتن دایرکتوری‌ها می‌تواند مسیر حمله هکر را باز کند. برای مثال اگر Directory Listing فعال باشد، مهاجم می‌تواند فایل‌های حساس شما را مشاهده کند.

  • فعال بودن Directory Listing در Apache یا Nginx.
  • نداشتن محدودیت روی فایل‌های .htaccess یا nginx.conf.
  • راهکار: غیرفعال کردن Directory Listing و تنظیم دقیق پیکربندی.

استفاده از نسخه‌های قدیمی PHP یا MySQL می‌تواند باعث بروز حفره‌های امنیتی خطرناک شود. بسیاری از باگ‌های امنیتی در نسخه‌های جدید پچ شده‌اند اما روی سرورهای قدیمی همچنان وجود دارند.

  • استفاده از PHP نسخه 5.x یا پایین‌تر.
  • MySQL یا MariaDB بدون آپدیت امنیتی.
  • راهکار: همیشه از آخرین نسخه پایدار و امن استفاده کنید.

در هاست‌های اشتراکی، اگر یک سایت روی همان سرور آلوده شود، احتمال نفوذ به سایر سایت‌ها نیز وجود دارد. این موضوع به‌خصوص زمانی خطرناک است که تنظیمات امنیتی Isolation در سرور به‌درستی اعمال نشده باشد.

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

نشانه‌های آلوده شدن سایت وردپرسی

شناسایی سریع آلودگی در وردپرس بسیار حیاتی است؛ هرچه زودتر متوجه ویروسی شدن سایت شوید، آسیب کمتری به سئو و کاربران شما وارد می‌شود. در ادامه به دقیق‌ترین نشانه‌های آلودگی اشاره می‌کنیم:

اگر در پوشه‌های اصلی وردپرس مثل wp-includes یا wp-admin فایل‌هایی با تاریخ تغییر جدید مشاهده کردید در حالی که خودتان آپدیتی انجام نداده‌اید، این یک نشانه‌ی قوی از آلودگی است.

پوشه wp-content/uploads باید فقط شامل تصاویر و فایل‌های رسانه‌ای باشد. اگر داخل آن فایل .php مشاهده کردید، احتمالاً یک شل مخرب آپلود شده است.

هکرها معمولاً از Cron Job برای اجرای دوره‌ای اسکریپت اسپم یا بدافزار استفاده می‌کنند. بررسی cPanel Cron Jobs یا جدول wp_options می‌تواند این دستکاری‌ها را آشکار کند.

اگر اکانت‌های جدید با نقش Admin یا Editor مشاهده کردید که شما آن‌ها را نساخته‌اید، احتمالاً هکر دسترسی گرفته است.

یکی از نشانه‌های رایج آلودگی، ارسال ایمیل‌های اسپم از سایت شماست. بررسی لاگ‌های SMTP یا php_mail.log می‌تواند مشخص کند که آیا سایتتان برای بخشی از یک Botnet استفاده می‌شود یا خیر.


حذف یوزرهای اسپم و مشکوک با استفاده از SQL

اگر سایت وردپرسی شما با حجم زیادی از کاربران اسپم و مشکوک مواجه است، می‌توانید تنها با یک کوئری SQL همه‌ی آن‌ها را از دیتابیس حذف کنید. این روش ساده و سریع به شما کمک می‌کند امنیت و بهینگی سایت‌تان حفظ شود.

📌 روش‌های حرفه‌ای پاکسازی سایت وردپرسی آلوده

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

اولین قدم این است که سایت را موقتاً به حالت Maintenance یا روی یک صفحه استاتیک ببرید. این کار مانع می‌شود کاربران و موتورهای جستجو به نسخه آلوده دسترسی پیدا کنند و امنیت داده‌هایتان حفظ می‌شود.

با استفاده از دستوراتی مثل diff -r یا ابزارهای مشابه، فایل‌های موجود در wp-admin و wp-includes را با نسخه اصلی وردپرس مقایسه کنید. هر فایلی که اضافه یا تغییر یافته باشد باید با دقت بررسی و در صورت لزوم حذف شود.

دیتابیس وردپرس به‌خصوص جداول wp_options و wp_posts را بررسی کنید. به دنبال کدهای مشکوک مانند <script>، iframe، eval یا base64 باشید که معمولاً نشانه تزریق بدافزار هستند.

با بررسی access_log می‌توانید مسیر ورود هکر به سایت را شناسایی کنید. همچنین error_log به شما کمک می‌کند تا خطاهای ناشی از Injection یا اجرای اسکریپت‌های غیرمجاز را پیدا کنید.

  • غیرفعال کردن اجرای فایل‌های PHP در پوشه‌های uploads، cache و tmp.
  • تنظیم سطح دسترسی صحیح: 644 برای فایل‌ها و 755 برای پوشه‌ها.
  • محدود کردن دسترسی wp-admin بر اساس IP Whitelist.
  • استفاده از WAF‌ (مثل Cloudflare یا Sucuri) برای فیلتر کردن درخواست‌های مخرب.

آموزش خصوصی طراحی سایت با وردپرس

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

🛠️ ابزارهای تخصصی برای اسکن و پاکسازی وردپرس

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

Wordfence Security

یکی از قدرتمندترین پلاگین‌های امنیتی وردپرس با قابلیت Firewall و Malware Scanner. می‌تواند فایل‌ها و دیتابیس را اسکن کند و هرگونه کد مشکوک را شناسایی نماید.

  • دیوار آتش (WAF) اختصاصی
  • هشدارهای امنیتی در لحظه
  • بررسی کامل فایل‌های هسته وردپرس

Sucuri Security

سرویس ابری و افزونه وردپرسی برای اسکن و حذف بدافزارها. از ویژگی‌های مهم آن می‌توان به Monitoring ۲۴/۷ و DDoS Protection اشاره کرد.

  • اسکن بدافزار از راه دور
  • محافظت در برابر حملات DDoS
  • گزارش‌های کامل امنیتی

MalCare Security

ابزاری سریع برای اسکن و حذف خودکار بدافزار بدون سنگین شدن سرور. این ابزار به‌ویژه برای هاست‌های اشتراکی بسیار مناسب است.

  • پاکسازی خودکار با یک کلیک
  • دیوار آتش قدرتمند
  • محافظت در برابر Brute Force

iThemes Security

تمرکز اصلی این پلاگین روی Prevention یا پیشگیری است. بیش از ۳۰ ابزار امنیتی در اختیار شما قرار می‌دهد تا ریسک حمله کاهش یابد.

  • تغییر URL لاگین
  • محدود کردن تلاش‌های ورود (Login Attempts)
  • نظارت بر تغییرات فایل‌ها

مطالب مرتبط
نظرات

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

پشتیبانی و طراحی سایت مصطفی علاالدین

خدمات طراحی و پشتیبانی سایت ، آموزش برنامه نویسی به صورت خصوصی و گروهی ، مشاوره جهت شروع کسب و کار آنلاین و طراحی CRM و CMS 

تمامی حقوق این وب‌سایت برای آکادمی برنامه نویس مصطفی علاالدین محفوظ است.

ورود | ثبت نام
شماره موبایل یا پست الکترونیک خود را وارد کنید
برگشت
کد تایید را وارد کنید
کد تایید برای شماره موبایل شما ارسال گردید
ارسال مجدد کد تا دیگر
برگشت
رمز عبور را وارد کنید
رمز عبور حساب کاربری خود را وارد کنید
برگشت
رمز عبور را وارد کنید
رمز عبور حساب کاربری خود را وارد کنید
برگشت
درخواست بازیابی رمز عبور
لطفاً پست الکترونیک یا موبایل خود را وارد نمایید
برگشت
کد تایید را وارد کنید
کد تایید برای شماره موبایل شما ارسال گردید
ارسال مجدد کد تا دیگر
ایمیل بازیابی ارسال شد!
لطفاً به صندوق الکترونیکی خود مراجعه کرده و بر روی لینک ارسال شده کلیک نمایید.
تغییر رمز عبور
یک رمز عبور برای اکانت خود تنظیم کنید
تغییر رمز با موفقیت انجام شد