ثلاثة أمور قبل كل شيء

١. خذ نسخة كاملة من الموقع المصاب — ملفات وقاعدة بيانات. هي دليلك وشبكة أمانك.
٢. لا تحذف شيئًا بعد. حذف البرمجية الخبيثة يمحو الأثر المؤدي إلى الباب الخلفي.
٣. إن كان الموقع يستقبل مدفوعات، فعّل وضع الصيانة الآن. صفحة دفع مخترقة تسرق أرقام البطاقات.

الخطوة ١: تحديد نطاق الإصابة

قبل التنظيف، اعرف إلى أي مدى وصلت. في الاستضافة المشتركة، يلوّث موقع مصاب واحد بقية المواقع في نفس الحساب بانتظام: تنظّف واحدًا فيعيد الجار إصابته خلال ساعات.

  • هل لديك مواقع أخرى على الحساب؟ افحصها كلها.
  • هل حساب الاستضافة نفسه مخترق؟ ابحث عن مستخدمي SFTP ومفاتيح SSH لم تُنشئها.
  • هل هناك مديرون لا تعرفهم؟ راجع قائمة الأعضاء، وافحص قاعدة البيانات مباشرة — بعض البرمجيات تخفي الحسابات عن الواجهة.
  • ماذا ترى جوجل؟ ابحث عن site:yourdomain.com وابحث عن صفحات لم تكتبها قط، وراجع تقرير «مشكلات الأمان» في Search Console.

الخطوة ٢: تحديد نقطة الدخول

هذه الخطوة التي يتجاوزها الجميع، وهي سبب فشل عمليات التنظيف. أنت تبحث عن إجابة سؤال واحد: من أين دخلوا؟

اقرأ تواريخ التعديل

ملفات عُدِّلت الثالثة فجرًا في يوم لم تنشر فيه شيئًا هي خريطتك. عبر SSH:

# ملفات PHP عُدِّلت خلال آخر ١٤ يومًا
find . -name "*.php" -mtime -14 -ls

# ملفات PHP مختبئة في مجلد الوسائط — خبيثة دائمًا تقريبًا
find wp-content/uploads -name "*.php"

لا يوجد عمليًا سبب مشروع لوجود ملف PHP داخل wp-content/uploads/. إن وجدت واحدًا فقد وجدت ثغرة تنفيذ.

اقرأ سجلات الوصول

تُظهر سجلات استضافتك الطلبات التي سبقت أول ملف مُعدَّل. ابحث عن طلبات POST إلى مسارات غير معتادة، وطلبات متكررة إلى نقطة نهاية إضافة بعينها، وعنوان IP يتكرر. هذا يكشف عادةً الإضافة المصابة بالثغرة.

قارن إصدارات الإضافات

قارن كل إضافة مثبّتة وإصدارها بقاعدة بيانات الثغرات WPScan. إضافة قديمة بثغرة تنفيذ شيفرة عن بُعد منشورة هي المشتبه به الأول.

الخطوة ٣: استبدل بدل أن تُطهّر

  1. نواة ووردبريس. احذف wp-admin/ وwp-includes/ بالكامل وارفع نسخًا نظيفة من نفس الإصدار.
  2. الإضافات والقوالب. احذفها كلها وأعد التثبيت من المستودع الرسمي أو من المطوّر. وأي إضافة لم تعد مدعومة لا تعود.
  3. ملفات الجذر. قارن index.php وwp-config.php و.htaccess بمراجع نظيفة. البرمجيات الخبيثة تعشق قواعد إعادة التوجيه.
  4. مجلد الوسائط. احتفظ بالصور واحذف كل ملف قابل للتنفيذ. صور فقط.

الخطوة ٤: تنظيف قاعدة البيانات

  • شيفرات مزروعة في المحتوى — ابحث في wp_posts عن <script وeval( وإطارات iframe لم تضفها.
  • مدخلات دخيلة في wp_options — خاصة ذات التحميل التلقائي، فهي تُنفَّذ مع كل طلب.
  • مديرون غير مصرّح بهم في wp_users وwp_usermeta.
  • مهام مجدولة خبيثة في خيار cron — حيلة بقاء شائعة تعيد تنزيل الحمولة بعد تنظيفك.

الخطوة ٥: غيّر كل بيانات الاعتماد

افترض أن كل ما كان الموقع يصل إليه صار مكشوفًا، لأنه كذلك غالبًا:

  • كلمة مرور قاعدة البيانات (وحدّث wp-config.php)
  • لوحة الاستضافة وSFTP وSSH — واحذف أي مفتاح لا تعرفه
  • كل كلمات مرور المديرين
  • مفاتيح الأمان في wp-config.php — أعِد توليدها، فذلك يُنهي كل الجلسات بما فيها جلسة المهاجم
  • أي مفاتيح API مخزّنة: بوابات الدفع، SMTP، التكاملات الخارجية

الخطوة ٦: رفع الحظر

بعد التأكد من نظافة الموقع فقط. طلب مراجعة مرفوض يجعل الطلب التالي أبطأ: تحقّق أولًا بفحص مستقل، ثم من Search Console افتح الأمان والإجراءات اليدوية ← مشكلات الأمان واطلب المراجعة. المدة المعتادة بضعة أيام.

فخ تكرار الإصابة

إذا سبق أن نُظّف موقعك ثم أُصيب مجددًا، فالتنظيف السابق أزال الحمولة وترك الباب مفتوحًا. الأبواب الخلفية تختبئ في ملفات عادية تمامًا: بضعة بايتات مُضافة إلى ملف قالب شرعي، أو ملف wp-cache.php مزيّف في الجذر، أو mu-plugin صامت. تسمية نقطة الدخول هي الطريقة الوحيدة للتأكد من الانتهاء.

تريد إنجازها بشكل صحيح، مرة واحدة؟

تنظيف كامل: تحديد نقطة الدخول، إزالة كل باب خلفي، تغيير بيانات الاعتماد، تحصين، وتقرير مكتوب يشرح كيف دخلوا.

أسئلة شائعة

كيف اختُرق موقعي؟

الغالبية العظمى عبر إضافة قديمة بها ثغرة معروفة. ثم كلمات المرور الضعيفة أو المُعاد استخدامها، أو حساب استضافة مخترق، أو تلوّث من موقع مجاور.

لماذا تتكرر الإصابة بعد التنظيف؟

لأن التنظيف أزال الحمولة لا نقطة الدخول. وما لم تُغلق الثغرة وتُغيَّر بيانات الاعتماد، يعود المهاجم.

هل يكفي استرجاع نسخة احتياطية؟

فقط إن كانت تسبق الإصابة و أصلحت الثغرة فورًا بعدها. معظم الاختراقات تمرّ دون ملاحظة لأسابيع.

هل تكفي إضافة أمان للتنظيف؟

لإزالة الحمولات الظاهرة، غالبًا نعم. أما العثور على الأبواب الخلفية وتحديد نقطة الدخول فلا — فذلك يتطلب قراءة السجلات وتواريخ التعديل.