Sploitus

Exploit for wp2shell-scan

kitploit · 2026-08-28

Exploit Code

MARKDOWN129 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-INSTAWP-WP2SHELL-SCAN
# wp2shell-scan

**اكتشف ونظّف اختراقاتwp2shell (CVE‑2026‑63030) عبر موقع ووردبريس واحد أو العديد منها.**

wp2shell هي ثغرة تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة (pre-authentication remote-code-execution) التي تم إصلاحها في **ووردبريس 7.0.2 / 6.9.5 / 6.8.6** (2026‑07‑17). ظهر إثبات مفهوم (PoC) عام خلال يوم واحد، وتبع ذلك استغلال جماعي خلال ~48 ساعة. الترقيع يسدّ الثغرة — لكن الموقع الذي تم استغلاله _قبل_ ترقيعه **مخترق بالفعل** ، والتحديث **لا** يزيل أدوات الثبات التي زرعها المهاجم.

هذه الأداة تجد وتزيل أدوات الثبات تلك. إنها سكربت Bash واحد خفيف الاعتماديات، يعمل **للقراءة فقط افتراضيًا** ويمكنه فحص **آلاف المواقع في تمريرة واحدة**.

> ⚠️ هذه أداة دفاعية. لا تحتوي على أي كود استغلال. **التقط لقطة (snapshot) للموقع قبل تشغيل`--clean`.**

## ما الذي تكتشفه

بعد مرحلة ما بعد الاستغلال، عادةً ما يترك wp2shell أثرين للثبات، وكلاهما تجده هذه الأداة:

  1. **مدير (Administrator) مارق** — شوهدت عدة نسخ: `user_login` = `wpsvc_<hex>` / `wp2_<hex>` / `w2s_<hex>`، أو بريد إلكتروني على نطاق مهاجم (`@wp2shell.*`، `@shellcode.*`، `@wordpress-svc.internal`، `@wordpress-noreply.net`، `@x.lol`)، مع دور `administrator`. (ملاحظة: `@system.local` هو بريد إلكتروني _شرعي_ بديل لمدير الموقع على بعض الاستضافات المدارة — وهو **عن قصد** غير معامل كمؤشر خطر (IOC).)
  2. **ويب شيل (webshell) متنكّر كإضافة (plugin)** — `wp-content/plugins/<plausible-name>-<6hex>/<same>.php`: ملف PHP صغير (~1.3 كيلوبايت) بترويسة `Author: WordPress.org Community` مزيفة، ومحمي خلف رمز توكن، ويعرض واجهة `?c=<command>`.



كما تكتشف الحالة العامة: أي ملف PHP صغير تحت `wp-content/` يوجّه `$_GET['c']` إلى حوض تنفيذ أوامر/تقييم (command/eval sink).

## التثبيت

root@kitploit:~
    
    
    curl -fsSLO https://raw.githubusercontent.com/InstaWP/wp2shell-scan/main/wp2shell-scan.sh
    chmod +x wp2shell-scan.sh
    

يتطلب `bash` و`find` و`grep` وعميل `mysql`/`mariadb`. يُستخدم WP‑CLI عند توفره (لحذف مستخدم أنظف) لكنه غير مطلوب — فكشف الويب شيل لا يحتاج إلى قاعدة بيانات إطلاقًا.

## الاستخدام

root@kitploit:~
    
    
    # افحص موقعًا واحدًا (للقراءة فقط)
    ./wp2shell-scan.sh --path /var/www/example.com
    
    # افحص كل تثبيت ووردبريس تحت مجلد أساسي (فحص جماعي)
    ./wp2shell-scan.sh --base /var/www
    ./wp2shell-scan.sh --base /home            # استضافة مشتركة
    
    # اكتشاف تلقائي للتخطيطات الشائعة (/var/www/*, /home/*/public_html, ...)
    ./wp2shell-scan.sh
    
    # بصيغة قابلة للقراءة آليًا
    ./wp2shell-scan.sh --base /var/www --json > report.json
    
    # تنظيف — عزل + إزالة البوابات الخلفية، تدوير أملاح wp-config (تسجيل خروج الجميع)
    ./wp2shell-scan.sh --base /var/www --clean --yes
    
    # فحص نسخة احتياطية / لقطة / تفريغ قالب قبل استعادته (انظر التحذير أدناه)
    ./wp2shell-scan.sh --sql /path/to/backup.sql
    

تُنقل الأصول المزالة إلى **دليل عزل (quarantine)** (وليس حذفها نهائيًا) حتى تحتفظ بالأدلة. كود الخروج هو `1` عند وجود اختراق (فحص) أو عند التنظيف (تنظيف)، و`0` عندما يكون الموقع نظيفًا — وهو أمر مفيد لـ cron/CI.

### نموذج للمخرجات

root@kitploit:~
    
    
    [COMPROMISED] /var/www/example.com  — 2 backdoor admin(s), 2 webshell(s)
          admin: ID=41 wpsvc_2e1487df8abb <some-email@example.com> (2026-07-19 06:41:48)
          webshell: .../wp-content/plugins/security-headers-manager-8d1d21/security-headers-manager-8d1d21.php
    [clean] /var/www/other-site.com
    ----------------------------------------------------------------
    scanned=812  clean=811  compromised=1  cleaned=0
    

## ⚠️ لا تنسَ نسخك الاحتياطية ولقطاتك وقوالبك

**تنظيف موقع مباشر لا ينظّف نسخك الاحتياطية.** النسخة الاحتياطية أو اللقطة أو لقطة قالب/نموذج أولي (blueprint) الملتقطة _بينما كان الموقع مخترقًا_ لا تزال تحتوي على حساب المدير الخاص بالمهاجم — واستعادتها (أو توفير موقع جديد منها) **يعيد الاختراق فورًا**. تعلمنا هذا بالطريقة الصعبة: بعد تنظيف كل موقع مباشر متأثر، استمرت مواقع جديدة بالظهور ومعها البوابة الخلفية لأنها كانت تُوفَّر من لقطة قالب مسموم.

افحص التفريغ (dump) **قبل** استعادته:

root@kitploit:~
    
    
    ./wp2shell-scan.sh --sql /path/to/backup.sql
    ./wp2shell-scan.sh --sql backup1.sql --sql backup2.sql.gz   # قابل للتكرار، يدعم .gz
    

كود الخروج هو `1` إذا كان أي تفريغ مسمومًا. إذا كان كذلك: **لا تستعده** — نظّف الموقع المباشر أولًا، ثم التقط نسخة احتياطية **جديدة** ، واحذف/استبدل أي لقطة أو قالب أُنشئ خلال نافذة تعرضك للخطر.

## بعد التنظيف

يزيل `--clean` المدير والويب شيل ويدوّر الأملاح (salts). **يجب عليك أيضًا:**

  1. **تحديث نواة ووردبريس** إلى 7.0.2 / 6.9.5 / 6.8.6 (الإصلاح الفعلي).
  2. **إعادة تعيين كل كلمات مرور المديرين** وإعادة تثبيت/التحقق من النواة والإضافات (`wp core verify-checksums`).
  3. **تدوير أي أسرار يمكن للموقع قراءتها** — كلمة مرور قاعدة البيانات، مفاتيح API، بيانات اعتماد SMTP — افترض أنها تسربت.
  4. **مراجعة ما نفّذه الشيل** — سجلات الوصول لديك تسجّل قيم أوامر `?c=`.
  5. احظر مسار الدفعات (batch route) عند الحافة/الأصل حتى يتم ترقية كل المواقع (`/wp-json/batch/v1`، `?rest_route=/batch/v1`، بما في ذلك المشفَّر بـ `%2f`). ضعه في **الأصل (origin)** إذا كان CDN قد يمرر مسار REST.



## التحقق يدويًا (بدون أداة)

المديرون المارقون:

root@kitploit:~
    
    
    SELECT u.ID,u.user_login,u.user_email,u.user_registered
    FROM wp_users u JOIN wp_usermeta m ON u.ID=m.user_id
    WHERE m.meta_key='wp_capabilities' AND m.meta_value LIKE '%administrator%'
    ORDER BY u.user_registered DESC;
    

إضافات الويب شيل:

root@kitploit:~
    
    
    find wp-content/plugins -maxdepth 1 -type d -regextype posix-extended -regex '.*-[0-9a-f]{6}$'
    grep -rl "\$_GET\['c'\]" wp-content/plugins/
    

## تفضّل وكيل ذكاء اصطناعي؟

اطّلع على `CLEANUP-WITH-CLAUDE.md` للحصول على موجه جاهز للصق يوجّه Claude Code (أو أي وكيل برمجة قادر) خلال نفس عملية الكشف والتنظيف على موقع واحد، مع تأكيد بشري قبل كل خطوة تدميرية.

## الترخيص

MIT — انظر LICENSE. يُقدَّم كما هو، دون أي ضمان. بُني واختُبر في معركة حقيقية خلال حادثة مباشرة بواسطة فريق InstaWP.