
ماسح أمان WordPress للقراءة فقط لخوادم HestiaCP. يكتشف مؤشرات اختراق wp2shell (CVE-2026-63030 / CVE-2026-60137) عبر جميع المواقع المستضافة — تقارير بريد إلكتروني لكل مستخدم، ومقارنة ملفات النواة مع نسخة WordPress نظيفة، وتحليل PHP/JS/htaccess/الصور، وتقييم اختياري بالذكاء الاصطناعي عبر Claude API.
<div align="center">
# 🛡️ wp2shell-Hestia-Scanner
<p>
<a href="#english">🇬🇧 الإنجليزية</a>
|
<a href="#greek">🇬🇷 اليونانية</a>
</p>




**ماسح أمان ووردبريس للقراءة فقط لخوادم HestiaCP.**
يكتشف مؤشرات اختراق wp2shell عبر جميع المواقع المستضافة — مع تقارير بريد إلكتروني لكل عميل، ومقارنة ملفات النواة، واكتشاف الـ webshell عبر SHA256، وتقييم المخاطر، وتقييم اختياري بالذكاء الاصطناعي.
> ⚠️ **النسخ الآمنة:** ووردبريس **6.8.6 / 6.9.5 / 7.0.2** أو أحدث.
> هذه السكربتات **لا تعدّل أي شيء أبدًا** — للقراءة فقط في جميع العمليات.
</div>
---
<a name="english"></a>
# 🇬🇧 الإنجليزية
## ما هو wp2shell؟
wp2shell هي سلسلة استغلال لتنفيذ أكواد عن بُعد (RCE) قبل المصادقة في نواة ووردبريس، كُشف عنها في **17 يوليو 2026**. يكفي طلب HTTP مجهول واحد إلى تثبيت افتراضي لإنشاء مدير خبيث وتنفيذ أكواد عشوائية على الخادم.
تتكون السلسلة من:
- **CVE-2026-60137** — حقن SQL في معامل `author__not_in` الخاص بـ `WP_Query`
- **CVE-2026-63030** — التباس المسار في نقطة نهاية REST API `/wp-json/batch/v1`
المواقع المخترقة تُظهر مديرًا خبيثًا ببادئة تسجيل دخول `wp2_` وبريد إلكتروني `@wp2shell.invalid`.
مزيد من المعلومات: <https://wp2shell.com>
---
## محتويات المستودع
| الملف | الغرض |
|------|---------|
| `wp2shell-scan.sh` | ماسح IoC سريع لكامل الخادم — مخرجات طرفية ملوّنة، درجة مخاطر لكل موقع، تقرير يُحفظ تلقائيًا في `/root/` |
| `wp2shell-report-per-user.sh` | ماسح كامل — تقارير بريد إلكتروني لكل مستخدم HestiaCP، ومقارنة ملفات النواة، واكتشاف الـ webshell عبر SHA256، وتقييم بالذكاء الاصطناعي، وتقييم المخاطر |
| `known_shells.sha256` | قاعدة بيانات بصمات SHA256 للـ webshell المعروفة — تُجلب تلقائيًا عند التشغيل |
---
## ماذا يفحص الماسح
### فحوصات قاعدة البيانات / المستخدمين
| الفحص | الخطورة |
|-------|----------|
| إصدار ووردبريس مقابل الإصدارات الآمنة | HIGH / OK |
| حسابات ببادئة `wp2_` أو بريد إلكتروني `@wp2shell.invalid` | CRITICAL |
| مديرون أُنشئوا بعد الكشف (15/07/2026) | MEDIUM |
| فجوات في تسلسل معرّفات المستخدمين (آثار مدير خبيث محذوف) | MEDIUM |
| صفوف `wp_usermeta` يتيمة | MEDIUM |
| صفوف `oembed_cache` / `customize_changeset` مسمومة | CRITICAL |
| خيارات ووردبريس معبث بها (`upload_path`, `auto_prepend_file`, `siteurl`) | CRITICAL / HIGH |
### سلامة ملفات النواة
| الفحص | الخطورة |
|-------|----------|
| `wp core verify-checksums` مقابل wp.org | HIGH |
| مقارنة `diff -U5` سطرًا بسطر مع نواة نظيفة مُنزّلة | CRITICAL / HIGH / OK |
| ملفات إضافية غير موجودة في النواة النظيفة (مع عرض المحتوى والبيانات الوصفية) | CRITICAL / HIGH |
### تحليل الملفات
| الفحص | الخطورة |
|-------|----------|
| ملفات PHP في `uploads/` | CRITICAL |
| امتدادات PHP إضافية (`.php7` `.phtml` `.phar` `.php5`) | HIGH |
| **تطابق SHA256 مع قاعدة بيانات الـ webshell المعروفة** (WSO, FilesMan, b374k, p0wny…) | CRITICAL |
| PHP معدّلة بعد `SINCE_DATE` **وأيضًا** تطابق أنماطًا مشبوهة — مع عرض السطر المطابق | CRITICAL / HIGH |
| PHP بأنماط مشبوهة لكنها لم تُعدَّل مؤخرًا | LOW |
| JS/HTML معدّلة بعد `SINCE_DATE` وتطابق أنماط تمويه | MEDIUM |
| **روابط C2/تسريب بيانات خارجية** (pastebin, ngrok, Discord webhooks, bit.ly…) | CRITICAL |
| توجيهات `.htaccess` خطيرة (`AddType`, `auto_prepend_file`, `RewriteRule` خارجية) | HIGH |
| `.htaccess` معدّل بعد `SINCE_DATE` | MEDIUM |
| صور متعددة التنسيقات بحمولة PHP (`<?php` في `.jpg`/`.png`…) | CRITICAL |
| ملفات نسخ احتياطي/إعدادات مكشوفة (`wp-config.php.bak`, `*.sql`…) | MEDIUM |
### الثبات
| الفحص | الخطورة |
|-------|----------|
| إدخالات crontab للمستخدم تحتوي `curl`/`wget`/`php`/`base64` | HIGH |
| ملفات cron للنظام تشير إلى مسار الموقع | MEDIUM |
### درجة المخاطر
يحصل كل موقع على **درجة مخاطر من 0–100** مع تفصيل لكل نتيجة مساهمة:
```
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
```
| الدرجة | التصنيف |
|-------|-------|
| 0–20 | نظيف على الأرجح |
| 21–40 | مخاطر منخفضة |
| 41–60 | مخاطر متوسطة |
| 61–80 | مخاطر عالية |
| 81+ | **مُخترَق** |
---
## المتطلبات
- خادم لينكس يعمل بنظام **HestiaCP**
- **bash** 4.0+
- **[WP-CLI](https://wp-cli.org/)** مثبَّت عالميًا باسم `wp`
- صلاحية `root`
- `sendmail` (لتقارير البريد الإلكتروني)
- `python3` (لمعالجة JSON في التقييم بالذكاء الاصطناعي)
- `curl`, `sha256sum`, `file`, `strings`, `unzip`
### تثبيت WP-CLI (إن لم يكن مثبّتًا)
```bash
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
```
---
## التثبيت والتشغيل بسطر واحد
### فحص IoC سريع
```bash
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
```
### فحص كامل مع تقارير بريد إلكتروني لكل عميل
```bash
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
```
> **ملاحظة:** الماسح الكامل يطرح أسئلة تفاعلية عند بدء التشغيل (تقييم الذكاء الاصطناعي، حفظ التقرير، حد التاريخ). تنزيل السكربت أولًا ثم تشغيله يضمن عمل الأسئلة بشكل صحيح.
---
## الاستخدام
### wp2shell-scan.sh — فحص سريع لكامل الخادم
```bash
sudo bash wp2shell-scan.sh
```
يجد جميع تثبيتات ووردبريس تحت `/home/*/web/*/public_html/`، وينفّذ جميع الفحوصات، ويطبع مخرجات ملوّنة في الطرفية، ويحفظ تقريرًا كاملًا في `/root/wp2shell-report-YYYYMMDD-HHMMSS.txt`.
عند بدء التشغيل يطلب حدًّا مخصصًا اختياريًا للتاريخ (الافتراضي: `2026-07-15`).
### wp2shell-report-per-user.sh — فحص كامل مع تقارير البريد الإلكتروني
```bash
sudo bash wp2shell-report-per-user.sh
```
عند بدء التشغيل، ثلاثة أسئلة:
```
[AI EVALUATION] Use AI evaluation for ambiguous files? [y/N]
[SAVE REPORT] Save a full report file for later review? [y/N]
[DATE THRESHOLD] Use a different date? Leave blank to keep default [YYYY-MM-DD]:
```
**ابدأ دائمًا بـ `DRY_RUN=1`** (الافتراضي) — يتم معاينة رسائل البريد على الشاشة ولا يُرسل شيء. غيّرها إلى `DRY_RUN=0` فقط بعد التأكد من أن المخرجات صحيحة.
---
## الإعدادات
### wp2shell-scan.sh
| المتغير | الافتراضي | الوصف |
|----------|---------|-------------|
| `WEB_ROOT` | `/home` | الجذر الافتراضي لـ HestiaCP |
| `SINCE_DATE` | `2026-07-15` | حد "عُدّل مؤخرًا" |
| `WP` | `wp` | مسار WP-CLI |
### wp2shell-report-per-user.sh
| المتغير | الافتراضي | الوصف |
|----------|---------|-------------|
| `DRY_RUN` | `1` | `1` = معاينة فقط، `0` = إرسال رسائل البريد |
| `SEND_ONLY_IF_ISSUES` | `0` | `1` = تخطّي البريد إذا كان الموقع نظيفًا |
| `SINCE_DATE` | `2026-07-15` | حد "عُدّل مؤخرًا" |
| `MAIL_FROM` | `security@<hostname>` | مُرسِل المغلف |
| `CORE_CACHE` | `/root/wp2shell-cores` | دليل ذاكرة التخزين المؤقت للنواة النظيفة |
| `ANTHROPIC_API_KEY` | *(فارغ)* | مفتاح Claude API للتقييم بالذكاء الاصطناعي |
---
## التقييم بالذكاء الاصطناعي (اختياري)
بالنسبة لنتائج الـ diff الغامضة التي لا تستطيع الأنماط وحدها تصنيفها، يرسل الماسح الـ diff إلى **Claude API** (`claude-sonnet-4-6`) ويعيد حكمًا: `DANGER` أو `SUSPICIOUS` أو `REVIEW` أو `OK` مع شرح من جملة واحدة. يُستخدم الذكاء الاصطناعي **فقط** في المنطقة الرمادية — أما الحالات الواضحة فتُصنَّف فورًا دون أي استدعاء API.
ضع مفتاحك في السكربت أو صدّره قبل التشغيل:
```bash
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
```
مفاتيح API: <https://console.anthropic.com> — وهي منفصلة عن اشتراكات claude.ai.
### لا تملك مفتاح API؟ استخدم محلل المتصفح
الصق مخرجات الفحص في أداة **wp2shell Report Analyzer** على Claude.ai — فهي تنفّذ نفس التقييم بالذكاء الاصطناعي مباشرة في المتصفح دون الحاجة إلى مفتاحك الخاص.
---
## تنسيق المخرجات
### مستويات الخطورة
| التصنيف | اللون | المعنى |
|-------|-------|---------|
| `[CRITICAL]` | 🔴 أحمر عريض | مؤشر اختراق نشط — تصرّف فورًا |
| `[HIGH]` | 🔴 أحمر | مؤشر قوي — راجعه على وجه السرعة |
| `[MEDIUM]` | 🟡 أصفر | مشبوه — حقّق في الأمر |
| `[LOW]` | 🔵 أزرق | أولوية منخفضة — غالبًا موجب كاذب |
| `[INFO]` | ⚫ رمادي | معلوماتي |
| `[OK]` | 🟢 أخضر | نظيف / متوقع |
### مثال على مقارنة النواة
```
┌─ MODIFIED: wp-includes/load.php
│ [CRITICAL] Assessment (patterns): executable/obfuscated pattern in added lines
│ +20 Core file modified with dangerous pattern
│
│ ORIGINAL: /root/wp2shell-cores/7.0.2-el/wp-includes/load.php
│ SITE: /home/user/web/example.gr/public_html/wp-includes/load.php
│ @@ -212,5 +212,6 @@
│ - $loaded = true;
│ + $loaded = true;
│ + eval(base64_decode('aGVsbG8='));
└──────────────────────────────────────
```
---
## ملاحظات
- الماسح **لا يعدّل أي شيء أبدًا**. آمن للتشغيل على خوادم الإنتاج المباشرة.
- تحديث ووردبريس إلى إصدار مصحّح يسدّ الثغرة لكنه **لا ينظّف** موقعًا مخترقًا بالفعل. إذا وُجدت مؤشرات، استعد من نسخة احتياطية نظيفة.
- دليل `CORE_CACHE` (`/root/wp2shell-cores/`) يُعاد استخدامه بين الفحوصات. احذفه لإجبار تنزيل جديد.
- قاعدة بيانات بصمات `known_shells.sha256` تُحدَّث تلقائيًا مرة واحدة يوميًا.
---
## الترخيص
GPL-3.0 — انظر [LICENSE](https://github.com/bytespulse-oe/wp2shell-hestia-scanner/blob/main/LICENSE)
---
## الاعتمادات
طُوّر بواسطة **[BytesPulse](https://bytespulse.gr)** استجابةً للكشف عن wp2shell (يوليو 2026).
معلومات CVE: <https://wp2shell.com>
---
---
<a name="greek"></a>
# 🇬🇷 اليونانية
## ما هو wp2shell؟
wp2shell هي سلسلة استغلال لتنفيذ أكواد عن بُعد (RCE) في نواة ووردبريس، كُشف عنها في **17 يوليو 2026**. يكفي طلب HTTP مجهول واحد إلى تثبيت افتراضي لإنشاء مدير خبيث وتنفيذ أكواد عشوائية على الخادم.
تتكون السلسلة من:
- **CVE-2026-60137** — حقن SQL في معامل `author__not_in` الخاص بـ `WP_Query`
- **CVE-2026-63030** — التباس المسار في REST API `/wp-json/batch/v1`
المواقع المخترقة تُظهر حساب مدير ببادئة `wp2_` وبريد إلكتروني `@wp2shell.invalid`.
مزيد من المعلومات: <https://wp2shell.com>
---
## المحتويات
| الملف | الغرض |
|--------|--------|
| `wp2shell-scan.sh` | ماسح IoC سريع — مخرجات ملوّنة في الطرفية، درجة مخاطر لكل موقع، حفظ تلقائي للتقرير في `/root/` |
| `wp2shell-report-per-user.sh` | ماسح كامل — تقارير بريد إلكتروني لكل مستخدم HestiaCP، مقارنة النواة، اكتشاف الـ webshell عبر SHA256، تقييم بالذكاء الاصطناعي، درجة مخاطر |
| `known_shells.sha256` | قاعدة بيانات SHA256 للـ webshell المعروفة — تُنزَّل تلقائيًا عند التشغيل |
---
## ماذا يفحص
### قاعدة البيانات / المستخدمون
| الفحص | الخطورة |
|---------|-----------|
| إصدار ووردبريس مقابل الإصدارات الآمنة | HIGH / OK |
| حسابات ببادئة `wp2_` أو بريد إلكتروني `@wp2shell.invalid` | CRITICAL |
| مديرون أُنشئوا بعد الكشف (15/07/2026) | MEDIUM |
| فجوات في تسلسل معرّفات المستخدمين (آثار مدير خبيث محذوف) | MEDIUM |
| صفوف `wp_usermeta` يتيمة | MEDIUM |
| صفوف `oembed_cache` / `customize_changeset` مسمومة | CRITICAL |
| خيارات ووردبريس معبث بها (`upload_path`, `auto_prepend_file`, `siteurl`) | CRITICAL / HIGH |
### سلامة ملفات النواة
| الفحص | الخطورة |
|---------|-----------|
| `wp core verify-checksums` مقابل wp.org | HIGH |
| مقارنة `diff -U5` سطرًا بسطر مع نواة نظيفة | CRITICAL / HIGH / OK |
| ملفات إضافية غير موجودة في النواة النظيفة | CRITICAL / HIGH |
### تحليل الملفات
| الفحص | الخطورة |
|---------|-----------|
| ملفات PHP في `uploads/` | CRITICAL |
| امتدادات PHP إضافية (`.php7` `.phtml` `.phar` `.php5`) | HIGH |
| **تطابق SHA256 مع webshell معروفة** (WSO, FilesMan, b374k, p0wny…) | CRITICAL |
| PHP عُدّلت بعد `SINCE_DATE` **وأيضًا** تحتوي نمطًا مشبوهًا — مع السطر المطابق | CRITICAL / HIGH |
| PHP بأنماط مشبوهة لكنها لم تُعدَّل مؤخرًا | LOW |
| JS/HTML عُدّلت بعد `SINCE_DATE` بأنماط تمويه | MEDIUM |
| **روابط C2/تسريب بيانات خارجية** (pastebin, ngrok, Discord webhooks, bit.ly…) | CRITICAL |
| توجيهات خطيرة في `.htaccess` | HIGH |
| `.htaccess` عُدّل بعد `SINCE_DATE` | MEDIUM |
| صور متعددة التنسيقات بحمولة PHP | CRITICAL |
| ملفات نسخ احتياطي/إعدادات مكشوفة | MEDIUM |
### الثبات
| الفحص | الخطورة |
|---------|-----------|
| crontab مستخدم يحتوي `curl`/`wget`/`php`/`base64` | HIGH |
| ملفات cron للنظام تشير إلى مسار الموقع | MEDIUM |
### درجة المخاطر
يحصل كل موقع على **درجة من 0–100** مع تفصيل لكل نتيجة:
```
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
```
| الدرجة | الفئة |
|-----------|-----------|
| 0–20 | نظيف على الأرجح |
| 21–40 | مخاطر منخفضة |
| 41–60 | مخاطر متوسطة |
| 61–80 | مخاطر عالية |
| 81+ | **مُخترَق** |
---
## المتطلبات
- خادم لينكس يعمل بنظام **HestiaCP**
- **bash** 4.0+
- **[WP-CLI](https://wp-cli.org/)** مثبَّت باسم `wp`
- صلاحية `root`
- `sendmail` (لإرسال البريد الإلكتروني)
- `python3` (للتقييم بالذكاء الاصطناعي)
- `curl`, `sha256sum`, `file`, `strings`, `unzip`
### تثبيت WP-CLI (إن كان مفقودًا)
```bash
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
```
---
## التثبيت بأمر واحد
### ماسح IoC سريع
```bash
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
```
### ماسح كامل مع تقارير بريد إلكتروني
```bash
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
```
---
## الاستخدام
### wp2shell-scan.sh
```bash
sudo bash wp2shell-scan.sh
```
يجد تلقائيًا جميع تثبيتات ووردبريس تحت `/home/*/web/*/public_html/`، وينفّذ جميع الفحوصات، ويطبع مخرجات ملوّنة في الطرفية، ويحفظ تقريرًا كاملًا في `/root/`.
### wp2shell-report-per-user.sh
```bash
sudo bash wp2shell-report-per-user.sh
```
عند بدء التشغيل يطرح ثلاثة أسئلة:
```
[AI EVALUATION] Χρήση AI αξιολόγησης για αμφίβολα αρχεία; [y/N]
[SAVE REPORT] Αποθήκευση πλήρους report σε αρχείο; [y/N]
[DATE THRESHOLD] Διαφορετική ημερομηνία; Αφήστε κενό για default [YYYY-MM-DD]:
```
**ابدأ دائمًا بـ `DRY_RUN=1`** (الافتراضي) — تظهر رسائل البريد على الشاشة ولا تُرسل. غيّرها إلى `DRY_RUN=0` فقط بعد التأكد من أن المخرجات صحيحة.
---
## الإعدادات
### wp2shell-scan.sh
| المتغير | الافتراضي | الوصف |
|-----------|---------|-----------|
| `WEB_ROOT` | `/home` | المجلد الجذر لـ HestiaCP |
| `SINCE_DATE` | `2026-07-15` | حد "عُدّل مؤخرًا" |
| `WP` | `wp` | مسار WP-CLI |
### wp2shell-report-per-user.sh
| المتغير | الافتراضي | الوصف |
|-----------|---------|-----------|
| `DRY_RUN` | `1` | `1` = معاينة فقط، `0` = إرسال رسائل البريد |
| `SEND_ONLY_IF_ISSUES` | `0` | `1` = إرسال بريد فقط عند العثور على شيء |
| `SINCE_DATE` | `2026-07-15` | حد "عُدّل مؤخرًا" |
| `MAIL_FROM` | `security@<hostname>` | بريد المُرسل |
| `CORE_CACHE` | `/root/wp2shell-cores` | ذاكرة تخزين مؤقت للنوى النظيفة |
| `ANTHROPIC_API_KEY` | *(فارغ)* | مفتاح Claude API للتقييم بالذكاء الاصطناعي |
---
## التقييم بالذكاء الاصطناعي (اختياري)
بالنسبة لنتائج الـ diff الغامضة التي لا تستطيع الأنماط تصنيفها، يرسل الماسح الـ diff إلى **Claude API** (`claude-sonnet-4-6`) ويعيد حكمًا: `DANGER` أو `SUSPICIOUS` أو `REVIEW` أو `OK` مع شرح من جملة واحدة. يُستخدم الذكاء الاصطناعي **فقط** في المنطقة الرمادية.
```bash
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
```
مفاتيح API: <https://console.anthropic.com> — منفصلة عن اشتراك claude.ai.
### لا تملك مفتاح API؟ استخدم محلل المتصفح
الصق مخرجات الفحص في أداة **wp2shell Report Analyzer** على Claude.ai — تنفّذ نفس التقييم بالذكاء الاصطناعي مباشرة في المتصفح.
---
## ملاحظات
- الماسح **لا يعدّل أي شيء**. آمن للتشغيل على خوادم إنتاج مباشرة.
- تحديث ووردبريس إلى الإصدار المصحّح يسدّ الثغرة لكنه **لا ينظّف** موقعًا مخترقًا بالفعل. إذا وُجدت مؤشرات، استعد من نسخة احتياطية نظيفة.
- مجلد `CORE_CACHE` (`/root/wp2shell-cores/`) يُعاد استخدامه بين الفحوصات. احذفه لإجبار تنزيل جديد.
- قاعدة `known_shells.sha256` تُحدَّث تلقائيًا مرة كل 24 ساعة.
---
## الترخيص
GPL-3.0 — انظر [LICENSE](https://github.com/bytespulse-oe/wp2shell-hestia-scanner/blob/main/LICENSE)
---
## الاعتمادات
طُوّر بواسطة **[BytesPulse](https://bytespulse.gr)** استجابةً للكشف عن wp2shell (يوليو 2026).
معلومات CVE: <https://wp2shell.com>