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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SessionReaper-CVE-2025-54236 — إثبات المفهوم Magento Session Reaper - CVE-2025-54236 | Kitploit
أدوات/GitHubGitHub/alexb616/sessionreaper-cve-2025-54236
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubalexb616/sessionreaper-cve-2025-54236

الأكثر شعبية

عرض الكل →

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

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

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

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

SessionReaper-CVE-2025-54236

إثبات المفهوم Magento Session Reaper - CVE-2025-54236

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

SessionReaper — CVE-2025-54236

إثبات مفهوم موحد لـ CVE-2025-54236 ("SessionReaper")، وهو ثغرة تنفيذ أوامر عن بعد (RCE) حرجة وغير مصادق عليها في Magento 2 / Adobe Commerce عبر إلغاء التسلسل المتداخل في واجهة REST API.

  • CVSS: 9.1 (حرجة)
  • السبب الجذري: التحقق غير السليم من المدخلات (CWE-20) في ServiceInputProcessor؛ البدائية الاستغلالية هي إلغاء تسلسل غير آمن (CWE-502)
  • الباحث الأصلي: Daniel "Blaklis" Le Gall (إفصاح مسؤول عبر HackerOne)
  • صياغة الاسم من قبل: Sansec
  • تم الإصلاح في: Adobe APSB25-88 (تصحيح طارئ، 2025-09-09)

لأغراض اختبار الأمان المصرح به فقط. استخدم حصريًا ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.


ما يفعله

الأداة تسلسل ثلاث مراحل مشتركة لكل متجه، بالإضافة إلى مشغل:

  1. توليد الأداة (Gadget) — ينشئ phpggc -se -a Guzzle/FW1 <remote_path> <payload.php> كائنًا متسلسلاً يكتب payload.php إلى <remote_path> عند إلغاء تسلسله.
  2. رفع جلسة مزيفة — يقوم POST /customer/address_file/upload بتخزين الكتلة المتسلسلة باسم sess_<SESSID>. يقوم Magento بتوزيع ملفات العناوين المرفوعة حسب الأحرف الأولى من اسم الملف، لذلك تصل إلى media/customer_address/s/e/sess_<SESSID> (وبالتالي s/e/ في --save-path).
  3. إعادة توجيه save_path — يقوم حمولة REST متداخلة ببناء Session\Config، وعبر setSavePath() → setOption() → ini_set('session.save_path', ...) (تأثير جانبي عالمي للعملية)، توجه معالج جلسة PHP نحو الكتلة المرفوعة.
  4. المشغل — طلب يحمل Cookie: PHPSESSID=<SESSID> يُجبر session_start() على قراءة وإلغاء تسلسل (unserialize) الملف المسموم، مما يشغل الأداة ويكتب الحمولة.

المتجهات

جميع المتجهات الثلاثة تصل إلى نفس المصب (sink) (context → urlBuilder → session → sessionConfig → savePath). تختلف فقط في نقطة النهاية (endpoint)، وفعل HTTP، ووحدة Magento المعنية — مفيد عندما يحظر جدار حماية تطبيقات الويب (WAF) أو وحدة معطلة نقطة نهاية دون أخرى.

لا حاجة لسلة تسوق حقيقية لأي متجه. يقوم ServiceInputProcessor بإلغاء تسلسل معاملات الطريقة أثناء حل المدخلات (input resolution) — قبل أن يستدعي الخدمة أي بحث عن سلة التسوق — لذا فإن cartId وهمي مثل abc يصل إلى المصب في الثلاثة. الخطأ اللاحق "لم يتم العثور على سلة التسوق" (404/500) متوقع ويؤكد أن التأثير الجانبي لإلغاء التسلسل قد حدث بالفعل.

علامة --sku متاحة إذا كنت تريد من الأداة إنشاء سلة تسوق ضيف حقيقية وإضافة منتج قبل التشغيل (تم التحقق منها عبر GraphQL). هذا اختياري وليس ضروريًا للاستغلال — إنها موجودة فقط للبيئات التي تفضل فيها تدفق دفع واقعي تمامًا. احذفها وتستخدم الأداة سلة التسوق الوهمية abc.


الشروط المسبقة

  • تخزين الجلسة القائم على الملفات (var/session/). الجلسات المدعومة بـ Redis وقاعدة البيانات لا تتأثر بهذه السلسلة المحددة من RCE. هذا غير قابل للتعداد عن بعد، لذا يجب محاولة استغلالها بشكل أعمى.
  • /customer/address_file/upload يمكن الوصول إليه بدون مصادقة.
  • الهدف غير مصحح (قبل APSB25-88 / قبل التحديث السريع 2.4.x).

المتطلبات

  • Python 3.8+ مع requests
  • phpggc — يتم اكتشافه تلقائيًا في PATH، أو في مواقع التثبيت الشائعة، أو يسحب كصورة Docker ambionics/phpggc كخيار احتياطي
  • payload.php في نفس دليل السكريبت (يجب أن يبدأ بـ <?php)
root@kitploit:~
pip install requests
git clone https://github.com/ambionics/phpggc /opt/phpggc   # or: docker pull ambionics/phpggc

الاستخدام

root@kitploit:~
# order (original vector) — no cart, no credentials
python3 session_reaper.py --host https://target.com --method order

# checkmo — payments endpoint, Spanish store scope for the REST API
python3 session_reaper.py --host https://target.com --method checkmo --api-store es

# address — shipping endpoint
python3 session_reaper.py --host https://target.com --method address --api-store all

# optional: exercise a real cart flow with a known SKU (not required)
python3 session_reaper.py --host https://target.com --method address --sku PROD-001

الخيارات


نطاقات المتجر

تستخدم الأداة رمزي متجر مستقلين:

  • --api-store — النطاق في عنوان URL لطلب إلغاء التسلسل (/rest/<api-store>/V1/guest-carts/...)، حيث يعمل ServiceInputProcessor.
  • --store — النطاق لطلب المشغل (GET /<store>/) وإذا تم استخدام --sku، لطلبات سلة التسوق.

رموز عرض المتجر محددة من قبل المسؤول؛ لا تفترض es/fr. قم بتعداد عروض المتجر النشطة أولاً — الطلب ضد نطاق غير موجود سيفشل ببساطة.


هدف الحمولة — لماذا pub/errors/404.php

تكوين Nginx الافتراضي لـ Magento يمرر فقط سبعة ملفات PHP إلى fastcgi_backend:

root@kitploit:~
index.php, get.php, static.php,
errors/report.php, errors/404.php, errors/503.php, health_check.php

أي ملف .php آخر (بما في ذلك أي شيء يتم وضعه في pub/media/) ممنوع ولن يتم تنفيذه أبدًا. لذا يجب على الحمولة استبدال أحد هذه الملفات السبعة المُدرجة في القائمة البيضاء بدلاً من وضع ملف جديد. pub/errors/404.php هو الافتراضي لأن Magento يقدمه داخليًا لأي صفحة مفقودة، لذلك يتم تشغيله غالبًا على متجر حي.

OPSEC: استبدال 404.php بشكل مباشر هو أمر صاخب (يعمل على كل خطأ 404). في اختبار حقيقي، قم بحقن باب خلفي في ملف مدرج في القائمة البيضاء بشكل خفي بدلاً من سحقه.


ملاحظات

  • تعمل الأداة كضيف بشكل افتراضي. --username/--password مطلوبان فقط إذا كنت تريد رمز Bearer لإعداد معين.
  • توقع خطأ 404/500 على طلب إلغاء التسلسل — هذا طبيعي ولا يعني فشل.
  • التنظيف: يتم إزالة الملف المؤقت /tmp/sess_<SESSID> عند الخروج.

المراجع

  • استشارة Adobe APSB25-88
  • Sansec — إفصاح SessionReaper
  • Searchlight Cyber (Assetnote) — إثبات مفهوم RCE الأصلي
  • Pentest-Tools.com — مقالة تطوير الاستغلال
  • NVD — CVE-2025-54236

إخلاء المسؤولية

مقدم لأغراض البحث والاختبار الأمني المصرح به فقط. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام. لا تقم بتشغيله ضد أنظمة بدون إذن صريح.

تنزيل الأداة
MethodEndpointVerbEntry point into the chain
order/rest/<store>/V1/guest-carts/abc/orderPUTpaymentMethod → paymentData → Payment\Helper\Data
checkmo/rest/<store>/V1/guest-carts/abc/set-payment-informationPOSTpaymentMethod → paymentData → Payment\Helper\Data
address/rest/<store>/V1/guest-carts/abc/estimate-shipping-methodsPOSTaddress → addressConfig → addressHelper → Customer\Helper\Address
العلامةالافتراضيالوصف
--host(مطلوب)عنوان URL الأساسي للهدف
--method(مطلوب)address | checkmo | order
--storedefaultرمز المتجر لطلب المشغل (وسلة التسوق، إذا تم استخدام --sku)
--api-storedefaultرمز المتجر في عنوان URL لنقطة نهاية إلغاء التسلسل (all | es | default | custom)
--sku(لا شيء)اختياري. إذا تم تعيينه، يقوم بإنشاء سلة تسوق ضيف حقيقية باستخدام SKU هذا. غير مطلوب.
--payload-inpayload.phpحمولة PHP لكتابتها على الهدف
--payload-out/var/www/html/pub/errors/404.phpمسار الكتابة البعيد (يجب أن يكون موقعًا قابلًا للتنفيذ عبر الويب — انظر الملاحظة أدناه)
--save-pathmedia/customer_address/s/e/savePath المحقون في سلسلة الأداة
--phpggc(تلقائي)المسار الصريح إلى ثنائي phpggc
--proxyhttp://127.0.0.1:8081وكيل HTTP (مثل Burp)
--no-proxyoffتعطيل الوكيل
--username / --password(لا شيء)بيانات اعتماد العميل الاختيارية للحصول على رمز Bearer