كيفية اكتشاف أبواب وردبريس الخلفية المخفية باستخدام WP-CLI و SQL
30 июля 2026 г.
0
Internet TechnologyComments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
يواجه المرء ترددًا كبيرًا عند الرغبة في النقر على زر تحديث النواة (Core) لموقع وردبريس تم تطويره عبر جهات خارجية. فالخوف من حدوث تعارض في القوالب أو الإضافات المخصصة وتحول الشاشة إلى اللون الأبيض يؤدي إلى تأجيل التحديثات، حتى يصبح الموقع مليئًا بالثغرات الأمنية. وعندما يتملكك القلق من احتمال تعرض الموقع للاختراق بالفعل، فهذه هي إجراءات الفحص العملي الأسرع للتحقق من قاعدة البيانات والسيرفر.
عادة ما يتسلل المخترقون دون إثارة الشكوك، حيث يقومون بالتعديل المباشر على جدول wp_usermeta في قاعدة البيانات لمنح حسابات حالية صلاحيات المسؤول بشكل خفي. قد لا تظهر هذه الحسابات في قائمة تسجيل الدخول العادية، لكن الاستعلام المباشر لقاعدة البيانات يكشفها فورًا.
`sql
SELECT
u.ID,
u.user_login,
u.user_email,
u.user_registered,
m.meta_value AS capabilities
FROM
wp_users u
INNER JOIN
wp_usermeta m ON u.ID = m.user_id
WHERE
m.meta_key = 'wp_capabilities'
AND (
m.meta_value LIKE '%"administrator"%'
OR m.meta_value LIKE '%"administrator":true%'
)
ORDER BY
u.user_registered DESC;
`
الخطوة التالية هي نظام الملفات. إذا وجدت ملفات PHP داخل مجلد wp-content/uploads -الذي يفترض أن يحتوي على الصور والمستندات فقط- فهي بنسبة كبيرة باب خلفي (Backdoor). افتح موجه أوامر SSH وافحص المجلد للبحث عن الملفات الخطرة.
`bash
find wp-content/uploads/ -type f -name "*.php" -ls
find . -type f -name "*.php" -exec grep -HnE "(eval(|base64_decode(|gzinflate(|passthru(|shell_exec()" {} ;
wp core verify-checksums --include-root
`
يجب عليك أيضًا مراجعة السجلات (Logs). الهجمات التي تستهدف REST API ترسل عادة عددًا كبيرًا من طلبات POST في فترة زمنية قصيرة وتتلقى استجابات بـ 200 أو 201. يمكنك استخراج الطلبات ذات الاستجابات المشبوهة من ملف access.log الخاص بـ Nginx.
`bash
grep -E "POST|PUT" /var/log/nginx/access.log | grep -E "/wp-json/|rest_route=" | awk '/ {print $1, $4, $6, $7, $9}' | sort | uniq -c | sort -nr | head -n 30
`
تطبيق التحديثات والترقيعات مباشرة على الموقع الحي ليس شجاعة بل تهور. قم بإنشاء بيئة تجريبية (Staging) تتضمن نسخة كاملة من قاعدة البيانات ونظام الملفات أولاً.
`bash
wp db export production_backup.sql --add-drop-table
rsync -avz --exclude='wp-content/cache' /var/www/html/ staging:/var/www/staging/
wp db import production_backup.sql
wp search-replace 'https://example.com' 'https://staging.example.com' --skip-columns=guid
wp plugin list --update=available --fields=name,version,update_version,requires_php --format=table
`
بعد الانتهاء من النسخ، قم بإجراء التحديث واختبر الوظائف الرئيسية لمدة 5 دقائق على الأقل. لضمان راحة البال، اختبر بنفسك تسجيل الحساب، تسجيل الدخول، إضافة المنتجات للسلة، استدعاء نافذة الدفع، وإرسال نموذج الاستفسار.
قد تواجه موقفًا محبطًا حيث يتعذر تحديث النواة فورًا لأن مطور إحدى الإضافات لم يصدر تحديثًا لها. في هذه الحالة، يمكنك كسب الوقت عن طريق حظر الوصول إلى مسارات معينة على مستوى السيرفر أو عبر جدار حماية تطبيقات الويب (WAF). إذا كنت تستخدم Nginx، يمكنك حظر نقاط نهاية إنشاء المستخدمين والعمليات المجمعة في REST API داخل nginx.conf باستثناء عنوان IP الخاص بك.
`nginx
location ~* ^/wp-json/(batch/v1|wp/v2/users) {
limit_except GET {
allow 192.0.2.1;
deny all;
}
try_files $uri args;
}
`
تحسبًا لأي طارئ، قم بإعداد سكربت نسخ احتياطي إضافي يرفع قاعدة البيانات ومجلد التنزيلات إلى S3.
`bash
#!/bin/bash
WP_PATH="/var/www/html"
BACKUP_DIR="/tmp/wp_backups"
DATE=$(date +%Y%m%d_%H%M%S)
S3_BUCKET="s3://my-wordpress-secure-backups"
mkdir -p $BACKUP_DIR
wp db export BACKUP_DIR/db_DATE.sql --path=$WP_PATH --quiet
tar -czf BACKUP_DIR/files_DATE.tar.gz -C $WP_PATH wp-content/uploads/
aws s3 cp BACKUP_DIR/db_DATE.sql S3_BUCKET/db_DATE.sql
aws s3 cp BACKUP_DIR/files_DATE.tar.gz S3_BUCKET/files_DATE.tar.gz
find $BACKUP_DIR -type f -mtime +7 -delete
`
الأمر لا ينتهي بمجرد مسح الأكواد الخبيثة وتطبيق التحديثات الأمنية، إذ يمكن للمخترق العودة مجددًا باستخدام ملفات تعريف ارتباط الجلسة (Session Cookies) المسروقة. لذلك يجب إنهاء جميع الجلسات وتغيير جميع مفاتيح Salt في wp-config.php.
`bash
wp user list --field=ID | xargs -n 1 wp user session destroy --all
wp config shuffle-salts
`
قم أيضًا بتعطيل ميزة تعديل ملفات الإضافات والقوالب مباشرة من لوحة التحكم. يُعد هذا صمام أمان أدنى يمنع حاقن الأكواد حتى لو تمكن المخترق من الحصول على الصلاحيات. أضف السطرين التاليين إلى ملف wp-config.php:
`php
define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true );
`
أخيرًا، لمنع المستخدمين غير مسجلي الدخول من سرقة قائمة المستخدمين عبر REST API، أضف فلاتر الحماية التالية داخل مجلد mu-plugins.
`php
<?php
/**
`