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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
wp2shell-poc — تحليل وتنفيذ متكامل لثغرة تنفيذ الأكواد عن بُعد (RCE) المُصحَّحة في ووردبريس - CVE-2026-60137 وCVE-2026-63030 | Kitploit
أدوات/GitHubGitHub/colere-sys/wp2shell-poc
أطر الاستغلالتحليل الثغرات الأمنيةاستغلال تطبيقات الويبCTFاختبار الاختراقالتعلم والتعليمالفريق الأحمرتطوير الحمولات
GitHubcolere-sys/wp2shell-poc

wp2shell-poc

تحليل وتنفيذ متكامل لثغرة تنفيذ الأكواد عن بُعد (RCE) المُصحَّحة في ووردبريس - CVE-2026-60137 وCVE-2026-63030

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

الأكثر شعبية

عرض الكل →

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

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

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

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

plot

كيف يعمل هذا على الإطلاق

plot

كيف يختلف هذا الـ PoC عن استغلالات wp2shell العامة

جميع الـ PoCs تستغل نفس الثغرتين - التباس مسار REST batch (CVE-2026-63030) وحقن SQL في author__not_in (CVE-2026-60137) - بنفس الشكل المتداخل المزدوج للدفعة. ما يختلف بينها هو مسار RCE المختار، والشروط المسبقة للبيئة، والإعدادات الافتراضية الآمنة. توضح هذه الوثيقة، بشكل ملموس، أين يقع التنفيذ في هذا المستودع ضمن ذلك المشهد.

النسخة المختصرة

  1. يعمل خلف ذاكرة تخزين مؤقت دائمة للكائنات. تستخدم الـ PoCs العامة القائمة على UNION صيغة الحقن ذات القاعدة المعبأة (populated-base): تنفيذ السلسلة الكاملة الذي تتشاركه هذه السلالة يُظهر نتائج سلبية كاذبة هناك، ويسرد الموحِّد أحادي الملف "لا يوجد تخزين مؤقت دائم للكائنات" كشرط مسبق صريح. صيغة القاعدة المفرَّغة (killed-base) في هذا المستودع تُبقي قناة UNION - وبالتالي جسر RCE الكامل قبل المصادقة - حيّة على تلك المضيفات تحديدًا (الإعداد الشائع لـ WordPress المُدار). انظر §1.
  2. آمن للتشغيل ضد بيئات الإنتاج افتراضيًا. لا يرسل check أي حمولة SQL ما لم يُطلب ذلك؛ يمكن لجميع الحركة أن تحمل وسم إسناد؛ كل ما يكتبه أمر على الهدف يُزال تلقائيًا بعد ذلك. انظر §3.
shell

جدول المقارنة

القدرةهذا المستودعIcex0/wp2shell-pocsergiointel/wp2shell-poc0xsha/wp2shellنسخة OUTFILE [4]
قراءة SQLi عمياء/توقيتية قبل المصادقةنعمنعمنعم (توقيتية)نعمنعم
قراءة UNION داخل النطاق (طلب واحد/قيمة)نعمنعم- [1]- [1]-
قراءة قائمة على الأخطاء (EXTRACTVALUE)نعمنعم---
قناة UNION تنجو من ذاكرة التخزين المؤقت الدائمة للكائناتنعم (killed-base)لا - فحص بنتائج سلبية كاذبة [2]غير موثّقلا - شرط مسبق موثّق [3]غير قابل للتطبيق [5]
RCE قبل المصادقة دون كسر التجزئةنعم (جسر SQLi إلى مدير)نعم (نفس الجسر)نعم (أصل الجسر)نعم (نفس الجسر)نعم، عبر INTO OUTFILE [5]
شروط مسبقة إضافية لـ RCEلا شيء يتجاوز التثبيت الافتراضيلا شيء (على مضيفات بلا ذاكرة تخزين كائنات)لا شيء (نفس الشيء)لا شيء (نفس الشيء)صلاحية FILE في MySQL + مسار قابل للكتابة من الويب مشترك مع mysqld
فحص غير تدميري / التحقق من التصحيحنعم (ثلاثية وسم؛ لا حمولة افتراضيًا)نعملانعم (block_cannot_read)نعم (دفعة وسم)
وسم الإسناد/User-Agentنعم، على جميع الأوامرلالاعلامة نقللا
التنظيف التلقائي (webshell + حساب مدير مُنشأ)نعمنعمغير موثّقwebshell محمي برمز فقطالـ dropper يُزال [5]
دليل كشف الفريق الأزرقنعم، من تشغيل إنتاجيلالامصفوفة مختبر بدلاً من ذلكملاحظات تخفيف
التبعياتالمكتبة القياسية فقطالمكتبة القياسية فقطملف واحدالمكتبة القياسية فقط، ملف واحدحزمة Python ≥3.10

[1] توقيتية/عمياء فقط كقناة قراءة؛ بدائية المنشور المزوّر عبر UNION موجودة داخل الجسر ولكنها غير مكشوفة كأوراكل استخراج. [2] فحص التوفر الساذج (0) UNION SELECT …) يُسقَط بصمت أثناء ترطيب ذاكرة الكائنات، ويعيد available() قيمة false، ويتوقف جسر ما قبل المصادقة بالكامل - انظر §1. [3] يسرد README الخاص بالمشروع نفسه "لا يوجد تخزين مؤقت دائم للكائنات (Redis/Memcached)" ضمن الشروط المسبقة. [4] نسخة عامة معكوسة على Sploitus (الرابط أدناه): قراءة عمياء بالإضافة إلى dropper عبر INTO OUTFILE كخطوة RCE، باستخدام ناقل categories بقيمة per_page=-1. [5] لا يعتمد مسار RCE عبر OUTFILE على عرض المنشورات المزوّرة، لذا لا تحجبه ذاكرات الكائنات - بل تحجبه صلاحية FILE في MySQL ودليل قابل للكتابة مشترك. نادرًا ما يمنح الاستضافة المُدارة صلاحية FILE لمستخدم قاعدة بيانات WordPress، وعادةً ما يكون secure_file_priv مضبوطًا.

1. مشكلة ذاكرة التخزين المؤقت للكائنات (المُفرِّق الحقيقي)

تعتمد بدائية المنشور المزوّر عبر UNION على كيفية إرجاع WP_Query للصفوف:

  • وضع الصف الكامل - يُرجع SQL صفوف wp_posts كاملة؛ يصبح الصف المحقون عبر UNION كائن WP_Post مباشرةً. يتم عرض التزوير.
  • وضع التقسيم (المعرّفات فقط) - يُرجع SQL المعرّفات فقط، ويتم ترطيب كل معرّف لاحقًا عبر ذاكرة الكائنات (الدائمة) / قاعدة البيانات. معرّف الصف المزوّر غير موجود، لذا يُسقطه الترطيب بصمت. لا خطأ، ولا منشور مزوّر.

على المضيفات ذات ذاكرة التخزين المؤقت الدائمة للكائنات، تدفع مجموعة النتائج الأساسية المعبأة WP_Query إلى وضع التقسيم. الفحص القياسي الذي تستخدمه الـ PoCs العامة -

root@kitploit:~
0) UNION SELECT <forged row> -- -
  • يُبقي المجموعة الأساسية معبأة (يطابق post_author NOT IN (0) كل صف)، لذا خلف ذاكرة الكائنات يتبخر الصف المزوّر: يُظهر فحص التوفر نتيجة سلبية كاذبة، ويعيد available() قيمة false، ويُبلَّغ عن جسر ما قبل المصادقة بالكامل كونه "ميتًا" على مضيف قابل للاستغلال بالكامل في الواقع. يوثّق الموحِّد العام نفس الحدود بسرد "لا يوجد تخزين مؤقت دائم للكائنات" كشرط مسبق صارم.

يفرّغ هذا المستودع المجموعة الأساسية بدلاً من ذلك:

root@kitploit:~
1) AND 1=0 UNION ALL SELECT <forged row> -- -

مع صفر صفوف أساسية، يكون الصف المزوّر هو الصف الوحيد؛ يبقى الاستعلام في وضع الصف الكامل؛ لا يتم أي بحث ترطيب إطلاقًا. كلمة مفتاحية محقونة واحدة (AND 1=0) هي الفرق الكامل بين "قناة UNION ميتة" و"RCE كامل قبل المصادقة" على المضيفات ذات ذاكرة الكائنات - وهي غالبية بيئات إنتاج WordPress المُدار. التشخيص، ومصفوفة الفحص (per_page × صيغة الحقن).

ملاحظة حول النطاق: قناة القراءة العمياء/التوقيتية ليست حساسة لذاكرة الكائنات (عدّ الصفوف في SQL لا يتضمن ترطيب منشورات مزوّرة)، لذا تعمل القراءة العمياء لكل PoC في كل مكان. ما تقتله ذاكرة الكائنات في الـ PoCs الأخرى هو تحديدًا الجزء المعتمد على UNION: الاستخراج داخل النطاق وجسر SQLi إلى مدير.

درس ثانٍ ذو صلة موثّق في دراسة الحالة: عندما تعمل القناتان معًا، تعامل مع قراءة UNION داخل النطاق باعتبارها المرجع الموثوق - أنتج أوراكل التوقيت في الإنتاج انقلابات بتات تحت التذبذب (jitter) على قيمة حسمتها القراءة داخل النطاق بشكل لا لبس فيه.

2. اختيار مسار RCE

توجد ثلاثة مسارات RCE قبل المصادقة عبر الـ PoCs العامة:

المسارمستخدَم بواسطةشروط مسبقة إضافية
جسر SQLi إلى مدير (تزوير صفوف oEmbed/changeset/nav → POST /wp/v2/users → تسجيل الدخول → رفع إضافة)هذا المستودع، sergiointel (الأصل)، Icex0، 0xshaلا شيء يتجاوز التثبيت الافتراضي
dropper عبر INTO OUTFILE (كتابة ملف PHP عبر SQLi وجلبه للحصول على شل)نسخة OUTFILE [4]صلاحية FILE في MySQL، وsecure_file_priv تسمح بها، ودليل قابل للكتابة من mysqld و تقدّمه خادم الويب
استعادة التجزئة → كسرها → تسجيل الدخول (تفريغ user_pass، كسرها دون اتصال، ثم رفع إضافة)الكل (كخطة احتياطية)يجب أن تُكسر تجزئة bcrypt فعليًا ($wp$2y$، hashcat -m 35500) - بطيئة، غالبًا لا تُكسر أبدًا

ينفّذ هذا المستودع الجسر: لا يحتاج صلاحيات قاعدة بيانات تتجاوز ما يملكه WordPress بالفعل، ويعمل عندما لا تتشارك طبقتا قاعدة البيانات والويب في أي شيء، ولا يترك ملفًا خلفه ليعتمد عليه مسار صلاحية FILE. المقايضة هي التعقيد - فالجسر رسم بياني مسموم من سبعة صفوف منشورات - وهو بالضبط المكان الذي كانت فيه النتيجة السلبية الكاذبة لذاكرة الكائنات في §1 تُخفي المسار.

3. الإعدادات الافتراضية الآمنة للاستخدام المصرّح به

مصمم للتشغيل ضد أنظمة الإنتاج بتصريح، وليس للمختبرات فقط:

  • check غير تدميري افتراضيًا - بصمة سلبية بالإضافة إلى دفعة وسم حميدة؛ لا تُرسل أي حمولة SQL ما لم يُعطَ --confirm-sqli. بعد التصحيح، تعمل ثلاثية الوسم المختفية كتحقق من الإصلاح أيضًا.
  • وسم الإسناد - --user-agent على كل أمر بحيث تكون كل حركة الاستغلال قابلة للتحديد في السجلات (قاعدة أساسية في الاختبارات الاحترافية لا تتبناها الأدوات العامة افتراضيًا).
  • التنظيف التلقائي - الـ webshell مقفلة برمز ضمن مسار عشوائي وتزيل نفسها؛ يُحذف حساب المدير المُنشأ عبر الجسر بعد ذلك مع إعادة تعيين محتواه إلى حساب المدير المستعار. يُبلَّغ عن فشل التنظيف بشكل صريح، ولا يُتجاهل.
  • إحصاء الطلبات - يطبع كل أمر عدد الطلبات التي أرسلها.

4. ما لا يدّعيه هذا المستودع

  • لا ثغرة جديدة. كلتا الثغرتين هما ثغرتا CVE المكشوفتان علنًا؛ الشكل المتداخل المزدوج للدفعة، ومصرف author_exclude → author__not_in، وبدائية UNION لمنشور WP_Post المزوّر، ومفهوم جسر المخصّص (customizer-bridge) كلها تقنيات عامة (يُقرّ بالنسب أدناه).
  • لا بدائية استغلال جديدة. الفرق عن المشهد العام هو: إصلاح القاعدة المفرَّغة لذاكرة الكائنات مع أدلة إنتاجية، والإعدادات الآمنة للإنتاج، وتوثيق الكشف - متانة وسلامة تشغيلية، وليست حداثة في التقنية.
  • سلاسل IoC اعتباطية. بادئات تسجيل الدخول، وأسماء الإضافات (slugs)، وعلامات الشل، وقيم User-Agent تختلف عبر كل نسخة وكل تشغيل؛

المراجع

  • Icex0/wp2shell-poc - تنفيذ السلسلة الكاملة الذي تتشاركه سلالة هذا المستودع - https://github.com/Icex0/wp2shell-poc
  • sergiointel/wp2shell-poc - أول PoC عام؛ أصل تقنية إنشاء المدير دون كسر التجزئة - https://github.com/sergiointel/wp2shell-poc
  • 0xsha/wp2shell - موحِّد أحادي الملف لستة PoCs عامة، مع مختبرات Docker ومصفوفة إصدار×قاعدة بيانات (يوثّق الشرط المسبق لذاكرة الكائنات) - https://github.com/0xsha/wp2shell
  • نسخة OUTFILE (قراءة عمياء + dropper عبر INTO OUTFILE)، معكوسة على Sploitus - https://sploitus.com/exploit?id=7CD079AD-E27B-5C54-A696-60635BFDB241
  • قائمة منسقة من الـ PoCs العامة وأدوات الفحص (للمدافعين) - https://www.cyberkendra.com/2026/07/wp2shell-guide.html
  • GHSA-ff9f-jf42-662q / GHSA-fpp7-x2x2-2mjf؛ إعلان إصدار WordPress 7.0.2 - انظر مراجع README.md.
تنزيل الأداة