
[ شبكة المهاجم C2 Server ]
│
▼ (استغلال ثغرة أو تخمين بيانات دخول)
[ تسجيل دخول ناجح إلى ووردبريس ]
│
├───► رفع إضافة ملغومة (Webshell / Backdoor)
├───► إنشاء حسابات مدراء خفية (Service Bots)
└───► توليد كلمات مرور التطبيقات (Application Passwords)
│
▼ (أتمتة دورية مجدولة)
[ ضخ مئات مقالات الكازينو برمجياً عبر REST API / Backdoor ]
│
▼
[ فهرسة الروابط الخبيثة في جوجل واستغلال سمعة النطاق ]
Published دون أي تسجيل لمؤلف محدد، حيث كانت خانة الكاتب تحمل القيمة Author = 0 بدلاً من أسماء المدراء المشروعة.sentinel، و auto-bootstrap، و auto-job-a41d50 مقترنة بعناوين IP خارجية مشبوهة استُخدمت لضخ المحتوى عبر الـ API.easypost برقم إصدار غير قياسي./var/log/nginx/access.log، بل في ملفات خاصة بكل نطاق فرعي (Virtual Host).Bash
grep -rn "access_log" /etc/nginx/sites-available/
wp.3wda.net) تُكتب داخل المسار المخصص:/var/log/virtualmin/wp.3wda.net_access_logBash
wp post list --post_status=publish --fields=ID,post_title,post_author,post_date --allow-root | grep -E "Casino|1win" | head -n 10
Plaintext
226 Hotel Algarve Casino – análise completa, bônus e jogos 0 2026-08-09 05:34:22
225 Пин Ап Казино - Официальный сайт Pin Up Casino 0 2026-08-09 03:35:37
223 Pin Up Casino - Azərbaycanda Onlayn Kazino 0 2026-08-09 03:35:36
تحليل جنائي: ظهور المعرف0ككاتب للمقال يؤكد أن المنشورات لم تكن تُنشر عبر حساب مستخدم عادي مسجل الدخول، بل تم إنشاؤها إما عبر تجاوز صلاحيات (Unauthenticated Endpoint) أو عبر سكربت داخلي يستدعي دالةwp_insert_post()مباشرة من داخل نظام الملفات دون تحديد$post_author.
.gz) في تواريخ وأوقات النشر المسجلة للمقالات (أوائل شهر أغسطس):Bash
zgrep "POST" /var/log/virtualmin/wp.3wda.net_access_log* | grep -E "31/Jul/2026|08/Aug/2026|09/Aug/2026" | head -n 30
Plaintext
172.70.248.135 - - [09/Aug/2026:03:35:36 +0000] "POST /wp-content/easypost/easypost.php?action=create_post HTTP/1.1" 201 321 "-" "Mozilla/5.0..."
172.70.248.135 - - [09/Aug/2026:03:35:37 +0000] "POST /wp-content/easypost/easypost.php?action=create_post HTTP/1.1" 201 336 "-" "Mozilla/5.0..."
easypost.php يستقبل طلبات خارجية تؤدي إلى إنشاء المنشورات بنجاح وبرمز استجابة HTTP 201 Created.wp-content/easypost/easypost.php، تبيّن أنه ليس مجرد كود شيل بسيط (Webshell)، بل هو حزمة برمجية معقدة وشديدة التنظيم طُورت خصيصاً للتحكم بمواقع ووردبريس عن بُعد.PHP
<?php
define('EASYPOST_ENDPOINT_CONFIG', '{"endpoint_version":"2026.06.10","token_id":"ep_e3fcea3ec05744d691373dd268ef1ad7","token_verifier":"v1:...","ota_release_public_key_pem":"-----BEGIN PUBLIC KEY-----\n..."}');
x-easypost-token-id, x-easypost-signature) مع التحقق من فارق التوقيت (Timestamp) لمنع هجمات إعادة الإرسال (Replay Attacks).easypost_endpoint_insert_elementor_widget) تقوم بالبحث في قاعدة بيانات الصفحات المصممة بـ Elementor وحقن أدوات نصوص وروابط مخفية داخل هياكل الـ JSON التابعة لها.display:none.left:-11407px; top:-10560px; position:absolute;).opacity:0.001).wp-content/mu-plugins/easypost-runtime.php ليظل يعمل مع كل تحميل لصفحات الموقع دون الحاجة لتفعيله كإضافة عادية.Bash
zgrep -E "28/Jul/2026" /var/log/virtualmin/wp.3wda.net_access_log* | grep "POST" | head -n 30
| التاريخ والوقت (UTC) | الطلب والمسار | رمز الاستجابة | الأثر الجنائي |
| 28 يوليو – 03:09:02 | POST /xmlrpc.php & /wp-login.php |
405 / 200 |
بدء هجوم التخمين (Brute Force) وتجربة كلمات المرور. |
| 28 يوليو – 03:24:49 | POST /wp-login.php |
302 Found |
نجاح تسجيل الدخول بحساب المسؤول بعد تخمين كلمة المرور. |
| 28 يوليو – 03:24:51 | POST /wp-admin/update.php?action=upload-plugin |
200 OK |
رفع وتثبيت حزمة الإضافة الملغومة مباشرة من لوحة التحكم. |
| 28 يوليو – 07:57:38 | POST /wp-json/wp/v2/users |
201 Created |
إنشاء حساب مسؤول خفي جديد باسم Service Bot (المعرف: 3). |
| 28 يوليو – 07:57:39 | POST /wp-json/wp/v2/users/3/application-passwords |
201 Created |
توليد كلمات مرور التطبيقات (REST API Passwords) للبوت. |
| 28 يوليو – 21:18:06 | POST /wp-json/wp/v2/users |
201 Created |
إنشاء حساب مسؤول خفي ثانٍ باسم admfha9c3 (المعرف: 4). |
| 30 يوليو – 18:44:25 | POST /wp-content/easypost/easypost.php?action=create_post |
201 Created |
بدء ضخ مقالات الكازينو عبر الباب الخلفي. |
| 15 أغسطس – 01:13:40 | POST /wp-content/easypost/easypost.php?action=update_endpoint |
200 OK |
تحديث كود الباب الخلفي عبر خادم تحكم خارجي مشفر. |
Bash
# استعراض قائمة المستخدمين
wp user list --allow-root
# حذف الحسابات الخبيثة وتعيين أي محتوى للحساب الأصلي (ID 1)
wp user delete 3 --reassign=1 --yes --allow-root
wp user delete 4 --reassign=1 --yes --allow-root
# تغيير كلمات المرور لكافة الحسابات الشرعية
wp user update 1 --user_pass='Super_Strong_Random_Password_Here!' --allow-root
wp user update 2 --user_pass='Another_Super_Strong_Password_Here!' --allow-root
Author = 0 دفعة واحدة دون إتلاف المقالات الأصلية:Bash
wp post delete $(wp post list --post_status=publish --author=0 --format=ids --allow-root) --force --allow-root
# تفريغ سلة المهملات نهائياً
wp post empty-trash --allow-root
wp-core-util و wp-security-helper و easypost):Bash
cd /home/threewda.net/domains/wp.3wda.net
rm -rf wp-content/easypost
rm -rf wp-content/plugins/easypost
rm -rf wp-content/plugins/wp-core-util
rm -rf wp-content/plugins/wp-security-helper
rm -f wp-content/mu-plugins/easypost-runtime.php
Bash
wp option delete easypost_homepage_placements --allow-root
wp-config.php وتوليد مفاتيح تشفير جديدة تماماً:PHP
define('AUTH_KEY', 'put-your-unique-phrase-here');
define('SECURE_AUTH_KEY', 'put-your-unique-phrase-here');
define('LOGGED_IN_KEY', 'put-your-unique-phrase-here');
define('NONCE_KEY', 'put-your-unique-phrase-here');
define('AUTH_SALT', 'put-your-unique-phrase-here');
define('SECURE_AUTH_SALT', 'put-your-unique-phrase-here');
define('LOGGED_IN_SALT', 'put-your-unique-phrase-here');
define('NONCE_SALT', 'put-your-unique-phrase-here');
[ حركة المرور الواردة ]
│
▼
┌──────────────────────────────────────────────────┐
│ الطبقة الأولى: Cloudflare WAF │
│ • حظر الـ REST API لغير الـ IPs المعتمدة │
└─────────────────────────┬────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ الطبقة الثانية: Nginx Web Server │
│ • حظر تنفيذ ملفات PHP داخل مجلد uploads │
│ • إغلاق ملف xmlrpc.php كلياً │
└─────────────────────────┬────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ الطبقة الثالثة: WordPress Core (wp-config.php) │
│ • تعطيل تعديل وتثبيت الإضافات عبر المتصفح │
│ • قفل التسجيل المفتوح وتجديد الـ Salts │
└──────────────────────────────────────────────────┘
wp-config.php)PHP
// منع تعديل الملفات البرمجية من لوحة التحكم
define( 'DISALLOW_FILE_EDIT', true );
// منع تثبيت وتحديث الإضافات والقوالب من المتصفح (التثبيت يتم عبر سطر الأوامر فقط)
define( 'DISALLOW_FILE_MODS', true );
Bash
wp option set users_can_register 0 --allow-root
/etc/nginx/sites-available/wp.3wda.net.conf) وإضافة قواعد الحماية الصارمة:Nginx
# 1. إغلاق xmlrpc.php نهائياً لمنع هجمات التخمين
location = /xmlrpc.php {
deny all;
return 403;
}
# 2. منع تشغيل وتنفيذ أي ملفات PHP داخل مجلدات الرفع والملفات الثابتة
location ~* ^/wp-content/(uploads|mu-plugins)/.*\.php$ {
deny all;
return 403;
}
# 3. منع تنفيذ ملفات PHP العشوائية الموضوعة مباشرة في جذر wp-content
location ~* ^/wp-content/[^/]+\.php$ {
deny all;
return 403;
}
# 4. تقييد عمليات النشر عبر REST API لسيرفرات الأتمتة المعتمدة فقط (مثل n8n)
location ~ ^/wp-json/wp/v2/(posts|pages|users) {
limit_except GET HEAD {
allow 198.51.100.45; # استبدله بعنوان IP الخاص بسيرفر الأتمتة
deny all;
}
try_files $uri $uri/ /index.php?$args;
}
Bash
sudo nginx -t && sudo systemctl reload nginx
Restrict WP API Modifications.URI Path starts with /wp-json/wp/v2/Request Method in {"POST", "PUT", "DELETE", "PATCH"}IP Source Address ne YOUR_N8N_SERVER_IP404 Not Found أو 410 Gone لطلبات تلك الصفحات. هذا الرمز يُعد إشارة صريحة لخوارزميات Googlebot بأن المحتوى تم حذفه نهائياً، مما يؤدي إلى إزالته تدريجياً من الفهرس.sitemap.xml وإعادة إرساله عبر Search Console لتسريع عملية إعادة زحف محركات البحث إلى الصفحات النظيفة فقط.git pull) ولمنع رفع وسائط الموقع إلى المستودع المصدري:uploads/ إلى ملف .gitignore:Code snippet
wp-content/uploads/
wp-content/upgrade/
*.log
Bash
# مسح كاش ووردبريس الداخلي
wp cache flush --allow-root
# إعادة تشغيل معالج PHP لقراءة ملفات الذاكرة المخبأة (OPcache)
systemctl reload php*-fpm
# تحديث قواعد إعادة التوجيه
wp rewrite flush --allow-root
| عنصر التحقق | الإجراء الأمني المطبق | الحالة بعد التحقيق |
| حسابات المستخدمين | حذف حسابات Service Bot و admfha9c3 وتعيين كلمات مرور معقدة |
مؤمّن بالكامل |
| مفاتيح التطبيقات | إبطال كافة مفاتيح الـ API غير المعروفة وإبقائها فقط لسيرفر n8n | مؤمّن بالكامل |
| ملفات النواة والإضافات | حذف easypost و wp-core-util و wp-security-helper |
نظيف 100% |
| تنفيذ PHP | حظر تنفيذ لغة PHP داخل مجلدات uploads و mu-plugins في Nginx |
محمي تماماً |
| واجهة XML-RPC | حظر مسار /xmlrpc.php كلياً على مستوى خادم الويب |
معطل نهائياً |
| إدارة الملفات البرمجية | تفعيل DISALLOW_FILE_MODS و DISALLOW_FILE_EDIT في wp-config.php |
مغلق عن المتصفح |
| التحكم بالـ API | تقييد صلاحيات التعديل في REST API بـ IP خادم الأتمتة فقط | محصن عبر WAF |
wp-content/uploads/ وتأكد من عدم وجود أي ملفات بامتداد .php بداخله (الملفات داخل هذا المجلد يجب أن تكون صور ومستندات فقط):find /path/to/wordpress/wp-content/uploads/ -type f -name "*.php"
index.php، wp-config.php، وملف .htaccess للتأكد من عدم وجود أكواد غريبة أو عمليات إعادة توجيه (Redirection rules).wp-config.php:// منع تعديل وتثبيت الإضافات والقوالب من لوحة التحكم نهائياً
define( 'DISALLOW_FILE_MODS', true );
define( 'DISALLOW_FILE_EDIT', true );
wp option set users_can_register 0 --allow-root
/var/log/virtualmin/wp.3wda.net_access_log0؛ النشر كـ author = 0 أو مجهول يعني أن المنشورات تم حقنها مباشرة عبر ثغرة REST API غير مصرح بها (Unauthenticated REST API Vulnerability) في قالب أو إضافة معينة، أو عبر SQL Injection / Backdoor كتب مباشرة في قاعدة البيانات.# فحص كل طلبات POST في تاريخ 31 يوليو و 8 و 9 أغسطس
zgrep "POST" /var/log/virtualmin/wp.3wda.net_access_log* | grep -E "31/Jul/2026|08/Aug/2026|09/Aug/2026" | head -n 30
zgrep -E "wp-json|admin-ajax\.php" /var/log/virtualmin/wp.3wda.net_access_log* | grep "POST" | head -n 30
wp plugin list --allow-root
find /home/threewda.net/domains/wp.3wda.net/public_html/wp-content/uploads/ -type f -name "*.php"
# فحص ملفات نواة ووردبريس الأساسية
wp core verify-checksums --allow-root
# فحص الإضافات المثبتة من المستودع الرسمي
wp plugin verify-checksums --all --allow-root
Success: WordPress installation verifies against checksums.)find /home/threewda.net/domains/wp.3wda.net/ -type f -name "*.php" -mtime -35 -ls
wp-config.php).grep -rnE "(eval\(|base64_decode\(|gzinflate\(|str_rot13\(|assert\(|passthru\(|shell_exec\()" /home/threewda.net/domains/wp.3wda.net/wp-content/ --exclude-dir={plugins,themes}
# فحص أول 20 سطراً في ملفات التشغيل الأساسية
head -n 20 /home/threewda.net/domains/wp.3wda.net/index.php
head -n 20 /home/threewda.net/domains/wp.3wda.net/wp-blog-header.php
head -n 20 /home/threewda.net/domains/wp.3wda.net/wp-load.php
# فحص ملفات التكوين وقواعد التوجيه المخفية
cat /home/threewda.net/domains/wp.3wda.net/.htaccess 2>/dev/null
لا توجد تعليقات بعد. كُن أول من يشارك رأيه!



أضف تعليقاً