
CVE-2026-63030 / CVE-2026-60137 - ماسح ضوئي لثغرات RCE قبل المصادقة في ووردبريس
بواسطة @bahartanir (katherinepierce) مشتق من ZephrFish/wp2shell-scanner مع تحسينات إضافية. البحث بواسطة Adam Kues (Assetnote) و Mustafa Can İPEKÇİ (nukedx).
أداة كشف وتحقق لتعرض نواة ووردبريس لـ wp2shell
(CVE-2026-63030 / CVE-2026-60137). يتم اختيار الأوضاع عبر راية (flag)، ويكون
الهدف موضعيًا (positional). يقوم --scan ببصمة إصدار النواة وتأكيد أن مسار
REST /batch/v1 يمكن الوصول إليه دون إرسال حمولة استغلال؛ أما أوضاع
--check/--read/--shell/--rce/--root-prereq فهي إثبات التحقق (PoC)
للاستخدام المخبري المصرح به.
wp2shell.py هو سكربت واحد يعتمد فقط على المكتبة القياسية — لا تبعيات خارجية.
كل استدعاء يطبع الشعار (banner) إلى stderr قبل التشغيل (يبقى بعيدًا عن stdout،
لذا لا يتأثر مخرج JSON الخاص بـ --scan -j).
يلزم تحديد علم وضع واحد بالضبط؛ الهدف موضعي (عنوان URL لكل وضع، أو قائمة
مضيفين لـ --scan).
wp2shell.py (--scan | --check | --read | --shell | --rce | --root-prereq)
[targets ...] [-f FILE] [-j] [-t THREADS] [--prefix PREFIX]
[--delay DELAY] [--repeats REPEATS] [--preset PRESET] [--expr EXPR]
[--max-len MAX_LEN] [--user USER] [--password PASSWORD] [--cmd CMD]
[-i] [--no-cleanup] [-y] [--sleep SLEEP] [--rounds ROUNDS]
[--route {auto,rest-route,wp-json}] [--proxy PROXY] [--authorized]
[--timeout TIMEOUT]
التحليل المعمق الأصلي: https://blog.zsec.uk/wp2shell-code-trace-deep-dive/
nuclei -t wp2shell-exposure.yaml -u https://target
مضيف واحد، أو عدة مضيفين، أو ملف.
python3 wp2shell.py --scan https://target
python3 wp2shell.py --scan host1 host2 host3
python3 wp2shell.py --scan -f hosts.txt
الخيارات: -f/--file ملف المضيفين (سطر لكل مضيف)، -j/--json إخراج JSON،
-t/--threads التزامن (الافتراضي 10).
ترسل أوضاع --check/--read/--shell/--rce/--root-prereq حمولات استغلال
حية. شغّلها فقط ضد مختبر localhost المرفق، أو أنظمة أخرى تملكها ومصرح لك
صراحة باختبارها. ينفذ --shell و--rce تنفيذ أوامر عن بُعد وهما مخصصان
لأهداف المختبر/المصرح بها؛ يتطلب --rce على مضيف غير loopback الخيار
--authorized. يستخدم --root-prereq نفس البرنامج المساعد التشخيصي المحمي
برمز للتحقق من متطلبات الانتقال إلى الجذر، لكنه لا يشغّل تصعيد صلاحيات محلي.
يحتاج --shell إلى كلمة مرور إدارية مستعادة/مكسورة. أما --rce فهو سلسلة
قبل المصادقة بدون بيانات اعتماد: يزوّر مديرًا خاصًا به عبر SQLi (oEmbed →
changeset → إعادة الدخول إلى parse_request)، ثم ينشر قشرة الويب — دون الحاجة
إلى كلمة مرور.
تطلب --shell و--rce و--root-prereq تفويضًا تفاعليًا y/N قبل إرسال أي
حمولة تنفيذ كود (تتوقف عند إدخال غير تفاعلي/EOF). مرّر -y/--yes لتخطي الطلب
للأتمتة ضد المختبر أو هدف مصرح به.
docker compose -f poc/lab/docker-compose.yml up -d
python3 wp2shell.py --check http://127.0.0.1:8080
python3 wp2shell.py --read http://127.0.0.1:8080 --expr @@version
python3 wp2shell.py --shell http://127.0.0.1:8080 --user admin --password 'Summer2026!' --cmd id
python3 wp2shell.py --shell http://127.0.0.1:8080 --user admin --password 'Summer2026!' -i
python3 wp2shell.py --rce http://127.0.0.1:8080 --cmd id
python3 wp2shell.py --rce http://127.0.0.1:8080 -i
python3 wp2shell.py --root-prereq http://127.0.0.1:8080 --user admin --password 'Summer2026!'
python3 wp2shell.py --lpe http://127.0.0.1:8080
فروق التصحيح (Patch diffs) المستخدمة لتأسيس PoC محفوظة تحت poc/diffs/، مع
ملاحظات بحثية في poc/RESEARCH.md. يمكن إعادة بناء SQLi بالكامل من إصلاح
author__not_in. سلسلة --rce بدون بيانات اعتماد (oEmbed → changeset →
إعادة الدخول → إنشاء مدير) تعيد إنتاج RCE الافتراضي ضد المختبر المرفق؛ أما
--shell فهو المسار البديل عبر بيانات اعتماد إدارية مستعادة/مكسورة لرفع برنامج
مساعد مصادق عليه وتنفيذ الأوامر.
--lpe)يضمّ --lpe سلسلة RCE الكاملة قبل المصادقة (SQLi → تزوير مدير → قشرة ويب)
مع محاولة تصعيد تلقائية إلى الجذر. يجرب ما يلي بالترتيب، ويتوقف عند أول نجاح:
python3 wp2shell.py --lpe http://127.0.0.1:8080
python3 wp2shell.py --lpe http://127.0.0.1:8080 -y # skip auth prompt
python3 wp2shell.py --lpe https://target --authorized # non-loopback
يتطلب --lpe على هدف غير loopback الخيار --authorized. في المختبر المرفق
(صورة أساسية Ubuntu 22.04 مع نواة GameOverlay هشة) ينجح CVE-2023-2640/32629
دون مترجم.
| العلم | الوظيفة |
|---|
--scan | فحص تعرض غير تخريبي: بصمة الإصدار + تأكيد أن مسار REST /batch/v1 يمكن الوصول إليه. لا يتم إرسال أي حمولة استغلال. |
--check | يؤكد SQLi الأعمى الزمني باستخدام فحص تفاضلي غير ضار. |
--read | يستخرج البيانات عبر SQLi الأعمى (إعداد مسبق أو تعبير عددي SQL خام). |
--shell | سلسلة تنفيذ أوامر عن بُعد (RCE) مصادقة باستخدام كلمة مرور إدارية مكسورة/مستعادة. |
--rce | RCE قبل المصادقة بدون بيانات اعتماد: يزوّر حساب مدير خاصًا به عبر SQLi، ثم ينشر قشرة ويب ذاتية التنظيف. |
--root-prereq | فحص أولي غير ضار للانتقال من قشرة إلى صلاحيات الجذر؛ يشغّل التشخيص فقط ولا ينفذ أبدًا تصعيد صلاحيات محلي. |
--lpe | سلسلة كاملة: SQLi قبل المصادقة ← تزوير مدير ← قشرة ويب ← جذر. يجرب CVE-2023-2640/32629 (GameOverlay overlayfs)، CVE-2023-4911 (Looney Tunables glibc)، CVE-2026-31431 (AF_ALG Copy Fail)، CVE-2026-23111 (nf_tables UAF probe)، ثم خطة احتياطية عبر SUID/sudo/cap. |
| العلم | ينطبق على | الوظيفة |
|---|
-f, --file | --scan | قراءة المضيفين من ملف (سطر لكل مضيف؛ تُتجاهل تعليقات #). |
-j, --json | --scan | إخراج النتائج بصيغة JSON إلى stdout. |
-t, --threads | --scan | التزامن في الفحص (الافتراضي 10). |
--prefix | --check/--read | بادئة جداول قاعدة البيانات (الافتراضي wp_). |
--delay | --check/--read | ثواني SLEEP المحقونة لأوراكل التوقيت (الافتراضي 0.15). |
--repeats | --check/--read | الوسيط عبر N من الفحوصات لكل بت؛ زدها على الروابط المزعجة (الافتراضي 1). |
--preset | --read | هدف مدمج: version، database، db_user، users، siteurl (الافتراضي users). |
--expr | --read | تعبير عددي خام SQL لاستخراجه (يتجاوز --preset). |
--max-len | --read | أقصى طول لسلسلة مستخرجة (الافتراضي 128). |
--user | --shell/--root-prereq | اسم مستخدم المسؤول للدخول به (الافتراضي admin). |
--password | --shell/--root-prereq | كلمة مرور المسؤول كنص صريح (اكسر الهاش من --read؛ مطلوبة لهذه الأوضاع). |
--cmd | --shell/--rce | الأمر الذي سيُنفذ على الهدف (الافتراضي id). |
-i, --interactive | --shell/--rce | حلقة أوامر ويب تفاعلية بدلاً من أمر واحد. |
--no-cleanup | --shell/--rce | إبقاء البرنامج المساعد/قشرة الويب الموضوعة في مكانها (للمختبر فقط). |
-y, --yes | --shell/--rce/--root-prereq | تخطي طلب التفويض التفاعلي (للأتمتة). |
--sleep | --rce | ثواني SLEEP المحقونة لكشف SQLi قبل المصادقة (الافتراضي 4). |
--rounds | --rce | الوسيط عبر N من الفحوصات لكشف --rce (الافتراضي 3). |
--route | --rce | شكل مسار الدفعة: auto أو rest-route أو wp-json (الافتراضي auto). |
--proxy | --rce | توجيه الطلبات عبر وكيل HTTP، مثل Burp على http://127.0.0.1:8080. |
--authorized | --rce | تأكيد التفويض لهدف --rce غير قائم على loopback (مطلوب للمضيفين البعيدين). |
--timeout | الكل | مهلة زمنية لكل طلب بالثواني (الافتراضي 15). |
| CVE | المتأثر | التقنية | المترجم |
|---|
| CVE-2023-2640 / CVE-2023-32629 | Ubuntu 22.04 / 23.04، نواة < 6.3.3 مع برنامج تشغيل GameOverlay | تركيب overlayfs غير مميز في فضاء مستخدم يحافظ على chmod +s على الدليل العلوي | لا يوجد (قشرة نقية) |
| CVE-2023-4911 | glibc 2.34–2.38 (Ubuntu 22.04, Debian 12, Fedora 37–38) | فيضان مكدس GLIBC_TUNABLES في _dl_parse_tunables() ← حقن LD_PRELOAD عند تنفيذ SUID | يتطلب gcc |
| CVE-2026-31431 | نواة لينكس مع algif_aead + authencesn(hmac(sha256),cbc(aes)) | تحسين AF_ALG AEAD في المكان + كتابة splice() لـ 4 بايتات في ذاكرة التخزين المؤقت لصفحات الثنائي SUID؛ فحص أولي — روابط إلى AliHzSec/CVE-2026-31431 | يتطلب gcc |
| CVE-2026-23111 | Ubuntu 22.04 / 24.04, Debian Bookworm / Trixie | فحص مقلوب nf_tables يسبب UAF في nft_map_catchall_activate() ← نقص تدفق في chain->use ← سلسلة محررة؛ فحص أولي — روابط إلى Baba01hacker666/CVE-2026-23111 | يتطلب gcc |
| احتياطي | أي | إساءة استخدام SUID GTFOBins + sudo NOPASSWD | لا يوجد |